Everyone starts from some where, including being a junior software engineer.
Like many of you, I got into software development from a non-traditional background. In this fast-paced environment, the time has flown like a bullet — it feels like yesterday when I wrote this article.
In a world with endless possibilities, it takes practice and patience not to feel overwhelmed and find out what’s most important to yourself — aka the North Star. It takes bravery and resilience to keep challenging your comfort zone. How do you measure success? What’s a fair evaluation of progression? If similar questions ever occur to you, read on.
People first, technology secondary
In “theory”, coders don’t talk, they sit in front of a screen and fart out rainbow code that builds products magically, which might be the case in early-stage start-ups since it’s a one-man-band and the founder has to deal with all the things. However, as the company grows, things will have to change to ensure scalability and healthy growth. In “reality”, building a product usually requires efforts from a team of people, including but not limited to designers, product manager, front end and back end engineers. Communication is essential to guarantee success and productivity in an agile mindset. It’s important to be a team player, not a loner. Be upfront with your opinions while still paying respect to other people’s time and efforts.
Keep calm and understand the problems
Easier said than done. When you’re in front of deadlines and unclear feature requests, it’s easy to feel rushed and wanting to keep your hands dirty. It’s even more critical that you understand the problem well enough to identify what’s needed and what not prior to implementation. I can’t remember how many times I jumped into code without over-sighting edge cases or over-engineering the problems. Of course, everything takes practice, even very experienced software engineers and designers misunderstand issues sometimes. Making mistakes and failing fast is part of the nature of software development. But understanding the problems, thinking in a large picture and being aware of the trade-offs is half of the success.
Docs first, specs first, code last
This is sort of related to the previous subject but more towards a team level. It is a relatively lofty concept but is also super beneficial. Sure, it’s not easy when it comes to execution in a fast-paced small company because it takes time and efforts from everyone in the team and “we need to ship things fast”. But in my opinion, it’s arguably a time concern because a poorly designed feature usually ends up costing more time bug fixing and issue tracking.
Manage your agenda
As a junior software engineer, there’re a lot of things to figure out to make the universe work for you. It’s like tooling in development, utilizing the tools correctly instead of fighting against them makes a massive difference to your daily life. Having your agenda under your control is one of the most important ones. As mentioned earlier, everything is teamwork. Sometimes, your work can be blocked by other people’s work. There can be various ways of solving the problem, which takes creativity and efforts. But the general rule of thumb is, try not to make things personal and feel discouraged, advocate yourself and reach out for help.
Sometimes, it’s also important to manage your manager to help you achieve your agenda. Your manager can be very busy and not always on top of your daily work. Make sure you proactively communicate your progress and concerns to help them do a better job.
Again, everyone is unique; my approach doesn’t have to fit into your shoes. But hopefully, you can get something out of it.
If you are curious about how to evaluate yourself as a software engineer according to the industry standard, I strongly recommend this article from CircleCI.
It’s been an incredible journey working at an emerging startup in silicon valley. Seeing myself grow helps me feel confident and stay focused. Observing the company and team grow keeps me engaged and motivated. Witnessing the user growth reassures my faith in being in tech.
A year ago, I convinced myself to start from scratch and transition into software development. Today, I’m working with 40 plus incredible problem solvers to build a product that people love, as a software engineer.
If you’re interested in helping us build a better product, feel free to drop us a line at firstname.lastname@example.org.