After working for a couple of startups and MNCs, in my final year of engineering, I got an opportunity to work with one of the most amazing startups in India, BharatPe. The best thing which attracted me to join BharatPe is the company's goals and its aim to build products to bring the digital revolution to India and make the life of merchants easier.
In this article, I will be sharing with you all my experience of working here at BharatPe for the last ten months as an SDE Intern, where I primarily work building the front end of our products. It is an amazing journey so far filled with mistakes, lots of learning, and surely a lot of fun. From learning how to write clean code, documenting projects and meetings, direct interaction with product folks, and building consumer-facing products.
I work as a Frontend Engineer at BharatPe and each day has been kind of fun and challenging. Working on exciting BharatPe products, participating in various kinds of discussions, and cherishing the people and culture that each pod and whole engineering team has, each day is unique in its sense.
With this article, I will try to cover different aspects that have been a part of my journey here at BharatPe so far.
- Startup Inside the Startup
- The coding process
- Code review
- Knowledge Sharing
- Tech Debts and Initiatives
- The Fun Part
Startup Inside the Startup
In BharatPe, each product and its respective team work independently and is called POD. Each POD acts as a small bunch of people building a company that includes Frontend, Backend, Products, Business, QA, and a Manager.
Now, every project involves a collective effort across teams inside a pod or sometimes outside too. The product team comes with documentation around the problem that we are trying to solve and a potential solution to it - The product requirement.
After thorough discussions, once the product requirement is all clear, with the help of the product document and detailed design document, the developers are expected to come up with time estimations. The frontend and the backend developers create and decide on the different APIs to be involved in the development process. This involves the changes in existing APIs and details of new APIs to be added, and a complete flowchart map towards the fulfillment of the product requirements. Hence, Each POD itself behaves as a small startup and all the folks working on it are the owners of that product.
The Coding Process
Now when the requirements are clear, w.r.t the requirements the respective person starts working on coding it and tries to complete it in the estimated time. Once the solution is completely developed, it is tested by the developer first, then it will be deployed to the stage environment and then the QA team starts doing operations xd and tries to get bugs in the built solution, this sometimes becomes fun and challenging when the developer gives friendly challenges them to get any bug and they give their best to find so :p.
Once it's passed from QA, the product team will finally check all functionality and requirements which was discussed initially and once all these phases pass, then the PR goes for code review to get merged into the branch.
Once you start with the coding part, we have a set of coding conventions in place. It is encouraged to make smaller commits, following those conventions, and 2 peer developers review every single PR. While reviewing a PR, a developer sees it from readability, efficiency, reusability, and adherence to convention points of view. The reviewers either approve the PR if the PR looks good to them or they leave comments specifying things that can be improved upon in the commit. Once all the comments are resolved and you get approval from both the reviewers on the PR, then only the PR gets merged to the branch.
Every developer works on a different project and hence comes across different kinds of interesting problems or topics. All such topics get discussed across the team and many get documented for further action. This brings a lot of learning that otherwise you wouldn’t have encountered. In BharatPe, each POD tried to come up with a session on what did they do in this month and what problems they faced, and how they encountered that. I am always very excited about these sessions, because they give me exposure to other products and other domains too, like DevOps, backend, design, etc.
Tech Debts and Initiatives
Along with all the efficient code you write, the repositories are also home to some tech debt or things to be improved upon as the tech keeps changing and evolving at such a fast pace.
It’s important to pause and have a look at those and take initiatives in that direction — how to remove the tech debts, how can we improve the processes, what can make the development cycle faster, and all other things that fall in this territory.
Taking initiatives in such directions, as identifying debt, breaking it down into achievable, in improving workflows, is encouraged across the team and done enthusiastically by many. This also works in helping you grow multifold as an engineer.
Recently, an initiative was taken to optimize the repositories and make the rendering effective and fast of our products, we named it WAW, and every month people take out time from their respective new developments and do WAW analysis. In this initiative, I also have written an amazing article on Service Workers, do check it out here.
The Fun Part
In BharatPe, we have 1:1 interaction sessions with other people, the best thing here is everyone is approachable. During my intern time, I got to interact with my CTO, a couple of times. We have many amazing long conversations where he shares his experience and we talk about future goals and fun. The manager interacts with me on weekly basis apart from regular meet-ups to know how my life going, college, and everything. I and my teammates discuss many things other than work. And of course, we have grand parties (unfortunately I wasn't able to attend due to my college stuff, but I have seen how grand things are planned and executed). It gives us a lot of experience and bonds for our whole life.
The freshers are also assigned a buddy with whom they can connect and discuss anything they want. I would like to thank my buddy Papun for helping me every time from tech to personal. He is an amazing person and the best mentor too.
There are a lot of misconceptions going on regarding the company's culture, ethics, etc but I can 100% say that the engineering team of BharatPe is literally very far away and we had 0 impacts on what going on inside the company or outside media. Everyone is working, building products, and delivering them to market effectively. And the result is in front of you :), we recently achieved 112% growth in this quarter.
Overall, BharatPe is a fun place to be. Not only you will grow technically here, but also as a person and end up building good bonds. I am sure there is a lot that I must have missed mentioning and a lot more that I am yet to experience.
Though this might feel like a marketing article, surprisingly it’s not! This is honestly how my experience at BharatPe has been so far and this is what makes me look forward to growing here.
Special thanks to Sudhanshu Joshi for guiding me all along to get this opportunity. In case of any doubts or for an opportunity in BharatPe, you can reach out to me at LinkedIn.