What makes a software developer stand out? What characteristics set him/her apart from the rest of the developers in the software industry? You might say mad kung-fu (programming skills) or exceptional work ethic. But you’ll be surprised to know that programming language skills, work ethic, and even professionalism are really not at the top of the list when it comes to determining a great software developer.
Passion for the craft is probably one of the most obvious answers if you’re asking about what sets apart a truly great software developer. But having passion for what you do essentially apply to virtually any profession. Whether you’re a teacher, a doctor, or an engineer; if you have passion for your work, you will most likely excel in your field. A software developer is a different breed. There are a few different virtues that he adheres to in order to rise above the rest.
If you look at some of the best software engineers and developers out there like John Carmack—the widely recognized guru in the videogame industry and the lead programmer of id Software computer games Doom, Quake, and Wolfenstein 3D; or Tim Sweeney—founder of Epic Games and the original programmer of the Unreal engine, you will notice that they don’t look at all like your traditional clean-cut professionals. They look gruff and rough around the edges. But the appearance of the person has very little to do with the quality of his work, which you will soon find out.
The Most Important Characteristics of a Remarkable Software Developer
Computer programming and development is a science, and one of the most fundamental traits of a good scientist is curiosity. It’s curiosity that drives an individual to discover new things. And a great software developer will always find ways to satisfy his curiosity. Some of the greatest inventions and most amazing innovations in history all started with people just trying to feed their curiosity. A great software developer will not be satisfied with what he has learned so far. It’s his curiosity that drives his will to learn and discover new things.
Curiosity brings new discoveries and discoveries bring new challenges. This is what drives a great software developer. The idea of overcoming every challenge he puts on himself is more important than any praise or recognition. He will constantly look for new problems to wrap his mind around. He looks for better ways and methods to crack previous problems. If you take a closer look at a seasoned programmer’s accomplishments, you will see that they are marked with a series of challenges that were tackled one-by-one until there is nothing left to do but move on to another project.
Pessimism is not exactly the kind of trait that you would want for you employees to have, but when it comes to software developers, being pessimistic is a positive thing. You would want a developer in your team who is pessimistic towards his work. A pessimist will always question his work and think about what can go wrong and how he should deal with potential problems effectively. This attitude will most likely result in an almost flawless software design.
A pessimistic developer is usually the one who finds flaws in ideas. He will question his own work, as well as those of others’. Because of this trait, most great software engineers often get a bad rep as being narcissists and know-it-alls. The important thing to remember is that they don’t do this for the pleasure of tearing down someone’s work. They are doing this to make sure that every aspect of the idea that turns into projects are well thought through and that potential problems are dealt with effectively. Believe it or not, a good team leader will go for a pessimist any day of the week when it comes to software development.
Yup, you read it right, laziness. It’s not a common thing to see laziness as a positive trait for any profession. But this is not like “turning up late for work” or “calls in sick 3 times a week” kind of lazy. Rather, it’s the kind of lazy that makes the individual avoid doing repetitive tasks or wasting time doing things that a computer can do or even avoid future work by painstakingly writing better code the first time around. This kind of lazy attitude produces better work, believe it or not.
John Backus—lead developer of the FORTRAN programming language—once said, “Much of my work has come from being lazy. I didn’t like writing programs, and so, when I was working on the IBM 701, writing programs for computing missile trajectories, I started work on a programming system to make it easier to write programs.” This kind of lazy is what makes an exceptional software developer. It makes you do better on every task even if only to avoid doing more difficult work in the future.
Some of the most prominent software engineers and programmers in history have been called narcissists, evil geniuses, godfathers of “something,” quirky, gurus, and all kinds of labels you can think of. But, there is one title that holds true for almost every single one of them; they are thickheaded perfectionists. And perfection requires a high level of meticulousness that all good programmers and developers possess.
Many great software developers have a diehard approach to detail. They expect consistency and perfection in their own work, as well as from the others in their team. This kind of attitude is often misconstrued by others, which again gives great software designers a bad rep. But if you want to produce the best quality software, you will want a meticulous software developer on your side.
In any other profession, hubris is certainly a negative trait simply because society teaches us that being humble is the better and more moral virtue. But when it comes to software programming, being a bit arrogant and having a sense of pride towards his work can push a mediocre developer to do better. This is a trait that makes great software programmers write the best codes and maintain top quality software. It pushes them to stay consistent and demand perfection in their project so that their peers won’t have anything bad to say about their work.
This is not to say that software programmers should have inflated egos; only that they should know how to take pride in the work they do. For if they do, only then will they be able to prove to people how valuable and exceptionally good their work is.
Excellent programming language skills, above average work ethics, and professionalism are important traits for any software developer. But, those who want to stand out and make a difference know that the five out-of-the-box skills mentioned above are what matters most.