There are a few things that can help you grow dramatically faster at your new job as a software engineer. These are things you will eventually realize as you advance and will help you become a more seasoned SDE.
I started off my career in a small town called Manipal; since then, I have built apps for huge multi-national companies and startups. Currently, I work at a fast-growing AI company based out of San Francisco, and most of my points will be heavily inspired by this journey.
- Focus on building
- Code Reviews are your friend
- Regular 1:1 with your Manager
- Double down on your strengths
- Learning never stops
1. Focus on building
As someone just starting out, reading documentation and watching videos on the basics definitely help. But getting your hands dirty with the code is what will make you more confident. Most times, simple things like downloading the sample code and playing with it, adding a new feature or modifying some parts of it give you deep insights into the working of these components.
I would also encourage folks to build their own sample projects and host/launch them to get an understanding of what it takes to production-ize code. In my case, I have worked on a ton of projects on my own and launched them on Google Play Store. Doing this gave me a deeper insight into deploying an app, App store optimization, figuring out staged roll-outs etc. This helped me at my work and positioned me well to take up more responsibilities.
2. Code Review is your friend
This is something I did not do at the beginning of my career. Later on, when I moved jobs, I saw the value of code reviews and how they helped everyone on the team learn on a daily basis.
Code Reviews not only keep the code clean but also gives you a birds-eye view of all the patterns your colleagues use. Everyone has unique approaches and refer to different blogs and materials to come up with them. Code Reviews are such a great hack to learn these approaches and inculcate them into your coding practices. Even after almost a decade of coding, I learn something new every day from this.
If you do not have a lot of people on your team to learn from, consider working on open-source projects on Github to get a taste of code reviews.
3. Regular 1:1 with your Manager
Never miss an opportunity to get and provide feedback with your manager. This might sound trivial but hear me out! While software engineering might seem like you just have to cram code all day, it is more complex than that. Communication is at the core of Software Engineering, and hence teamwork is very valued at most companies.
One-on-One is a great time to talk about any concerns you have with your manager and get to know if there is something you can improve on. This will help you grow as an engineer and align with what the team expects from you. I have been in situations where I realised some of my mistakes almost a year later during the performance appraisal. That is never fun.
4. Double down on your strengths
Every human being is unique and comes with their own set of strengths and weaknesses. Some developers I know are great at, say, the UI part of Android, and some are great at building the infrastructure part within Android. Some are great at organizing a team, and some are good at setting up the architecture and looking out for common pitfalls.
As you get more comfortable with writing code, seek out opportunities that really excite you. Try out new things, and when you like them, double down. Talk to your manager/lead and tell them what you enjoy, and ask for more of such work. Any work is a marathon; if you enjoy your work, you will be able to give it all you have and become more successful at it.
5. Learning never stops
Podcasts, Youtube, courses and blogs are your friends. Keep learning things that excite you. Try not to get too attached to a certain platform and seek to understand the fundaments of the platform you are working on.
In my ~8 years-long SDE journey, I have seen platforms come and go (Windows mobile ๐), so try to keep learning what is new in the industry and how you can create a sample app. In my case, I have been fortunate enough to work on Android for most of my career, but I also got the opportunities to build back-ends using Python and NodeJS. In the last few years, I have built sample apps on React Native and flutter just to hedge my expertise.
I can't stress how quickly technologies change, so always be learning is a great mantra to have.
Bonus tip: If one of your projects gets some traction, you can also spin it out as a side project or a startup. So the upside is infinite with almost no downside. In my case, I built karla.tech and resumepuppy.com.
Conclusion:
- Get your hands dirty with code
- Learn from your colleagues by actively reviewing code
- Get feedback from your manager on a regular basis
- Do more of the things that excite you
- Keep learning new things; that is the best way to grow
I am sure there are a lot of other tips that might help folks starting out; what would be yours? Would love to hear them.