It has been more than four years since I landed my first role as a software developer. I still remember not knowing what to expect and feeling anxious about whether I was “good” enough (the dreaded “impostor syndrome,” which never really goes away). As with anything in life, reality turned out to be quite different from my expectations.
I remember thinking that, to be a great software developer, you needed to know the most obscure algorithms, every method your programming language offered, memorize documentation, be a math nerd, and, above all, code with your eyes closed. Oh, how wrong I was.
The past few years have taught me that being a great software engineer is about solving problems within constraints—such as deadlines and limited resources. You must generate possible solutions and choose the best option to mitigate future issues. It’s important to be comfortable not knowing everything, as technology is always evolving. The ability to explain code in plain English is also a valuable skill—after all, we are dealing with human beings. Knowledge sharing strengthens the team—documentation is just as important as your codebase, and learning to frame questions in a way your audience will understand can take you far. Keep it SIMPLE and SUCCINCT.
And yes, things are always breaking. Not because your code is terrible (though it could always be improved), but more often due to someone else’s changes introducing an unintended defect. You start to panic, rush to find the problem, and can’t seem to pinpoint the root cause. Now you start to cry and question your entire existence, wondering if being a farmer (praise to all of them) might have been a better career choice. Then, a miracle happens after a long walk—you find the root cause. Ah yes, line 1344, recent changes committed by one of your teammates caused your code to break. You meet with them, have a lovely conversation, and fix the issue. Now you don’t feel so bad, do you? You’re on top of the world, a true BADASS.
Here’s a graph depicting the above scenario:
SOFT SKILLS—yes, don’t be an ass to those who are less experienced than you. You might be the best programmer the world has ever seen, but if you can’t collaborate well with others, you’ll inevitably hurt your team’s performance, and your manager won’t be happy about it. Remember, you are REPLACEABLE. There is always someone smarter than you. So please, learn to be empathetic and guide others toward growth.
Not everything is perfect, and sometimes management will suck. You’ll often question decisions from higher-ups, and while you may not like it, there’s little you can do about it. Learn to distance yourself from your emotions and adopt a pragmatic mindset. Focus on providing solutions rather than complaints. After all, engineering is a means to an end.
It has been a truly humbling experience, and I’m still learning new things. However, I’ve picked up a few tricks along the way—like how to get myself unstuck and when to pause and ask for help. Taking care of my mental and physical health have been key ingredients to becoming the best software engineer I can be. This journey is never-ending, with its ups and downs, but I’m grateful for it, as it has allowed me to achieve some personal milestones. And no, AI won’t replace us anytime soon. Will it?