Software “engineering” is very different from every other field of engineering–it’s done almost freehand. In the relatively early days of software development, the gears began turning to make software development a licensed trade. Imagine a world where programmers are required by law to pass a certification exam in order to write software. It makes a certain degree of sense, I suppose; millions of lives are at the mercy of software every year in hospitals, airplanes, and traffic lights. So how is it that such a system is not in place?
The property of software engineering that sets it so far apart from other areas of engineering is the low barrier to entry. Within 19 years of their invention, personal computers resided in over 50% of American homes. Today that figure is much higher. Excellent software development tools are often free. This is not the case with, say, mechanical or civil engineering. The software to support those professions is prohibitively expensive for a hobbyist, and the actual execution of the craft (construction) is laughably far from the reach of an enthusiast.
Because the barrier to entry in software development is so low, hobbyists are everywhere, in varying degrees of mediocrity. A very few develop incredible skills with no professional training. Most, however, are complete incompetents claiming that their self-taught abilities are somehow more… 1337 than any formal Computer Science education.
With about five years’ professional experience under my belt, I’ve come to the following conclusions about the role of education in programming prowess: (more…)