Lessons learnt from three years of professional software development
So in the last week of July, I'll be completing three years of professional software development. It has been an amazing journey. Mistakes made, things learnt. If my three years younger self had a time machine to talk to his future self (i.e. my present self), it would've been quite a lecture. Below I have penned down the things I wish someone had told me when I started my professional software development journey, hoping that it helps someone who is starting their journey now-
- The shiny object syndrome is real and it is going to hit you real hard. The earlier you educate yourself about it, the better. It will always be there, even if you are working on the shiny object which you thought will be a cure-all, but being aware about it will make it easy for you to deal with it.
- When you are being trained for a new project, don't feel frightened by the number of technologies and tools used in the project. Try to understand the big picture first. No one is expecting you to learn each and every technology used in the project. We work in teams, there will be people to assist you, learn to ask for help, learn to ask questions. Dive into key areas that you will be working majorly in, having conceptual understanding of other things should be enough. Your knowledge will increase over the time.
- Initially, some things won't make sense - you won't understand the 'patterns' or why we follow particular 'standard', no matter how much you read about it. It's because you haven't worked on the code enough to understand the problems. Patterns and standards are developed by people who have gotten their hands really dirty in that language/framework. You will also have your 'Aha!' moments, but learn to get along for a while, these people know what they are talking about.
- Know that the best technology is the one that gets your job done, brings value to the business you are developing softwares for. Be open to learning new tech every now and then, but don't let the new tech distract you from your current stack. Keep learning new things about technologies you use, try to understand problems in it. It will make it easy when you are learning new tech that is trying to solve those problems and will also enable you to get the best out of it.
- Whenever you are asked to compare two frameworks/languages/tools, you should always say 'It depends'. There are always trade-offs, and everything has its pros/cons. We, programmers, are known to get defensive when talking about tech we use. When choosing tool to use in industrial projects, we have to consider a lot many factors than you can imagine. Something that works great for project 'X', doesn't mean that it will work for your project too! Also, understand that, innovation happens, technology evolves. Be aware about the cons/shortcomings of languages/frameworks you use.
- The developer community is amazing and the content creators are doing great job, but it doesn't mean you have to consume it ALL!!! The FOMO will kick in, you will learn new things like - Chrome shows a smiley icon as tab count when you have over 100 tabs, there isn't any functionality in your mail client that allows you to 'unsubscribe from all' newsletters. Also, no app is going to reward you for having maximum bookmarks. You'll be skimming through hundreds of articles, actually gaining very little knowledge. Learn to focus buddy, don't overwhelm yourself. Focus!!!
- A lot of the time, you will feel like an imposter, especially in the early days of your career. People in our industry often complain about the imposter syndrome, go learn about it. Know that, many people, no matter their experience level, have to deal with some level of imposter syndrome. There is no one who knows it all, 10X engineers aren't real. Take on harder tasks, don't shy away because you are a beginner. You will struggle but it will build your confidence, that's the only way to deal with it. After three years, you will want to write about things that you have learnt. There will be lots of self-doubt, you will try to procrastinate because of that, but write and publish it anyway!