What Makes a Good Software Engineer?

One man’s advice to all aspiring and current Software Engineers or Programmers.

Hi, I’m Sam. I’m just a guy who has been working in the industry now for about 18 months. I’m no expert and I’m certainly no senior engineer. However, this question has plagued me for a while and I’ve asked, and read and mulled and now I’m finally ready to share my thoughts. Hopefully they are of some help to you.

When I first started out programming at about 17, I thought being a good programmer meant knowing a lot of Apple’s CocoaTouch APIs (I first started to learn to code by making iOS apps). The more I knew, the faster I’d be, the more I’d earn or whatever. Five years later and I have matured in my thinking (I think?!). So as I think and read about this question, time and time again it becomes less about the code and who you are as a person and what your priorties are. Let’s start with what I believe the most important thing is.

Your Users

We write software for people. For users. For mums and dads, for grandparents and grandkids. For teenagers and preteens. For rebels and misfits. For nice guys and girls. For everyone. Everything you do must make their lives easier. You may think “oh I wanna work on the backend” or “I just wanna do data science”. Wrong. Those engineers are just as important as the person making the animations. For example, It wasn’t someone with a bit of jQuery under their belt making sure my friend comes up when I type “e”, (the most common english character) in the Facebook search box.

Users are the most important thing in software. They pay for it, they use it, they let you earn money from it. They pay your bills, feed you, keep you warm. Listen to them. Do right by them. Get to know them. Every engineer has the power to impact them, for better or worse.

Your Toolbox

Your ability to code up something, whether it be a web server, a mobile app, a website or an embedded bit of hardware… all of this will be useful. We’re always in the need to create the right solution for the problem, and that might mean using something outside of your current toolbox. Go out. Learn it. And keep current. Keep reading. Do a survey every few months about what is new. But be pragmatic, don’t rush to that new shiny thing. Code clean, and code smart. Know your tools, but don’t marry them.

Your Mind

You’ve gotta be curious. You’ve gotta want to make the best work you possibly can. That said, you just have to be flexible. Software engineering is really the art of compromise and pragmatism. Troubleshooting. Being able to deduct and reason is incredibly important, and it’s something you’ll get better at over time. It’s something I really admire in senior engineers but really it’s a matter of practice. Keep at it. Remember, what do you know? What do you not know?

Your Heart

You’ve gotta be in this. If you’ve been forced to do this because your parents made you, or you thought it was trendy to do because apparently the money is good right now… please, get out. This industry is cruel. It’ll make you feel stupid on a daily basis. It’ll remind you of how dumb you once were or how your old decisions have lead to the terrible situation you’re in now. You’ve gotta love this. You’ve gotta have that 🔥🔥🔥. That passion. Show me. Write about it. Contribute to some open source.Give a talk. Show me something that proves to me you’re in this for reals.

Your Nature

People will call these your ‘soft skills’ or you EQ. Can you work in a team? Are you a jerk or a nice person to get on with? Are you stubborn about considering other solutions? Do you value feedback, ideas and criticism from others? Are you humble, yet confident? Do you know when to shutup and when to speak up? Do you get out from behind the screen and take in the world? Do you step outside your comfort zone? Do you try experience the problems of others that you can solve for them?

I wish you the best of luck on your journey, wherever it may take you. Mine has just started and so far it’s been a wild ride. I’m looking forward to what the future brings, and so should you. Good luck.


This post is part of my Junior Developer Diaries series. You can read other posts and join the mailing list here - samjarman.co.nz/diaries.