What makes a good software engineer? This is an almost impossible question to answer. part of the reason is how subjective that question is. I’m convinced that as engineers, we often prioritise traits in developers that do not enhance performance. Equally we ignore traits that prove developers are great.

How did I come to this conclusion? A few weeks back I began a shiny new post on what makes a great developer. Then I began to list ideas that many engineers would agree were traits that great developers had.

All good so far, but then I began to cross-reference those traits with the behaviours of actual real great programmers that I know. The maths wiz from Cambridge who seems to be an expert on everything. The gif loving tech lead who has a solution to every problem or the master wizard of Linux shell.

None of the Items in my list matched up with things that the great developers around me did. Let me say that again, my list of traits of great programmers does not include any traits of the great programmers around me.

So here’s a list of 4 things that the developers around me have proven that the great developers around me do.

1 . Contributing to open source isn’t the only way to express your passion.

Open source is a way that many great developers express their passion. However, It’s only one of several ways. Other passionate programmers, for example, do programming challenges, help others on stack overflow, go to meetups, work overtime, do personal projects. Some write blogs.

The problem is that many developers, recruiters and hiring managers see open source as the only way that developers express their passion. Just like in @IAmRecrutir’s parody tweet they hone in on just one type of person.

But by taking this approach we exclude so many talented people and reduce the diversity of thinking within our organisations.

2 . Using a particular tool or framework does not make you better than people who don’t.

I’m a lifelong learner, Learning something new gives me the same warm feeling as opening up a present on Christmas morning. What do you get the man who has everything? React Native.

It’s really easy to look over at a Fortran, C++ or even Java expert and think: “Hey, how’s 1990 going for ya grandad!”. The truth is there really isn’t any reason to think yourself better than a ‘fortranner’. Yes, it’s old, but that doesn’t mean that any less brainpower is required nor does it mean that there’s a smaller financial reward for the work.

Let’s be clear. Staying up to date within your environment is important. If you’re in a javascript job, for example, you should really know ES6. If you’re a C++er you have no excuse not to learn C++17. Why? because writing clean modern code is your job.

3. Wasting time on Reddit or Twitter isn’t actually wasting time.

Admit it. You’ve done it. Open up your phone and before you know it you’ve spent 45 minutes browsing r/ProgrammerHumor or your favourite programmers on Twitter.

It’s easy to think of the time you spend idly browsing your favorite social network as a waste. But believe it or not, it’s one of the most important things you will do.

The world of software development is big. You know that there are things that you know, and things that you don’t. But the things that will really pull you ahead are the things that you don’t know you don’t know.

By that, I’m talking about the latest text editor, the framework that fixes that problem you are having perfectly or an intriguing new design pattern or principle.

So next time you’re on reddit or twitter remember — These interactions are an Important part of your learning journey.

4. Being good at code doesn’t actually make you a good programmer.

A few years ago there was a hit show called House. House follows the story of Gregory House (Hugh Laurie) , a doctor who is the best in the business. He can diagnose even the most challenging of medical problems. Often patients come to him after previously failing to gain a diagnosis elsewhere.

House is also an arse. He’s rude, belittling to his subordinates and patients. He has no respect for rules and is interested in very little other than himself.

In the show, House is seen as a flawed genius. In spite of all his flaws he is kept around and respected.

If House we’re real, however, he’d be on the dole.

Software engineering has a lot of characters who are really good at stuff like this:

Writing code that communicates what it does effortlessly.

Using secure languages and dependences.

Using security best practices.

Unit testing.

Fulfiling the business requirements, as they are, not how the developer. would like them to be.

But In order to become great developers they must also do this stuff:

Empower those around them.

Make others feel comfortable in their work environment.

Let others know when their help has been appreciated.

Don’t belittle others to boost their own ego.

Share knowledge with others.

share context with others.

Don’t play office politics.

To wrap it up.

I promised I’d give you 4 things that I learn’t working with great developers. As a result I told you that:

There are more ways to show your passion than open source. You are not your tools. Getting out there on Reddit/Twitter is a great way to learn. Programming is about teamwork as much as code.

Now I’ve delivered on my promise it’s your turn. what attributes do you think are under appreciated in developers?