Lately I’ve been hearing the word “hacker” more and more, spoken with pure admiration. People seem to romanticize the notion of a start-up entrepenuer hacking away at his product day and night. I entirely agree that an entrepenuer needs a hacker or pirate mentality. She/he needs to be able to learn, adapt, move fast, and react quickly. But when it comes to software development… well, hackers are not such a great fit.
I’ve been working in software development and leadership for more than 20 years and I can tell you that good sofware requires good engineers. I’ve probably reviewed thousands of code files and worked with more than a hundred software developers over the years and if I have choice I always try to avoid hiring cowboys, hackers or “mad scientist” personalities. I prefer excellent, creative, dedicated engineers.
Software is not art, products are art, software is good craftmenship and engineering.
Good engineers are quite the opposite of hackers. They need to be able to write clean, well thought, documented and well architectured code, not to “hack together” something. The easy way is to hack something up over the weekend. But would the other team members be able to understand that code? will it scale? perform? be secure? will it be bug-free? can it easily be fixed? Good code is code that survives the test of time, not code that does something fancy, fast, and then needs to be thrown away.
Development speed is a measure not to be understimated, but the quality of the resulting code is not of lesser importance. It’s infinitely more challenging to build a successful company based on low quality code. Hiring a developer that is very talented and works very fast is useless if you have to throw away all his code and start over two months later. Moreover, the basis of your software codebase is going to set the tone for years to come. If the basis is bad or was done in rush, you’ll pay the price for a long time.
This makes me wonder what kind of software comes out from today’s popular hackathons. I guess that the better developers, later refactor and improve the code they wrote during the hackathon. That’s fine and reasonable, but not everyone can do that sucesfully, has the time and resources to do it or is willing to go through the pain and actually do it. Which means that many of the nowadays “hacker culture” companies end up with having low quality codebases and huge “maintenance” and “refactoring” expenses down the road. In some cases this even leads to failed products and companies.
Be a hacker entrepreneur, an inspiring product person, or a software engineer. Not the other way around.