Wednesday, March 18, 2009

It's possible to have too much education

"Too much" education is a characteristic that is really more applicable to custom software development than it is to standard software development.

If you review the definitions of standard and custom software Standard software programs provide the basis for the custom software development. Not all standard software requires customization. Game software, for example, isn’t customizable.

In other words, people buy standard software because of how “cool” it is.

People buy custom software because it solves a specific problem. Customers want that problem solved, but they want it solved efficiently – i.e. they want it to work, but they want it to work cheaply.

People with advanced degrees in fields like Computer Science are really good at making things “cool”. They are knowledgeable in the latest and greatest trends and techniques in the computer industry and (generally) know how to implement them. So if you are selling something as the “coolest” product on the market, the programmers with the advanced degrees can surely help.

But to the customers of custom projects, “cool” isn’t as important as “cheap”.

My first job after college was working in an instrumentation department for a large manufacturer. (“Instrumentation” is equipment designed to test the products produced by manufacturing.) The instrumentation department consisted of both degreed and non-degreed engineers so I had an opportunity to observe engineers with both types of educational levels.

In all honesty, the non-degreed engineers were better suited to that particular job. Those engineers merely wanted to get something to work. They would start by trying to find something in past designs that worked and reuse that design wherever possible.

At one point an engineer with a Master’s degree was hired to work in the department. That engineer was not content with simply reusing designs that had worked in the past. The new engineer wanted to use the “latest and greatest” techniques and products. Unfortunately those new techniques were more expensive and they also took more time to implement.

The same factors are important in custom software design. While the phrase, “Uses well-tested three-year-old technologies” may not be a very effective sales pitch with standard software, it works very well with custom software.

So the key of custom software (and hardware) is: make it work; the cheaper the better. In my own experience, people with advanced degrees tend to overlook this basic precept.

Having said all of that, I believe that having some formal education in computer programming is very beneficial. I worked with one computer programmer, who actually had an MBA. He was very bright. He had started programming computers as a hobby, and then when he discovered how much he enjoyed it, he changed his job within the company where he worked and went from manager to programmer. However he had never taken a formal course in computer programming. There were many techniques that he didn’t know. For example he had never heard of an “iterative loop” (an “iterative loop” is a block of code within a computer program which is executed repeatedly in order to work on successive parts of a problem resulting in an efficient solution to the problem).

Implications:

A Bachelor’s degree is something to look for in all software development environments. But be suspicious of higher degrees, at least when working on custom software development projects.

No comments:

Post a Comment