Wild Man's Shore

Monday, March 20, 2006

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:

Psychology

  • 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
So the word "enterprise" conjures up daring-do, courage, initiative, energy. Go Enterprise !

And further:

Economics and business

OK forget rent-a-car agencies, spiritualists and US Marine colonels with suitcases of used dollar bills: an enterprise is basically any kind of company or commercial entity. In marketing and IT firms, it refers to a large company: what in the US they may call "Fortune 100" or in Finland a few companies like UPM or Nokia. Enterprise therefore in this context means "big company".

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.

It's a consultant's life

This month I took the plunge into consultancy, leaving the shores of a paid salaried position for the choppy seas of the private consultant. Immediately I became inundated with work, hence the reason for not blogging lately. The hours are crazy: I work at home most of the time, so I get to be a full-time dad for our one year old, which means I start work in the early hours to avoid distraction (my wife is a baker, so she often starts at 3 in the morning) or late into the night. Only now am I getting my sleep patterns into something regular. Plus, I do work for overseas clients so I often have to work to their time zone.

I have a "toiminimi" ("working name") which is a kind of private, one-man company, for handling the billing; this cost 70 euros from the magistrate's office. A few rather obvious points:

* Get an accountant ! People who mess up their taxes lose big, from what the Finns call the "tax bear".
* Set up a separate account for handling customer bills and company expenses.
* You have many bosses as opposed to one boss.
* And these bosses don't pay a regular salary ! You have to bill them for time/results.
* No results, no pay !
* No office politics, but can be lonely
* "Think globally, act locally" : if you work in the net there is work around the world. Not all development is done by bug big outsourcing companies.

It's fun from a development point of view. Most places I have worked you tend to not only work in one language/framework but on one product for months or years on end. Now in a single day I do Python, Ruby, PHP and SQL in a variety of projects. But there is extra stress, working at home with all its distractions and knowing if you screw up or miss a deadline you don't get paid.

I'm going to do this for a month or so while I wait for some job offers so I can compare how much money is coming in from this.

It's quite an adventure.