- Published on ·
- Reading time 7 min read
3 Tips to Becoming a Good Software Engineer
Here's what helped me and I trust it will help you too
Share this page

I've been in the software industry for more than five years now and have already worked with more technologies, languages and tools than I could've ever imagined. Over these five years, I've slowly grown to be a good software engineer and have learnt a few things along this journey. This article consists of tips to help you on your journey to becoming a good software engineer. Let's dive right in.
Learning to learn
If there's one thing that's constant in the IT world, it is that technologies keep changing. Every few years, you might hear of the next big thing that you need to upskill on. The existing toolkit in the IT world is also quite diverse, so even if there is nothing new coming up, each company works with a different toolset. So, if you switch jobs, it's very likely that you might need to upskill yourself on something new.
For this reason, I wouldn't advise a specific technology or toolset. Instead, I'd advise you to learn how to learn. Or, more specifically, learn how you learn in the most efficient way.
Do video tutorials help you better than reading blogs? Do you like to throw yourself into the deep end and reverse engineer your way back to the start or do you like to start slow and take in step-by-step? Do you find online classes more effective than an in-person instructor or is it the other way around? Do you prefer taking notes in a physical notebook or do you prefer a digital medium instead? There are so many different options to choose from. We're not in school anymore, so we're not bound to learn in the same way as everyone around us. Instead, we have the freedom to try different things and adopt what works for us the best.
“Anything that you learn becomes your wealth, a wealth that cannot be taken away from you; whether you learn it in a building called school or in the school of life. To learn something new is a timeless pleasure and a valuable treasure. And not all things that you learn are taught to you, but many things that you learn you realize you have taught yourself.” ― C. JoyBell C.
One of the reasons I keep trying out different technologies and/or products, apart from curiosity, is that I get better at learning new things. Because I'm learning over and over again, I keep refining what approach works for me best.
For instance, I realised that I consume data better by reading content rather than watching videos on a subject. I learn better if I practically implement a solution rather than stick to theory only. I learn faster if I can associate a new concept with a similar concept or an analogy that I'm already familiar with. I feel confident using a tool if I've spent enough time familiarising myself with it. I prefer writing notes on a physical paper rather than taking notes digitally. I retain information better if I've taught them to somebody either in-person, through videos or written material like this.
I found that if I haven't created a plan or structure to learn something, I feel like a headless chicken running in all directions and eventually, everything feels too overwhelming.
As a bonus, because I've tried different ways of learning, I'm also usually in a better position to advise others how to learn something, and I'm also better equipped at structuring my teaching material when presenting to a technical audience.
Once you've mastered the art of learning how you learn the best, the next time you need to upskill on another new technology or toolset, you should find the process pretty smooth.
Solve problems
I like creating small side projects in my spare time like little utility web apps for general consumption, and tools and code for other developers to use. Almost every one of these projects required me to solve some kind of problem in some shape or form. Over a period of time, solving these problems really trained my mind to structurally approach problems and look for solutions that are the right fit for the purpose.
“If I had an hour to solve a problem I'd spend 55 minutes thinking about the problem and 5 minutes thinking about solutions.” ― Albert Einstein
Here's how solving problems helped me:
Interpret a problem better: Over time, I've gotten better at breaking down a problem into smaller chunks without losing the big picture. This allows me to really understand a problem and all the constraints in place thoroughly before implementing a solution.
Improved researching skills: Sometimes the solution to a problem is only one Google search away. The problem here is that there's heaps of compelling information out there and filtering this information to finally implement what works is what takes the most time. By solving problems over and over again, I got better at how I search for answers and how I skim read through and interpret multiple solutions before landing on something that works, saving me loads of time.
Unbiased decision making: Not all problems can be solved in the most efficient way by the technology or toolset you're most familiar with. At this stage, it's important to look at a problem from a technology-agnostic point of view, research what gives you the best results without being impulsive, analyse all your options objectively, and finally go with what's right for the scenario. The more problems you solve the better you'll get at this.
Compensating up for inexperience: A common denominator across experienced developers is time and exposure to problems and the experience of solving them. While we cannot warp time, at least not right now, we can certainly expose ourselves to more problems and learn how to solve them. After all, what is inexperience anyway? In my opinion, it's a lack of reference points to fall back on when faced with a situation.
Get out of a problem faster: In the real world, the longer you're stuck in a problem the longer it's going to keep you from completing that task at hand and potentially, risk not completing the sprint. So, while you can't keep problems at bay, you can certainly work at getting out problems faster. Having experienced a wide variety of problems and their solutions, combined with better researching skills enables me to get out of problems faster.
Get feedback and iterate.
You don't have to be the best software engineer today, but you do have to be a better software engineer today than you were yesterday.
Critique, feedback, reaction to one's work or the way they have presented it, regardless of intention, is a gift. — Mark Brand
In classic Agile style, always make it point to get feedback from your peers, and strive to make small changes today so that the next time you ask for feedback, your peers would've seen an improvement in the areas that were highlighted before. It's also important to not only ask for technical feedback but also for interpersonal feedback.
What are your thoughts on the three tips detailed above? I'm keen to hear if you've found this useful so I would encourage you to share your thoughts and questions in the comments below and I'll be more than happy to respond.