Insights as a 22yo Software Engineer

I’m Abhin, a 22-year-old developer from New Delhi, India. I am a JavaScript (+Typescript) and Django developer. I have been writing full-stack code for over 2 years now. Programming for me has been an outlet that challenges me, annoys me, and manages to keep me on my toes. I recently read an article from Lydia Hallie where she shared her insights and advice as a (then) 19-year-old software developer and it convinced me to write one of my own.

Background

How did I get into tech?

I was 12 when a friend of mine proposed that he and I could develop and publish Android apps together. For close to two years, we created and published Android apps using the MIT App Inventor, gaining over two thousand downloads for a variety of apps including a GPS, primitive photo editing apps, calculators, and more, until we discontinued for certain reasons. In my final years of schooling, I was taught C++ as a subject, and that was my first ever in-depth exposure to coding. I enjoyed having that kind of control to programmatically control a machine, instruct it, and develop whatever I could imagine.

In 2020, I reconnected with programming for good during the pandemic. Perhaps the biggest positive for me that came out of the pandemic was this rekindling. I started with Web Development and started my journey with HTML, CSS, and JavaScript. I took a liking to React and got opportunities to build real-life impactful projects for my college, and a few international organizations as a freelancer.

Later I secured a job as a Product Engineer (2022) at Openhouse (a then Series A startup, based out of Bangalore) where I was part of the back-end team. I learned Python, Django, AWS, and PostgreSQL on the go, and slowly became a dependable member of the team. It was an experience of immense learning for me.

The Undying Imposter Syndrome

When I had to choose a major for my undergraduate studies, I opted for Statistics. It was a moment of dire confusion and unawareness for me. I always enjoy playing with numbers and running my analysis on things that interest me such as sports. However, the decision to take it up academically didn’t sit well with me in the long run. Coming from a statistics background in the programming domain, I always felt out of place amongst software engineers who had studied computer science academically. It was always daunting when they would talk about Data Structures, Databases, and Networking concepts and I would have to play catch after the meetings using Google. However, both my manager and my tenure at Openhouse helped me overcome this anxiety.

I decided to pursue a post-graduate degree in Information Technology at the University of Melbourne starting in July 2023.

My key takeaways

Consistency is key

Only if you decide to show up every day, even if it is for a mere 5 minutes, will it compound into you becoming an awesome developer. You might get out of touch with a language, or a framework soon if you don’t use it for a long time. Sometimes just regularly thinking about a problem statement, or asking questions can also help keep your mind engaged.

Keep Learning

The biggest challenge (or the most exciting aspect) of the tech industry is that there’s something new every day. The industry is evolving rapidly. You need to spend some time at regular intervals to read the news and update yourself. Perhaps that might help you find your new niche.

Keep Asking Questions; Ask the why & Consider the how.

An essential quality that I come to cherish is to always ask questions and to be the curious kid in the room. Focus on the Whys and Hows. It will only make you a better problem solver, not just at your job, but in your personal life as well.

Each time you’re given a problem statement, consider how it affects your existing code. Why should we introduce a feature? Will it be a breaking change? How can you make this new feature future-proof?

Don’t just resolve bugs, solve the problem

A skilled developer knows the internal mechanics of their framework, tools, or language. I have worked with a few developers who, when they encountered a bug, would rewrite the code completely or change the flow. Here’s the problem with this approach — you didn’t learn anything from that bug. What you did was answer a question, but you didn’t solve it. You never got to learn why or how or what went wrong and how can it be avoided in the future the safe way.

Now whenever I encounter a bug, I only resort to the change-the-flow solution when it needs to be resolved on a crunch deadline. However, I also make sure to make a note of that bug, so I can dedicate a few hours later to debugging it the right way.

Think first, code later

Einstein once said — “If I had an hour to solve a problem I’d spend 55 minutes thinking about the problem and five minutes thinking about solutions.” This is an amazing piece of advice, specifically when it comes to software development. When I started, I would directly jump into coding, with no clue of the critical decisions to make, the scenarios to consider, and the pitfalls I may encounter. Over time, I have tried to develop the habit to try and spend more time thinking about the problem, than directly trying to answer it. Once you have figured out the algorithm, the architecture, and the product, you’ll be able to code without many breaks. Make proofs-of-concept, research libraries, and repositories, and see how others may have achieved what you are trying to. More importantly, it helps you handle the edge cases very well, and make a well-rounded product.

Take sufficient breaks

It will get overwhelming at times. You’ll be asked to balance work and personal life, and one may inevitably affect the other. It is important to take timely breaks and rejig your focus.

Be prepared for the next step; Aim toward growth

You should know what your next major step will be. I make sure to reach out to people much senior to me in this industry at regular intervals and just absorb their knowledge and wisdom. I ask them questions about the future, potential opportunities I can consider, and how I can be a better engineer.

On the flip side, it is easy to get lost in the rat race. Hence, it becomes necessary to keep reminding yourself of how far you have come, to take pride in wherever you are in your journey, and to balance that with humility. Your experience only makes you better.