[Off-Topic] Restaurants and Technology
There are developers and there are developers. There are companies and there are companies. Just for the illustrative purposes of this post I’ll separate at least two types of company: ones where technology is part of or is the core business, where tech-related spending is actually considered “investment”; or companies where technology is just an accessory, considered merely part of “operational cost,” where it only exists to support the business — much of what we call “back office.” For lack of better terms, I’ll call companies where technology is the core business “tech companies” and the others “enterpriseys” for short.

Why am I saying this? Because many decisions are made out of context. Decisions that normally fit well in enterpriseys are made in tech companies and vice versa. It’s one of the reasons for many useless discussions. I can understand why a bank would feel uncomfortable implementing a new technology today — let’s say swapping some of its DB2 for a CouchDB, for example. I can also understand why a medical company would be reluctant to swap its current embedded C programs for, say, .NET micro framework. That doesn’t mean none of them try, but it’s not the case for most, nor that the technologies wouldn’t work.

The same can’t be said of “tech companies.” In that context, trying to use the newest and most advanced should be normal. More than that: creating your own technologies should be normal. Now, the concern is that this might become random, disordered and lead to chaos. That’s not what it’s about. Precisely because of this, tech companies like Google, Microsoft, Novell, RedHat, and several smaller ones have something resembling a Research & Development department, or at least the notion of “research and experiment.” That’s why they go to lengths to hire market professionals on the cutting edge of new technologies, something that doesn’t make sense, for example, in a bank, an insurance company, or a transportation company.
This thinking seems obvious and really is, but for some reason I see people deciding and discussing things outside of these contexts, which is particularly annoying. Newer open-source technologies, for example, make total sense in tech companies. More than that: having employees contribute to open source projects makes even more sense.
To make the analogy easier, I said in “tech companies” the core business is technology (duh). Now think of a restaurant. In this case it’s a company where the core business is cooking good culinary dishes. If in this company I decide, out of context, and think as if the food were merely accessory, I could say: “why don’t we outsource our kitchen and start buying hamburgers from McDonald’s? It will lower our operational cost, we’ll have guaranteed delivery in the quantities we need. More than that, the whole market already knows and likes them.”

Even worse, if the cooks in this restaurant had the mindset: “oh, I don’t want to test that new ingredient because it will be more work. I’d rather just grab the ready-made seasoning at the supermarket.” It’s what I call “scrambled-eggs cooks.” That’s because anyone can make scrambled eggs.
In enterpriseys, normally most of the work is literally “form and report development,” which justifies the existence of Software Factories and the hiring of “coders” — the typical restaurant employee who just heats up someone else’s frozen food in the microwave.
And I always differentiate a “coder” from a “developer.” A developer must have the head of a “chef,” a real cook, trying new things, testing new ingredients, taking risks on new dishes. That’s what differentiates an award-winning chef from an employee who just heats up a grill. Without trying to denigrate the profession, I’m just trying to illustrate a concept. And the problem is when a microwave heater thinks they’re a cook and that what they’re doing is gastronomy. It isn’t.
A caveat: I’m not saying there are no “cooks” in consultancies or enterpriseys. What I’m pointing out is how the company views this kind of service or expense. As an ex-consultant I’m more than aware that there are great minds trying to influence and change the mindset of many industries. A clear example of this is Thoughtworks.

So, first of all, look at which context you’re in. If you’re in a real restaurant, you’re expected to be a cook. Don’t think that acting like a microwave heater is correct, unless you want to drive the restaurant into bankruptcy.
Another example from our world: I think everyone who reads my blog knows Github, one of the most innovative open source repositories of today. Try to wrap your heads around this: it was the work of literally 4 programmers, some of them who had barely just left college. They could use everything that’s considered “acceptable” by the “market.” Read this blog post of theirs: How we made Github fast. If you aspire to be a “chef,” none of the technologies cited should be new to you: ldirectord, nginx, unicorn, rails, drbd, proxymachine, haproxy, redis, ernie, memcached. Want more? At the same time, just recently, they launched two new technologies: Resque and BERT-RPC. I’ll repeat: not much more than 4 people.
Want more? Remember Phusion Passenger and Ruby Enterprise Edition? Those are two boys who hadn’t even left university. They’re “chefs.”
In a tech company, that’s the goal. In enterpriseys it isn’t. Where are you?