What is the difference between a programmer, a good programmer and a great programmer?

One of my all time favorite interview questions: What is the difference between a normal, good and great programmer? To which category do you belong and why?
I’ve worked with all three kinds, and thinking about the question of what the differences are, I realised (not for the first time) that pure coding skill is nowhere near all the story. My answer will explore what else may put you in one category or another. But before formulating my answer, I consider having some assumptions.
My Assumptions:
  • As this is an interview question I took “programmer” to mean “one who works in a software development team”
  • The basics of being a decent employee – turning up on time, dressed appropriately and at least partially sober
  • The programmer can actually code to a decent level, “decent” being whatever is appropriate to fulfil the job requirements
  • The employer doesn’t just want a code monkey. I hope and trust that there are very few companies who want programmers to just “shut up and write the code”, and if you find yourself working for one of those then get out as soon as you can
  • I’m talking of traditional programmers (C#, PHP, Python, Ruby, JavaScript, etc) rather than front-end (HTML, CSS) but many of the points are applicable for any type of developer
Specialties of a Normal Programmer:
  • Unprofessional attitude towards non-geeks and other programmers with different views
  • Opinionated about tech
  • Poor communication skills
  • No sense of humour
  • Not an initiator
  • Suffers from copy-and-paste-itis
Specialties of a Good Programmer:
  • Willingness to learn and research
  • Work-environment match
  • Passion for work
  • Grace under fire
  • Consider people first
  • Laziness
  • Ability to plan according to business perspective
  • Ability to handle failure
  • Team worker
  • Respect for deadlines
Specialties of a Great Programmer:
  • Persistent
  • A Little Insane
  • Skillful at Problem-Pattern Matching
  • Appetite for learning
  • People First
  • Supreme Communication Skills
  • An Initiative and Optimistic Approach
Shortage in talent makes it harder to attract great developers. They are in high demand and they want to work on cool projects. If you want to get the crème de la crème working with you, your company needs to have an exciting product and an inviting culture. Many companies are going the traditional route of offering valuable compensation packages (salary + equity + benefits) while others are looking at new outsourcing models where they can hire curated premium talent on demand.
We, programmers really rock!!!
P.S. - Find out your category and try to adopt the specialities of the programmer of the next level. A perfect coalesce of soft skills and technical expertise will surely make you a great programmer over time.
Enjoy Programming!!!
Previous
Next Post »