Monday, March 13, 2006
« An (accurate) rant on OO | Main | Order of book releases »

Business people hold the common belief that computer people are all the same, just cogs in a machine. Don’t like the color, shape, odor or whatever of one cog, just replace it with another cog. Domestic cogs are too expensive? You can find low-priced cogs overseas.

 

Those of us actually in the computer field know that this is quite incorrect. One “cog” is not at all like another. In fact, the skills of good cogs are orders of magnitude better that the skills of average cogs. Similarly, the skills of bad cogs are orders of magnitude worse than the average.

 

Unfortunately, the array of skills falls on a truncated bell curve; and I think that’s a primary contributor to the way business people perceive us cogs. That, and another issue I’ll get to later in this entry.

 

But the bell curve issue is a real and serious one. And one that isn’t likely to go away. The fact is that the vast majority of computer professionals are competent. Not stellar, not terrible; just competent. And, for technical ability, one competent professional really is much like another.

 

There are also “professionals” who are a standard deviation or two down the skill slope. We’ve all interacted with some of these people. But the fact is that they simply don’t last long; not most of them anyway. That’s why the bell curve is truncated. You have to truncate it, because to ignore this low end would distort the curve, making it useless.

 

The reality is that the vast majority of practicing computer professionals are in the middle of the skill range, but artificially appear to be near the bottom. At least this is true for the business people who don’t exist inside the industry and don’t see that bottom third (or so) of the skill range like we do.

 

This vast majority of very competent and generally hard-working professionals tend to be Mort (in Microsoft’s code scheme). They are as focused on the business as on the technology. Sure they are technologists, but that knowledge is focused on solving the issues of the business in the most efficient manner possible.

 

What’s important to realize though, is that the technology skills of Mort aren’t a differentiator. Even subjectively, the tech skills of most computer professionals really are pretty interchangeable (within a platform at least, such as Java or .NET). But the business domain understanding and knowledge are most certainly less interchangeable. Yet in the end, it is the intersection between the technology and business knowledge that truly differentiates one computer professional from another. It is in this nebulous area of overlap that the cogs become specialized and substantially more valuable than just any other random cog.

 

If business people understood the true value of this intersection of skills and knowledge they’d understand why they can’t just outsource or offshore all the computer work to save money. While the technical skills might be comparable, that area of business-technology overlap can only be gained by in-house staff (or perhaps by consultants who focus on a vertical area of business).

 

Years ago I managed a small group of programmers at a bio-medical manufacturing company. Our small team (of 5) built and maintained software that is a pipe dream for almost every client I’ve encountered from a consulting perspective. But our small team had this intersection in spades. We all understood the business, the people, the politics and we understood our entire technology infrastructure and standards. Coupled with being competent professionals, this little team did what I can say with certainty (having been in consulting for 12 years now) would take a team of consultants 2-3 times the size and at least twice as long.

 

But it is also important to remember that the bell curve and the non-linear nature of skill differentiation combine to create some interesting effects.

 

One standard deviation up the skill curve and you have far fewer professionals. Yet they are likely an order a magnitude better than average. Two standard deviations up the curve and there are precious few people, but they are really good with technology.

 

This is the part business people just don’t get. Hire someone one standard deviation up the curve, get them the business domain knowledge and they’ll out-produce a number of average developers. In theory, it would be even better if you got someone two standard deviations up the curve.

 

But what really happens is this: moving up the skill curve requires increased focus and specialization on the technology. There’s simply less time/room for learning the business domain.

 

The group one standard deviation up still has enough time to grasp the business domain effectively, and that group really is much better than average. We’ve all worked with people like this. People that really grok both the business and the technology and are able to come up with answers to problems in a fraction of the time as many others with whom they work. These are the Elvis persona in Microsoft-speak.

 

Of course the business people often don’t recognize this value, so these people don’t get paid according to their production and so they often leave and become consultants. A simple case of the business people shooting themselves in the foot, turning a would-be gold mine into an adequate resource.

 

Why “adequate”? Well, Elvis as a consultant loses the business domain expertise, and even their increased technical skills can’t entirely compensate. The fact is, Elvis as a consultant is not much (if any) better than Mort as a full-time employee (FTE). That near-mystical business/technology intersection enjoyed by a typical Mort typically offsets most or all the benefit Elvis gets from their technology understanding.

 

This is why Elvis-as-a-FTE is a real catch, and why business people should get a clue and work to keep these people!

 

Then there’s the people that are two or more standard deviations up the curve. They are so busy keeping up with technology that they don’t have time for the business domain expertise. Hell, they often don’t have time for families, stable inter-personal relationships or anything else. Let’s face it: these are the uber-geeks. In Microsoft’s persona system these are the Einstein persona.

 

An Einstein may work in a regular company, but honestly that’s pretty rare. The lack of business domain focus, coupled with the narrow technologies used by any one company tend to make Einstein a very poor fit for a single business. Of course very large businesses have the variety to overcome this, giving an Einstein enough different technologies to avoid boredom. Oddly, the same is true for some very small companies, where dabbling in random technologies seems to be the norm rather than the exception.

 

So most Einstein types are in consulting, working for software companies (like Microsoft or Oracle) or they are in very large or very small business environments.

 

And everywhere but in a software company, they are trouble. The Einstein types directly contribute to making all computer professionals look like cogs. They can (and do) create software that can only be understood and maintained by people at their level. But they are easily bored, and generally don’t do maintenance, so they move on, leaving the maintenance to Mort.

 

But of course Mort can’t maintain this stuff, so it slowly (or rapidly) degrades and becomes a nightmare. You’ve probably seen this: a system that was obviously once elegant, but which has been hacked and warped over time into a hideous monster. The remnants of an Einstein. Perhaps a better name for this persona would be Frankenstein…

 

Just check out this “overview of languages” post, but make special note of what happened when the Einstein types moved on and the Mort/Elvis types tried to maintain their masterwork…

 

Now we know what happened here. But to business people it is likewise “quite obvious” what happened: They hired some bad cogs to start with (the Einstein types), who created a monster and left. Then they hired some more bad cogs later (the Mort/Elvis types) who were simply unable to fix the problem. See, all cogs are the same; so let’s just offshore the whole thing, because some of those foreign cogs are really cheap!

 

In summary, what needs to be done is to figure out a way to get business people to understand that not all cogs are the same. That there are wide variations in technical skill, and wide variations in business skill. Perhaps most of all, they need to understand the incredible value in that mystical intersection where business and technical skill and knowledge overlap to create truly productive computer professionals.

 

The alternative is scary. When there’s thought of having Microsoft unionize, you know we’re in trouble. Unionization certainly has its good and bad points, but it is hard to deny that people inside a union embrace the idea of being interchangeable cogs and use it to their advantage. To me, at least, that’s a terrifying future…

Monday, March 13, 2006 4:14:18 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [11]  |  Tracked by:
"No another brick in the wall..." (Ayende @ Blog) [Trackback]
http://www.ayende.com/Blog/2006/03/13/NoAnotherBrickInTheWall.aspx [Pingback]
"Interesting Finds" (Jason Haley) [Trackback]
"re: Why Do You Hire An Expert?" (Marc Clifton) [Trackback]
"Bricks" (Mark's ravings) [Trackback]


Monday, March 13, 2006 6:14:26 PM (Central Standard Time, UTC-06:00)
Excellent post, Rockford. I think you nail pretty much the basic problem.

Way back here in Colombia where I live and work currently, this problem is somewhat made worse because of the business dynamics the country is going to: Pretty much all large companies have completely gotten rid of any in-house development and outsourced it all. What they are left is with people that *sometimes* have good (and sometimes very good) knowledge of the business, but really have no clue about the technology, and rarely have a clue on technical project management, which does give quite a lot of pain to the poor souls doing the outsourced work :)


At the same time, the companies that do the outsource have little or no business domain knowledge at all (except in very rare cases), and only know the technology side of things (and even that, not as often as one would like). They really couldn't have business-level knowledge even if they wanted to, since that would mean going vertical, and the local market is way too small for that (they would go broke). So, some people get good domain knowledge while working with customers, but that's all in their heads, as soon as they move somewhere else (or to another company), that is gone, as well.


I'm not sure, really, if the whole let's outsource everything movement is making things better or worse in the long run,
Monday, March 13, 2006 8:16:49 PM (Central Standard Time, UTC-06:00)
I not sure why, but something in this blog made me think of Billy Hayes walking the opposite direction in Midnight Express... bad, bad machines. Must have been the "cog" thing. :)

Business domain knowledge of IT folks - overrated
The value of IT employees vs outsourcing - underrated
The value of successful IT teams - way underrated

The best business application development teams are Morts with patience and discipline (discipline to avoid those Einstein wet dreams), with access to the right user/s (who never have time because the reason they know the business is because they are busy doing it).

Einstein for plumbing if you must... but NEVER let them in the business logic. Elegant isn't likely to equal maintainable. :)
Mike
Monday, March 13, 2006 8:50:19 PM (Central Standard Time, UTC-06:00)
The problem, is that the certain Harvard Business Review reading upper management folk (and their associated HR drones) not only believe that IT people are replaceable parts (heck, that kind of Taylorian logic has been around about as long as programmers, or for that matter, *knowledge workers* have) - but if you read much Nick Carr, that the entirety of IT can be eventually reduced to electricity.

Of course, it isn't true, and never will be, but that wont stop people from chasing the dream of commodity IT. I just wish such folks would identify themselves so we could short the stocks of the companies they run.
Monday, March 13, 2006 10:16:46 PM (Central Standard Time, UTC-06:00)
Fantastic post Rocky!

Over the last several years friends and family have asked, "as a software developer do I fear all the outsourcing?" My answer is always, "not really." Understanding and communicating well with the business user is rare. A "cog" doesn't realize that Bill in Sales could care less about XML, MSMQ, Indigo or anything other than when he clicks "Order" the order should be placed.

That's also why, when I interview potential developers I am less concerned with a particular skillset and more concerned with determining if this person understands, from a business perspective, why they made certain design decisions. Just explaining the business problem they solved (or attempted to solve) is a big step - I have found.

Creating some type of "nerd union" only encourages the "cog" mentality. Disaster. As Tomas and Rocky alluded to, how to we fix this problem? How do we make Elvis king?
RacerX
Tuesday, March 14, 2006 8:42:03 AM (Central Standard Time, UTC-06:00)
I like your take on the three personas, and I've seen some of the same things, but I think Microsoft's personas are incomplete. There has to be a persona in between Mort and Elvis. Or maybe below Mort. There are those that are writing real systems and understand the business, but then there are irresponsible programmers who don't realize they are being irresponsible. They use Excel or Access for systems that grow out of control and quickly become maintenance nightmares. . . or they just drag and drop a mess of .Net that ends up being rewritten later (using the same approach - and the cycle continues).

It has to be a spectrum of course. I sometimes wonder about the spectrum between Elvis and Einstein. I definitely agree that good programmers are orders of magnitude better than competent programmers - and thankfully my management sees that (yes, I work for an ISV).

I also think that intelligence is orthogonal to persona. For instance, Mort could be a brilliant programmer, but their focus is on the business problem, not technology, and while all programmers need decent intelligence, an Einstein could have average intelligence but just be more interested in cutting-edge technology and not care much about making business folk's lives better.
Tuesday, March 14, 2006 10:27:16 AM (Central Standard Time, UTC-06:00)
I actually think there is a persona for the Office developer - the power-user/quasi-developer. But I don't know the name of that persona...
Tuesday, March 14, 2006 10:37:51 AM (Central Standard Time, UTC-06:00)
Sour,

"Of course, it isn't true, and never will be, but that wont stop people from chasing the dream of commodity IT. I just wish such folks would identify themselves so we could short the stocks of the companies they run."

Obviously you are talking about folks that think CEO's making 400 x average worker pay is merely a healthy personification of the free hand of the market. :)

Racer,

"That's also why, when I interview potential developers I am less concerned with a particular skillset and more concerned with determining if this person understands, from a business perspective, why they made certain design decisions."

A tip of the hat to you sir... you are certainly bucking the "Two years in THIS" sheep movement. Has anyone else noticed that the value one places on their IT experience is inversely proportional to their age. :) It would seem that if everyone always had to have two years experience in THIS, to get a job in THAT... then everyone is on thier last language... you can't exactly get two years immaculate experience {without a bit of resume tampering}.

Let me throw in another aspect to this discussion... perhaps with a question: If you are a deemed an "Elvis", does that mean you are an Elvis in everything-IT? For example, if you an Elvis or Einstein framework developer, does it necessarily follow that you are an Elvis analyst (hours with the user sucking out requirements)... are you necessarily an Elvis OO designer... or an Elvis UI :) developer? Something happened between Powerbuilder and n-tier... the odds of being pretty Elvis-at-everything went way down. Most will be Elvis at somethings... but Mort on the rest. One {many more} of the clear distinctions I would make for hiring for .NET n-tier projects would be dividing the needs between facilitation {plumbing} and business domain development {analysis, UI, business layer, design/technology choices, standards development, testing, deployment, etc.}. For the most part, the business domain skill needs are ongoing for a company/project, but most/many of the facilitation needs will be on the front end only. For example, you may have to revisit or extend frameworks along the way, but it's not a daily skill requirement. My point I guess is that one of the employee vs outsourcing {more particularly consulting} issues an IT department must face is "what, if anything should we outsource?" I've always thought the answer should be "nothing should be outsourced if at all possible"... and that's from someone who spent the last 20+ years as a contractor. That said, given the current complexity of the learning curve for .NET n-tier, I think the challenges for "inhouse ramping up" have become significant. Morts {and that's what I would call myself} can get the job done post-facilitation. If management brought in Rocky and Magenic {with CSLA in tow} for several months on the front end of "ramping up"... and provided CSLA+ {according to the client's ala carte specs}... then inhouse Mort's could take it from there, even if they didn't have 2 years in THAT. It's not that quality Mort's couldn't get there eventually on their own... it's just a matter of time and money. There is no more valuable learning tool than examples... and CSLA and it's management of prerequisite technologies is one of the best "examples" a .NET shop could be provided {and if not CSLA, some other plumbing deliverable that served the needs}.

I think I had a point in that rant... and I think it is 1) bank on and invest in your inhouse Elvis and Morts 2) bring in outside help to facilitate the Morts, but not to replace them.

One of our major local energy companies replaced the majority of their core IT systems support with an outside vendor {booted loyal Elvis and Morts in the process}. I will never understand that type of thinking. If the problem is IT salaries and rates had gone up to high... then just change them. Of course, repeating myself.... often the one making the claim IT labor costs are too high are being made by someone making 400 x those over-inflated IT salaries. Jeeze... another Sour on this blog. :(

Mike
Saturday, March 18, 2006 9:49:41 PM (Central Standard Time, UTC-06:00)
This is a great thread especially when I consider that I just built a great, nearly perfectly contructed QA system for a medical device company. I do fear that it will be hacked to pieces if I don't stick around to guarantee otherwise.

I was actually prompted to comment on the use of "orders of magnitude" though. I am finding that alot of intelligent people might be misusing the term. Orders of magnitude refers to powers of 10 so one order of magnitude is 10 times the level beneath it (I think most programmers are thinking it is in powers of 2). So if a programmer's skills were orders of magnitude (say at least 3 orders) better than another's, they would be 1000 times better. At that point we're starting to talk about the difference between a person and a chimpanzee... though years ago before the global competition we have now I DID see some programmers produce as much useful code as a chimp.
David Mc
Sunday, March 19, 2006 9:17:12 PM (Central Standard Time, UTC-06:00)
I actually did mean to use order of magnitude, yes. I'm told that IQ is not linear, but rather exponential. So people with an IQ of 130 are waaaay smarter than 100, but people at 150 don't even compare to those at 130.

I really do think that some developers are an order of magnitude better than others, though two orders of magnitude is unlikely to say the least. So in my initial statement where I use a plural there I am quite obviously using hyperbole (hopefully you can forgive me that). But later on I use the singular form, and I mean it quite sincerely there.

I personally know, and have worked with, some people who are easily worth 10 average developers. My guess is that most of us have worked with people like that - they are easy to pick out because they are quite amazing! Even awe inspiring at times.

(As an example, I used to work with a guy who built a system in Access that supported over 200 _concurrent_ users. Whether that was smart or not is beside the point - this guy was (and is) amazing! I'd stack him against at least 10 average developers any day.)
Monday, March 20, 2006 11:49:45 AM (Central Standard Time, UTC-06:00)
I guess we're talking about semantics. I have studied IQ's a little bit and there are absolutely many orders of magnitude separating people based on relative occurrence within the population. I don’t have time to look it up, but I’m guessing there are at least 10 times as many people with an IQ of 130 compared to those at 150 (your basic Stanford-Binet IQ’s which I think accurately predict a programmer’s abilities).

But when it comes to coding output I too have seen developers produce 10 times as much as an average developer: I know because I’ve done it using elaborate code generation. But I also know that there are certain incredibly complex recursive algorithms that I will never be able to figure out. So in those situations I am in the same boat as the average developer who will never be able to build a sophisticated code generator. Algorithmic complexity is simply harder to quantify than functional output, but at the same time it is where orders of magnitude in skill levels is most relevant. If a programmer simply can’t figure something out, there is zero output: a million times (6 orders of magnitude) zero is still zero.

So it looks like as algorithmic complexity increases orders of magnitude in ability and the occurrence of those abilities within the population become more important. Coding output no longer applies. What it boils down to is that someone could write an algorithm in a thousand lines of code that ultimately may be more important than the millions of lines of efficient, object-oriented code I’ll produce using code generation.
David Mc
Saturday, March 25, 2006 1:41:04 PM (Central Standard Time, UTC-06:00)
Rocky’s comments about the bricks in the wall was really great.

Everybody knows that people have been writing articles for some time about making IT a profit center, not a cost center. I wonder why that doesn’t happen.

I am quite sure that it is common for developers to discover that Elvis or Einstein is not the business manager who has engaged them. In many cases a developer has been called in because in addition to a new system the business manager needs some help working through certain aspect of his new business plan, like all of the details. In the end, the business manager gets credit for any successes and the developer gets blamed for any problems.

Most competent developers need to know their technology AND know the business. For spending his/her time gathering this knowledge there is never enough time left to understand the human question. Brother, it is dog eat dog!

I’m not going to start in on vendors who continue to tell us that the next rev technology is simultaneously becoming more powerful and becoming easier. It is not.

Rocky implies that Elvis and Einstein have both strengths and weaknesses. The biggest problem is that human beings lack self awareness, do not know how to communicate with each other, rarely can or do trust each other, often manipulate and take advantage of one another, and so on…

That’s okay, I guess. It is just the marketplace, and if you don’t pay attention to all the complaining it is easy to see that it is a much more comfortable place to be than some battlefield where the dying lay screaming long into the night.

We should take some time to envision the products of cooperation, where Einstein marries Mort’s sister and they have 3 little kids named Elvis1, Elvis2 and Elvis3, which is really the extra 130 IQ points that Mother Nature was looking for.

I am hoping that Elvis3 will write a framework named CSMC2 ( ‘Cause Simple Morts Count Too) that will contain only 10% the number of lines of code of anything imagined before it, and it will work just like a real product. Then, Elvis3 will have a usage guide published by Apress and it will be only 75 pages long and it will be printed in very large letters so developers with white beards can read it without getting sore eyes. Finally, everyone will be happy because CSMC2 is so simple that a mort like me can master it in about 5 minutes. And the forest is green and healthy.
Nathan
Comments are closed.