Skip to main content

Things learned in 10 years of Experience as a Software Engineer

· 7 min read

I am a avid reader of HackerNews, I like to read about start-ups and I love to work with code. I started my career as a programmer working on web projects. I have had experiences working independently and with a huge team. In this post, I try to pen down my experiences as a software developer and some of the things I learned throughout this journey.

Continuous learning

At first continuous learning sounds super daunting, but once you fall in love with the challenging problems and go on a quest to find optimal solution, you start enjoying. If you think the learning phase is up to graduation/post-graduation, then you are mistaken. A programmer will never stop learning. There will always be new technology out there which you may have to learn to keep up with your job and compete in this industry. A dormant, not-ready to upgrade their skills programmer will soon fall behind and will be left alone. It is as it sounds, cruel. But if you enjoy reading and learning about new technical fundamentals and you look forward to implementing what you learned, you will feel at home. What you learned today may not be applicable tomorrow, but if you can learn to appreciate this fact and accept the bitter sweet truth, then throughout your journey, every step you take will compound to the glory tomorrow or someday.

Be patient and understand the reason why the code was written

When working in a team, do not judge the code written by your peers. I know of colleagues who constantly complain about some code that was written a long time ago and how inefficient and vague it was. Rather than complain, my approach has always been to read carefully and understand how the legacy code works, try to figure out the bad parts and fix them. Sometimes a trivial piece of code which may appear to be useless to you may serve a very important purpose. Make sure before making any changes, proper due diligence is carried out.

If you think a piece of code can be improved, by all means go ahead, modify it. These days everyone uses code repository tools that keep track of the history of code changes. sometimes your code change may boost performance of your application, and sometimes it may break a functionality. By all means, make changes to the code if you feel so. We have peer reviews, QA team and product managers and leads to verify the changes and approve.

Always practice, work on side projects

Practice your trade all the time. Try to work on an idea and create a side project. If you don't have an idea to work on, contribute to open source projects. You can also practice algorithm challenges on Hacker rank, Leetcode etc. Working on side projects opens up your perspective towards programming. Apart from your daily job, You have to discipline yourself and be consistent so as to complete your side projects. At times it becomes extremely difficult to squeeze in some time, but if you force yourself to a tiny commit on GitHub, you will be victorious. Again, all such activities compound to give you greater results over time. Side projects can be anything, and does not always have to be related to your career. If you have a hobby to paint, cook, write blogs, edit videos or make gaming videos, by all means, invest your time and energy in them. The creator of Jquery, John Resig has a very important essay on his blog about the importance of Writing code everyday. Read it at Write code everyday - By John Resig

Pen down your Experiences

The best way to remember a programming concept is to teach? Teaching does not mean you need a classroom full of students to get started. You can very well start by creating YouTube videos, or write technical blog posts and share on social media. Sometimes you may not know even the simplest of the things that you thought you were expert at, and it should not bring you down. Try to write a technical post about it while you research and learn more about it. You can write your own coding examples or explain the concept in a simpler language, this will not only help you, but it will also help those reading your article. And in case you need to revisit this technical concept in future, you know where to look for.

Lessons of a Software Engineer

This is not my domain of expertise

If you are working on a project and face any issues, instead of assuming that the issue is not related to your domain of expertise, try to backtrack and figure out the solution first before giving up. You may not know the programming language, but with some logic and understanding, you will be able to figure out how the code works. This will help narrow down the issue. And when you need to ask for help, you will be able to pin point and save time.

StackOverflow, Google to the rescue?

For programming related queries, Stack Overflow is THE go to place for every programmer. Chances that your query has already been answered are always high. However sometimes, you many not find the exact solution but then there might be a solution that is close to what you need. So read carefully all the suggestions. Do not hurry asking a question. Also, when you ask a question on Stack overflow, make sure to create a Proof of concept online on site like codepen etc. so that you narrow down the problem you are trying to solve. Anyone who wishes to help will not have to recreate the issue and will have a demo of what exactly you are trying to ask. Also mention what all you have already tried to solve the problem, so that it saves time of anyone who wants to help you.

The clear you are in asking your questions the higher the chances of you receiving an answer.

Be a user first, then be a Software developer

Have you come across a software that you had the hardest time figuring out how it worked? Even a simple task would require a mundane amount of efforts? The reason being, not your ability to understand the software but the overlooking of the software developer who designed the software. Sometimes, an UI functionality to a software engineer would not be worthy of the efforts, but it may be a huge value addition to the end user. Always try to see a software from the perspective of the user. Try to understand how the User Experience can be improved because in the end, we develop a software to make life of the users easier. We want to usually automate the boring stuff. Right? The best way to see how the software would appeal to anyone is to help them walk through the process and the User Interface designs.


This post cannot be concluded, there are so many golden nuggets that I can think of which needs a their own space. As a software engineer in this industry, the lessons I learn everyday are amazing. I cherish this journey and hence, I plan to continue on this series of post someday in future. I would love to hear about your journey. Please feel free to send me an email at codingbbq [@] gmail [dot] com