This is my first blog that I have ever written in my life. I hope this still serves as a good experience for you. Before I start with anything, I would like to give a small background about myself. I am a B.Tech graduate in computer science from Maharaja Agrasen Institute of Technology, Delhi ( if you have never heard of… good! ) and 2018 passed out. Currently, I am interning as a Frontend developer at ShareChat, Bangalore.
Now, let’s begin with my journey 🙂 .
So I started competitive programming in the 2nd year of my college with the sole motivation to end up in one of the big MnCs. However, I started enjoying it more than anything. Then I got addicted to it as if it was a computer game. The green tick, that I used to earn after successfully solving a problem, was the kind of kick I was looking for in my life.
I took part in as many contests as possible during my college life. And in my final semester, I got selected as a Frontend Developer at ShareChat for their internship programme through one of the CodeChef Cook-off contests. At this point, I was a bit sceptical whether my past experience would help me during the internship period. But then I decided to give it a shot!
Internship at ShareChat
When I joined ShareChat, I had zero to a very little experience in the world of Frontend. So in starting, I was given small Bootstrapping tasks to get familiar with the things. And I was also asked to learn Vue and React (Frontend frameworks) since most of the company internal tools were built using these frameworks. Finally, I got my hands on some really interesting real-world projects which was a huge learning curve for me.
Eventually on my way to learning Frontend and building complex user interfaces, competitive programming pretty much helped me in many ways :
- Writing application logic was a piece of cake for me.
- Handling corner cases as I have done it so many times in competitive programming.
- Finding algorithmically fast solutions.
- Breaking a large problem into many small problems.
- Completing task within a small time constraint as I have participated in a lot of competitive programming contests.
But there were still few things that competitive programming didn’t teach me which I learned during this internship.
- Writing scalable and maintainable code.
- Using as less lines of code as possible which decreases the overall size of the app.
- Eliminating any kind of redundancy and making reusable code components.
- Making the interface so intuitive and yet elegant that the end user would easily be able to pick it up and could have a really smooth and immersive experience.
- Unlike competitive programming, in real world, problem statements aren’t properly defined and the main focus is first on understanding the problem completely and then taking the action accordingly.
One of the biggest reasons behind the motivation for working on the Frontend applications was that it was going to be used by many users. So I was supposed to make sure that end users always have a good experience while interacting with the user interface.
I would also like to share my experience of working at a startup as it was a different feeling altogether. ShareChat has a very open culture among their employees and they have always been concerned about the comfort and efficiency of their people. Most of the days felt like I was participating in a Hackathon as there was so much work to do in a very small time frame which eventually, has helped me in growing myself not only as a software developer but personally as well.
As I am about to complete my internship, I have realized that there are so many other skills that we need as a developer which we can’t acquire from competitive programming and in order to master these skills, we do need to have a hands-on experience in real-world projects that use them. However, doing competitive programming will surely help you become a better coder altogether and also it might land you a good job offer since many companies use this as a criteria to shortlist people.To mark an end to this article, I would just like to say that competitive programming is just one of the ways but not the only way to be a good software developer.