The programming talent myth
Saying that there is a programming skill is a little like saying that someone has a "sports" skill. There are many different skills of programming that are very different, and except some basic "can do fizzbuzz" level, there are miles apart skillsets, where you can be great in one context but bad in another. a few examples<p>- fast hacking / programming contest / hackathon skills - write correct solution fast, not caring about how the code looks or be read later. (great for contests, bad if you do it also at work, code is read more than written bla bla)<p>- software engineering / organization skills - for 99% of enterprise software development, and large chunk of CRUD based web development, you need to be organized, and clean, there are no "algorithms" to implement, you just need to have good concept of MVC, separation of concerns, write methods that do just one thing, meaningful variable names. in these settings, most of the code you write is simpler than even a fizzbuzz, you get data from a form, validate it, save it, do some business logic, generate reports, that's it. This needs a whole lot different skillset than what a "top talent X10 programmer" would offer. This needs planning, design, patience, not trying to change the world, being OK with writing Java annotations, being just a regular professional software grunt.<p>- Library and API designers - there is a great skillset of writing a library that has self explanatory interface, good documentation, and is just a fun to use. People who know how to build a DSL or an API that makes sense, is a whole different skillset than the above 2, and a fizzbuzz test will not be the one that will let that diamond shine in an interview.<p>Programming is not just one skillset just like "music" or "sports" or "writing" is not a single skillset.<p>You can be a great comic actor but a lousy dramatic one, you can be a great sports writer but never be able to get a novel published. you can be a great golf player but never be able to win your 10 year old kid playing soccer no matter what you try.<p>Perhaps FizzBuzz is the common denominator, e.g. you can say that if someone can't play a C major chord on a piano, they are not going to be a pro musician, but anything beyond that, anything that tries to test "programming skill" beyond that level is not far from auditioning a violinist on a chelo just because both have strings.