I've heard on a few occasions where someone tells me, "You know that's a great idea but we just can't do it. We're not Google." It can also be subsituted with Amazon, Yahoo, or any other big web firms. Actually, once I've even heard the excuse, "But we're not a tech firm."
The problem with these kinds of excuses is that by using them you form a preconceived notion that you just aren't as good as other companies -- including your competitors. Thisdoesn't have to be true
When Google first launched in 1998, it wasn't Google either. Yes, today they employ a lot of good programmers, including many with Ph.Ds, but is that what really makes them great?
No matter what type of company you look at -- be it a financial firm, a media company, or an online book store -- developers are developers. Yes, there may be some bad apples, and maybe some are great hackers, but you can always find good developers no matter what kind of business you run.
"You don't need rock stars."
The difference between the hottest Web 2.0 companies and the ones lagging behind isn't necessarily the developers, but the work environment. As DHH said in his talk F*ck the Real World, "You don’t need rock stars, but a rock star environment. Your employees are not stupid " A great company respects and trusts its developers. If you want to attract good programmers, you need a work culture that encourages creativity and growth.
No good programmer wants to just be told what to do all the time. They want a chance to experiment with things. A chance to be creative. Who knows, they might just stumble across a million dollar idea. There are two approaches I've heard of to foster the inner creative geek in each employee:
- Designate one week of each month as geek week, in which developers can use the time to geek out and code whatever they want.
- Google's 20 percent time, in which each developer is required to spend 80% of their time on required work tasks, and the other 20% is used to work on side projects.
As for growth, it goes without saying that a good programmer is one that never stops learning. Growth in the workplace usually comes in the form of open communcation among developers, paired programming, and code reviews. These are important not only for growth, but it also produces higher quality products. Double win!