Gennady Borukhovich (gboruk)

Feb 23 2010

Why hiring a GREAT developer is crucial

I’ve had the pleasure of working with some great developers and the misfortune of working with some crappy ones.  I’ve seen a developer who makes over $100k cost a company over $250k of rework and customer support because his work sucked so bad!  I’ve seen a developer who gets paid peanuts (he was straight out of college) save a company over $500k because he was so good!  The similarities: both knew Java extremely well and could churn out code like crazy!  The differences: the good knew he was young and wanted to learn, the bad one thought he was the almighty and didn’t want to learn or play nice on the team he worked on.  At the end of the day, I’d prefer to work with a kid straight out of college who knows how to code but who wants to learn more than anything, and who is flexible than a seasoned “senior” developer.  In fact, I cringe when I hear someone say “oh he’s a senior developer so he’s good” that’s bullshit!  What makes him senior?  That he’s been in the field for many years?  When did we stop judging people on results and start judging people on years in a job?

What makes a good developer?

A good developer:

  • Will look out for pitfalls in a design, not just be a code monkey
  • Understands that he/she is employed in order to provide business value
  • Will try to understand the big picture of the project he/she is working on
  • Will have at least one side project in a technology unrelated to the job (shows me that he/she wants to learn more than what he/she is doing on the job)
  • Understands the difference between at least 2 software methodologies and preferably loves Agile (fine, I’m biased)
  • Understands the value of clean code and practices techniques that help him/her keep their code clean & efficient
  • Knows the difference between test driven development and writing unit tests
  • Knows how to research solutions to problems (i.e. how to use google, stack over flow, ebooks, etc.)
  • Doesn’t just code the “happy path”, but also considers as many edge cases as possible/necessary, yet knows when to stop dwelling on edge cases and move on
  • Communicates well with others
  • Understands that everyone’s code has bugs; when someone says “Gennady, I’ve found a bug in your code” he doesn’t say “no you didn’t” and instead goes to investigate the issue.  (bonus point if he/she writes a unit test that fails based on that bug first and then makes it pass.)
  • Can translate geek speak to business speak with ease
  • Detail oriented
  • Will try hard to solve a problem by themselves, but knows when to ask for help

What are the costs of hiring just a warm body?

  • the code will be dirty, buggy, and unmaintainable, resulting in a liability instead of a money making (or saving) asset
  • having personnel issues because the person will disrupt the team
  • *he/she will most likely spend time building features that will never get used, that cannot be re-used, and will only cost you more time and money

Conclusion

A “senior” developer is not necessarily a good developer!  Hiring a developer (contractor or fulltime) should not be because you need someone to code for you, it should be about bringing someone in who can generate real business value without generating a liability.  Make sure that you and your team can work well with this person and that he understands why he’s there getting paid.  A developer is an investment, not a commodity!

(8 notes   /   )

  1. gboruk posted this
Page 1 of 1