A Year at Frappe - Mohammad Hasnain
Sharing my experiences after completing a year at Frappe as a Software Engineer.
On a rainy day in July 2020. I received a message from Sagar Manjare - “Check this company man”. I opened the link, saw the post and went ahead to see the website. Something similar to this caught my eye.
“These guys write their own frameworks and libraries!” I applied quickly. Got a test to solve followed by some interviews and an offer. All this happened within a week.
On my first day, I met a few developers who introduced me to the onboarding process, which roughly consisted of an application to be built on Frappe Framework. The onboarding process was too good. I had access to awesome people like Shivam, Saqib, Rushabh, Nabin, and Abhishek. Everyone in the company was incredibly approachable and I didn’t even realize that there was supposed to be a mentor assigned to me. In fact, all the names I mentioned above became my mentors.
The First Assignment
When I was close to completing my onboarding application I was invited to join the Monthly Planning call. Something I found fascinating was that there was a pool of tasks but the developers were communicating with each other on deciding the tasks. I was suggested to pick up UAE VAT as my first project. Since developers are expected to be completing tasks alone I started with research. Prepared a text document for the requirements and started with my work, I had constant support from Nabin, Saqib, and Deepesh. But there was no hand-holding. This project helped me get a better grip on Frappe Framework, ERPNext, and Regional. Although it was all python and js since I had never worked on a product this big it was a great learning opportunity for me.
The First Big Project
Close to the end of the first project, another monthly planning call came and I took up Bank Reconciliation Redesign. This project lasted for 2 months. This demanded good JS skills and I knew the basics. Youtube (Akshay Saini to be precise) and the Chrome Dev Tools came to the rescue. Started with the frontend and then designed the backend. Made some mistakes but learned a lot. I wrote a blog to explain the entire process.
We have a support offering and the developers look to resolve L2 tickets. On a weekly, the entire team decided that we would do rotational L2 support. In the current team, we have a week of support every 5 weeks. The task is to solve the queries of customers which can’t be handled by Consultants. Support allows you to explore the entire software and makes you good at reading other people’s code(a really important skill). Took the opportunity to redesign some not-so-good features.
Developer Forums and the other extra-curricular activities
Freedom is one of the core principles at Frappe. This allows you to shell out some time to do some activities that you feel are important (as Rushabh says - “Scratch your own itch”). During my college days, I used to constantly have technical discussions with my classmates, colleagues I met at internships, and seniors. Since I was new at the company and lockdown hit I was not able to find people to talk technical topics out of work. This was the inspiration for me to propose a weekly call for developers where they can discuss tech, share achievements, teach what they have learned recently, or just rant on something don’t like. We have a decent number of joiners each month and the platform is even used to discuss and vote on decisions that affect developers. I also got a chance to mentor some new joiners. Helping new joiners complete the onboarding tasks that I once did helps me refresh my basics.
Transition to the Framework team
In one of the reviews I suggested that I wanted to move to the Framework team according to my interests. Moreover since some people from the Framework team left they also needed new members. One fine morning close to the end of 2020 I got a message to join a call in which I was asked if I want to join the team. I did not think for a minute - accepted and thanked. After a few days I was officially a part of the Framework team.
Redesign and Support
I joined during the period when the Framework team were giving finishing touches to the redesign project so I was handling support for them. There were less Support tickets for Framework support but each one of them required considerably more time. During this time familarized myself with the code base and took opportunities for minor redesigns like the Auto Email Reports.
Moving CI from Travis to GitHub and Semantic Release for Bench
We had out CI on travis - 5-6 projects. Contributors had to wait for around an hour to get their Tests running and another 45 mins to complete the tests. GitHub Actions looked like a good alternative. It is free for Open Source and gives you 20 concurrent builds. We had a planning call and decided to move CI of Frappe and ERPNext to GHA in the first pass. Problems around waiting were solved. Another mini project that I took up was adding Semantic Release to Bench (Multi Tenancy for Frappe Apps). On merging the develop branch to the release branch a new release would be created on GitHub with semantic release notes, the package would be simultaneously released on PIP.
Wiki - Revamping the documentation website
Contributions to the ERPNext documentation was not so easy for non technical folks. Required local Frappe setup and git knowledge to raise a PR. We decided to move our documentation to a custom CMS similar to wiki. We added multilevel sidebar and approval mechanisms. We solved a generic problem and people started using this project alongside erpnext to store their knowledge bases, processes, etc. I wrote a separate blog explaining the same.
I think I was able to work on a great mix of projects. Currently I am working on designing the naming of new documents and looking ahead to improve Frappe Framework.
The blog was published around a month after I completed a year at Frappe.