How to Become a Successful Software Engineer

How to fast-track your career and become a successful software engineer.
Disclaimer: Success means different things to different people, but for me it meant becoming valuable enough for my company to be promoted to a senior software engineer as quickly as I could. It took me about three years and fourth months to be promoted from junior, to mid-level, to senior. Regardless of what you think a successful software engineer means, I’ve learnt the following valuable lessons that will improve your career as a software engineer.
Take Action
First and most importantly, value action above pretty much anything else. From my experience, there are many people with great potential but it seems like they cannot bring themselves to action. This is hard and takes practice, but often yields great rewards. It is always easier to do nothing. Train yourself to do things that you know can be done to improve your product/services/processes. Doing so will make you stand out beyond the crowd.
An example of this in my career was pushing for our company to use Continuous Integration (CI). I wanted to do this for a long time, but avoided it because I knew I had to do some server setup and installation myself and I knew it would take some time because it is an area that I work in often. A helpful trick to make this easier is to objectively weigh up the cost of potential failure against potential success. When I thought about that, it was a no-brainer. A few wasted days against less bugs and less nasty comebacks after deployments and greater freedom with changes. As it turned out, the attempt was a great success and the company adopted the CI strategy. We delivered a complex project with no obvious bugs and minimal changes necessary.
If I could give other software engineers only one piece of advice, this would be it. Don’t delay. Teach yourself a language that you’ve always wanted to learn. Improve the things that irritate you. Get comfortable with being uncomfortable. The key principle here is self-discipline. It is often the hard, less enjoyable tasks that yield the most fruit.
I read a little book called ‘Rhinoceros Success‘ (provided by my mentor), largely on taking action that would get you in the right mindset. I can also recommend No Excuses by Brian Tracy on the topic of self-discipline.
The secret of success is the overcoming of inertia. – Rhinoceros Success, by Scott Alexander
Learn to Work With People
There have been many studies that confirm that people with high EQ fare better than people with high IQ. For most engineers (myself included), getting along with people are much more difficult than solving technical problems. Bringing up contentious and unpopular (but necessary) topics require good timing, the proper setting and the appropriate body language.
A book that has stood the test of time is ‘How to Win Friends and Influence People‘. If you have not read this before, buy it now. It has helped me tremendously in communicating with both colleagues and friends in a social setting. The book covers various topics covering many social interaction vices. For example, it was only reading this book that I realized people don’t actually like being criticized and doing so often accomplishes nothing. Actually it is pretty obvious, but I never thought about how my gripes may affect the people who I am working with.
The book will able aid you to become a more likable person, enabling you to have more meaningful relationships which in turn makes you a happier person.
Read
Read, a lot.
The deathtrap in a technological career is to stagnate and become irrelevant. People that get stuck in this trap all have one thing in common – they don’t read. Reading is a magic tool that you should use to your advantage as much as possible. Read up on successful tech stacks used in successful companies. Read about future trends. And not just tech blogs and opinion pieces. Invest into well-received self-improvement books. Reading can change how you think and renew your mind.
A footnote in this section: Reading news does NOT count for reading. Many self-improved books (Rhinoceros Success, 4 Hour Work Week) discourage reading news. I’ve been doing so for the last few months, and I’m not turning back. Why? News is overwhelmingly negative and usually provides free worrying instead of stimulation. Fill your brain with things that interest and motivate you, not sap your energy and make your anxious.
Small Productivity Hacks
There are small changes that you can make in your work date that could give you a tremendous efficiency advantage. Here’s some of the best that I’ve used:
Read Emails at a Set Time
Unless your tasks specifically dependent on frequently reading emails (like performing tech support or replying to clients), avoid reading emails throughout the entire day as they come in. This is hard, especially if you are extremely curious, like me, but really is a worthwhile discipline. I used to get to the office, read my emails and starting hammering away at some issue that was raised in the emails. Now, I get to work and put in a solid 3-4 hours before reading my emails. And surprise, no one died. Starting your day off with some focused effort sets a good pace for the rest of the day and I promise you, you’ll get a lot more done. Batching routine tasks like these saves time and can be used in other areas of your life as well.
Fake Deadlines
Ever wrote a brilliant paper in a few hours? When we have limited time, we focus on the things that matter. Set fake deadlines for yourself and you will suddenly have a lot more time to do the important things.
Work Blocks
This one goes hand-in-hand with creating fake deadlines for yourself. Work in an hour to two hour blocks without interruption, and then take a break.
Avoid Interruptions
Avoid interruptions (and interrupting) at all costs. Again, this takes great discipline, but comes with great rewards. Especially in technical work, interruptions are deadly and often cause unnecessary mistakes. Wear headphones, even if you don’t listen to anything (4 Hour Work Week). If someone pitches up to your desk without warning, politely ask them to send an email. If it is a crisis, tell them you really only have 5 minutes. Practicing this will prevent your day from running away from context-switch to context-switch. The opposite also holds true – don’t interrupt people unless it is absolutely unavoidable. Ban work IM and respect people’s time.
Be a Mentor
Teaching and sharing your knowledge and watching other people progress is one of the most fulfilling things you can do. Guiding someone less experienced than you takes energy, patience and persistence. Not all software engineers are inherently experienced in this, and learning to mentor is a great way to increase your value to the company.
Mentoring someone also teaches you to lead. One of the greatest tips I’ve learnt of one mentoring is to be wary of yourself of becoming the bottleneck. Empower your mentees to make decisions themselves, and perform frequent reviews until it is not necessary to do so. This also teaches your mentees to take responsibility for their own work and make the best decisions with the information they have.
Be a Mentee
Find someone who you admire and look up to in software engineering. Ask them if they would be willing to help you grow in your field, and not just in software engineering, but also personal development. If you are luckily enough, like me, someone at your office will start engaging with you on this level without you even needing to ask.
Take Responsibility
A great way to show that you are ready for a position with more responsibility, is to actually take more responsibility for your work. Made a mistake? Own up, and don’t make excuses. Correct your mistake as quickly and thoroughly as possible. Another way to advance in this area is to volunteer for difficult or challenging work. See a colleague struggling to cope with work? Offer to take something off their hands, and do it really well. Just be careful not to overburden yourself.
Looking at these guidelines, it is clear that becoming a better software engineer does not necessarily mean knowing every tech stack. Growing and improving in your career also largely depends on skills that are useful in any career. I hope these principles will be as valuable to you as they have been for me.
What has proved to been crucial in your path to success? Feel free to leave comments below.
6 replies on “How to Become a Successful Software Engineer”
Jenno Richi Benat
Its really interesting & Inspiring. Time now to set my path on Action while I Learn, Read and take more responsibility. 🙂
Clara van Staden
Thanks Jenno! I think you are already well on your way… 🙂
Arné Schreuder
Great article Clara. I relate quite a lot to most of the elements you mentioned above. Awesome!
Clara van Staden
Thanks Arné! What would you say is also important?
Arné Schreuder
Mmmm, I think you pretty much covered everything. Perhaps one last thing: Sometimes an 85% solution is just as good as a 100% solution. Let me explain: You do not always need to use double pointers for Linked Lists as famously suggested by Linus (https://meta.slashdot.org/story/12/10/11/0030249/linus-torvalds-answers-your-questions). I tend to think, 85% solution is good enough for now, 100% is what we aim for later. So cut yourself some slack. Remember, code is meant to evolve over time, so leave some room for improvement 🙂
Clara van Staden
Such a good tip, thanks for sharing! It is easy to feel apologetic when your solution is 85%, while that last 15% usually takes about 80% of the time…