How to become a Great Software Engineer
How I coach developers to become great Software Engineers in the shortest time possible
After coaching and mentoring Software Engineers for over 20 years, I tend to have a knack for ensuring Software Developers become as good as they can be in the shortest time possible. Running my Software Development consultancy as efficiently as possible relies on it because I need the new developers and trainees to get good quickly so that they can start contributing as soon as possible.
All of the individuals I have mentored up until now would agree on how invaluable the tips and information I share with them was. They have gone on to advance greatly in their Software Engineering careers and that is a testament to the solid foundation they had while I trained them.
Most of the training I delivered can be summed up in a few key points to focus on. It takes time and practice, but following the correct steps from the start ensures you continue on the right path to achieve your Software Engineering goals. Here are the tips I give to all my mentees:
1. Understand your programming language
I don’t simply mean how to write a for loop or a print statement. If you understand your programming language in-depth, you will understand how each statement gets translated into machine instructions. You will understand how it allocates and deallocates memory. You will know the performance implications of writing a statement one way vs another.
The newest programming languages such as Swift, Kotlin and Go simplify the job of a developer to help them be more productive even without having to know any of the low-level stuff like memory management. This is why I find fewer and fewer engineers are understanding their language in-depth the way they need to.
The more you understand the language, the more efficient you’re coding becomes, and the better you can make the software that you write perform. It also prevents you from encountering those head-scratching moments because of a unique feature in the language that you didn’t fully appreciate. Every programming language has its unique quirks, such as weird syntax, unusual functionality, or non-standard implementations. These things can act as a real stumbling block for developers new to the language, or even seasoned pros. Learn that language inside out and you will avoid all this.
2. Learn how to dance
This one is actually optional. I once threw a few moves on the dance floor at a work Christmas party and I became the most popular engineer in the company for a while. I soon realized it’s because most software engineers don’t know how to bust a move. Vitally important if you want to elevate yourself from just having Geek status. Hash-tag just saying.
3. Learn your IDE
Make sure you master the use of your Integrated Development Environment. I can remember numerous times during my career where I’ve been stuck in my workflow because I didn’t understand how to use a particular feature of my IDE. I recall Apple releasing an update and changing Xcode so much that I would have to learn how to use it all over again. A lot of times I would take shortcuts and not bother to read the documentation. Boy was this a big mistake.
My advice is to take some time and watch some videos, read the manual, and even learn the short cut keys for doing repetitive tasks. Tasks such as opening a particular file, or refactoring code. If you know the shortcut keys you become so much more productive because you can get a particular task done in a lot less time.
Don’t feel embarrassed to ask colleagues about how to do something either. Pride is the greatest killer of a software engineer’s joy. Spend the time upfront and it will save you much more time later on down the line.
4. Know your platform APIs or frameworks
The more you know your platform API or framework, the quicker you will be able to complete tasks. Whether that’s iOS SDK because you are an iPhone developer, Android SDK for Android devs, or Spring because you are a backend web developer. It is vital that you know as much as possible about your framework.
You may have experienced in the past being stuck on a problem for hours. You eventually solve the problem by coming up with a creative but complex solution. Then you find out later that you could have achieved the same thing with a few lines of code because the framework has it built-in already. Facepalm!!
If you have any kind of feeling that there is a better way to solve the problem before you start bashing out code. Have a read through some SDK documentation. You’ll probably find someone has already done the hard work for you and saved you some sleepless nights. Or is it just me that loses sleep over their code? Hmmm
5. Get stuck into a project
You may be lucky enough to be working on a project as part of your job. Mostly, however, these projects have several developers working on them at the same time. You don’t always get to write parts of the code that are relevant to you learning something new or would just find more interesting.
Instead, you could start your own project part-time or find another interesting project on Github that you could contribute towards. This will ensure you keep learning and keep developing in areas where you need it the most.
It also means that if there are any funs bits of the SDK, new frameworks, or new language features that get released, you have the freedom to explore them without getting bogged down if you are doing it correctly or not. You simply get to practice and have some fun with it.
6. Learn Design Patterns
If you want to become the most effective developer you can be this is the way to do it. Design patterns are a way to make your code modular and reusable. If you have solved the problem once before and written your code to be modular and reusable, you can lift that code and quickly integrate it somewhere else. I do this with so many software projects that people think I’m some sort of coding machine. Well, my secret is out now. I just know how to reuse code.
7. Use Test-Driven Development
It still amazes me the number of software engineers that either don’t use test-driven development or simply don’t write tests for their code. They clearly haven’t been told the well-known secret. It actually makes you write code faster. Not because you write less code but because you’ve spent more time upfront thinking about all the scenarios, and then ensuring you have automated tests to cover these scenarios. Cutting down on the time you spend testing is the best way to stay productive.
8. Code, code and code
The best way to get good at anything is simply to do that thing as much as possible. Eat, Sleep, Code, and Repeat! That has to be the number one tip I have to give on how to become a great software engineer in the shortest time possible.