You got a developer job and it's the first day. Emotions are all around the place, you are excited, nervous, you feel like you made it, you have thoughts on how the job is going to be like, what expectations they will have for me, and so on. As you are approaching the office premises, the nervousness hits more than the excitement. You see people working, they look confident, the screens have stuff you don't know and the notorious imposter syndrome kicks in.
All these are natural and happens to everyone. You may feel like will you be able to navigate through all of this but the company has hired you for a reason. Believe in their decision and of course, believe in yourself. And the fact is people are not expecting so much from you. So, relax!
This blog is a guideline for how you should work through the initial years of your job and this is definitely going to help you become a better developer.
When you are in college or when you are shifting from another domain to the software world, you were learning some programming language. The course will be all about the language and at the end of the course, you are comfortable with the language. When you are working in a company, you are working on the company's product and the product has customers. The first thing you should be doing is understanding the product. Get the feel of what the product is doing, who are the customers, how is this product helping the customers, who are the competitors, etc. This will give you a lot of perspectives and will help you align with the company's vision. This means you will have to talk to a lot of people and this exercise will help you connect with the company faster.
Think, Discuss, Solve
In a week or two, tasks will be assigned to you. Awesome! You are now starting the contribute to the product. Now sometimes you may get a task that is easy but sometimes you may get a task that is difficult (or may seem difficult). Whatever the case may be, you SHOULD NOT start coding. Think about the problem, if it seems big then breakdown the task, draw/ write/ scribble the solution, and discuss it with your manager. When you do this, you are showing your manager that you don't jump to the solution and you think it first. Also, this helps your manager to tell you stuff that you missed in your solution even before you start coding.
A problem a day
Start solving problems on competitive coding platforms like LeetCode, HackerRank, etc. Not because you want to be a competitive programmer and compete but to learn how to think programmatically. I have seen people debating online about learning data structures and algorithms for developers. In my opinion, you should be having some knowledge on these topics. Solving problems on these platforms will definitely help you think faster when working on your office tasks. Even if you solve 1 problem a day, it's 365 problems solved a year. At least hit 300+ problems a year and you will become more confident with your programming.
You should be writing code so that you can understand. Let's say, you develop a feature and in a week a bug is raised then you will go back to your code to fix it. When you are looking at this code and it feels like what's going on here, that's a red flag. If you can't understand your code, how will someone else understand? Writing clean code should be your number 1 priority. Your peers will love you for this. Check the example below.
The first one, in the first glance you see a lot of letters, there is some load involved for you to understand it. The second one speaks to you, which is great. You exactly know what is going on with any load to process. I have used a very very simple example still, you may have felt the load while reading the first one. Now think about if it was something complicated and you wrote like this. Weeks down the line, you will be disappointed in yourself and if someone else has to work through it, God bless them.
It's your responsibility to keep your code clean. Follow the boy scout rule -
"Always leave the code that you are editing a little better than you found it". This habit will help you work faster in terms of fixing bugs or enhancing a feature etc. There are a lot of materials that you can read online on this topic.
Help them help you
You got stuck somewhere, you need help. Keep in mind, when you are asking for help, respect the other person's time. Give them details of what you were trying to achieve? What did you do? Where you got stuck? And all the information and context relevant to the problem. This is what I mean by help them help you. After the problem is solved, it's your responsibility to document how it was solved so that next time the same thing does not happen. This is the best approach when seeking help.
Good Communication - Bridge between confusion and clarity
Effective communication is the factor that will set you apart. For good communication, it is very important for you to listen first. I have observed a lot of people who are just waiting for their chance to talk, which doesn't help. When you listen to someone properly, you are getting clarity. And when you get clarity, you respond will clarity. Even if you are the best developer with the best skills, the skills won't make sense if you are misaligned with your manager or the company because of your miscommunication. Being vulnerable is okay, don't lie, people will empathize with you more. More than 50% of your time will be communicating with different people, make sure you do it well.
Read, Read, Read
Reading helps you build perspective. Read about technologies, how people are building, about the domain you are working in, product management, etc. Also, read stuff that differs from tech like psychology or space, history, sales, etc. Whatever you like, whatever that interests you, books, blogs, anything, read it! Reading will help you in ways that you cannot imagine.
Learn and grow
There is so much free content online, that it's overwhelming. The abundance of content makes you feel like not even starting. It goes without saying that you have to keep learning and keep updating yourself, so start! You can do it for free on YouTube or via blogs. You can pay for good courses and learn. You can dedicate at least 10% of your salary to learning.
You don't know what you don't know.
If you are a backend developer you can try learning new technologies emerging in this space or to switch things up, try some frontend or automation testing or DevOps, etc.
Build some projects, does not have to be big. By building projects, you can work on different things than what you are working on your job. When you build something, the concepts that you have learned will stick with you.
Your soft skills are as important as your hard skills, so try and be good at them. Enjoy the journey, there will be ups and downs, navigate through it. As long as your graph is going up, you are doing good. Be curious and keep learning.
All the best.
Thanks for reading!