Home > Found On Quora, Great Links > What distinguishes a good software engineer from a great one?

What distinguishes a good software engineer from a great one?

I found these from the answers to the quora question – http://www.quora.com/Software-Engineering/What-distinguishes-a-good-software-engineer-from-a-great-one

  • Talent. Some people get software design. Most people don’t. The ones that do are naturals. They’ve been doing it since they were very young, they just understand problem solving, expressing solutions in quality code, debugging, large scale architecture design, etc. The best people I’ve met can produce incredible quantities of correct, well-designed code in a staggeringly short amount of time. Very, very few people can do that, and if they don’t have innate feel for it very early on, it’s extremely unlikely they’ll ever develop it.
  • Discipline. These days it’s fashionable to talk about productivity, flow, etc., but great people spend 99% of their time doing useful work, and almost no time browsing the web or chatting on AIM. Everyone has ups and downs, but most people mistake lack of discipline for natural productivity fluctuations. There are millions of incredibly talented people that never see the light of day because they’re lazy.
  • Experience. Intelligence and talent are not enough – the space of potential mistakes in software development is enormous, and even the smartest people cannot work it all out on their own. Experience builds intuition, and great people make significantly fewer mistakes because they’ve seen them made before.
  • Business-awareness. You can also call it product-awareness. Most engineers (especially the really talented ones) tend to waste a huge percentage of their time making improvements to things that won’t make the slightest bit of difference in the grand scheme of things. Great engineers are aware of the fact the company exists for a purpose – they have a feel for what matters and what doesn’t to the customers. They prioritize their time accordingly, and they can work for months without any direction and still produce useful work because they always understand what’s the next most important thing to do for the company.
  • Social-awareness. Really great people are capable of cooperating with, leading, mentoring, being led by, and being mentored by other people. They’re not jerks. They’re pleasant to be around, and they understand that proving someone wrong and convincing them that you’re right are two completely different things.
  • Able to balance pragmatism and perfectionism – Great programmers have the ability to make both masterful/quick/dirty hacks and elegant/refined/robust solutions, and the wisdom to choose which is appropriate for a given problem.  Some lesser programmers seem to lack the extreme attention to detail necessary for some problems.  Others are stuck in perfectionist mode.
  • Not averse to debugging and bugfixing – Mediocre programmers often fear and loathe debugging, even of their own code.  Great programmers seem to dive right and drill down with Churchill-esque tenacity.  They might not be happy if if it turns out that the bug is outside their code, but they will find it.
  • Healthy skepticism – A good programmer will get a solution that appears to work and call it a day.  A great programmer will tend to not trust their own code until they’ve tested it extensively.  This also comes up a lot in data analysis and system administration.  An average programmer might see a small innocuous-looking discrepancy and ignore it.  If a great programmer sees something like that they will suspect it could be a hint of a greater problem, and investigate further.  Great programmers tend to do more cross-checking and sanity checking, and in doing so discover subtle bugs.

Compiled from answers of Russel Simmons and Slava Akhmechet



  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: