The Enterprise - boldy going where ?
James Mcgovern's article on Ruby (and by extension, I guess Python, PHP, Scheme and other possible solutions out there that don't begin with J or end in a hash) can be distilled into a single sentence:
Ruby ain't ready for the enterprise because the big enterprise consultants haven't noticed it yet.
I guess James is an enterprise expert so he must know what he is talking about. I am not going to argue with him, but the article got me thinking:
What is the enterprise ?
This is a term that over the last half-decade or so (maybe longer) has been used to promote or disparage various languages, platforms or frameworks. "It's a toy language, not ready for the enterprise", "Microsoft servers are OK, I guess, but not really for the enterprise, like Solaris", that kind of thing. What is this mighty enterprise ?
Let's ask Wikipedia:
- an attitude or a character trait conducive to undertaking bold ventures or actions, especially ventures involving risk
- a bold venture, particularly one of exploration or one that seeks inordinate profit
- "Boldness, energy, and invention in practical affairs." (according to DANFS
Economics and business
- Almost any business or organization can be called an enterprise, possibly led by an entrepreneur.
- Enterprise Rent-A-Car, specific car-rental agency:
- "Enterprise" was the informal name of Stanford Technology Trading Group International (STTGI), a U.S. weapons-dealing company involved in the Iran-Contra Affair.
- Subud Enterprise Services, any entreprenurial activity undertaken by a member of the spiritual organization Subud.
- Enterprise edition: A large commercial establishment (more specifically when viewed in marketing terms, and especially for the purposes of computer marketing and/or licencing.
- Farm enterprise: component of a farm business, e.g. a farm may include an arable enterprise and a dairy enterprise
- Free enterprise: a type of economy; a loose synonym for implemented capitalism.
What James is therefore saying is that big companies require enterprise solutions. An enterprise solution is therefore one that is specifically designed for a big company.
What does a big company require ? What the difference between, say, General Motors and Joe's Auto Repair Shop ?
* Number of employees: in the thousands
* Number of customers: in the millions
* Layers of management: more than the number of steps in the Great Pyramid of Cheops
* Speed: like the Titanic in an ocean of treacle
Yet both are businesses, both follow the same basic laws of economics. Maybe GM has more political power than Joe's Auto Repairs, but at the end of the day they have profits, costs, customers, expenses.
The core difference, though, is that Joe is focused on getting work done: fixing customers' cars and changing tyres and oil. He wants to get jobs done, payments in, bills and salaries paid. He is focused on results. Big companies, beholden to shareholders are focused on short-term profits too, especially their CEOs; but their layers of bureaucracy are more interested in processes and paperwork: CYA. CYA is the single most important thing about the enterprise (and funnily enough and completely self-contradictory, "enterprise" solutions are also applied to government agencies too !). THAT is why Java and C# and waterfall development and Oracle rule. As James says, it's not about results, success, productivity, customer satisfaction, quality, all of those things that make our lives as both users and developers a little bit happier. It's about following standards, even when those standards are like old roadsigns pointing to a collapsed bridge.
I'd rather make Joe and his customers happy.