From Art Form to Engineering Discipline?


This is the title of a new paper that is to be published in the IEEE Annals of the History of Computing by Christopher McDonald.  This paper starts to answer how software processes became so formal and heavy-handed in the 70’s and 80’s.  It is interesting to see Barry Boehm advocate waterfall in the 70’s and then back away from it in the 80’s with his spiral process.  It is also interesting to see that iterative software was alive and well in the late 80’s and the Agile movement did not invent it (as many Agile zealots will want you to believe).

Following this paper’s narrative; you can see that Software Engineering was born out of the so-called “Software Crisis” of the late 60’s and early 70’s.  The answer was scientific management espoused by Frederick Winslow Taylor.  This did not work as they were comparing apples and oranges.  Taylor was dealing with the mindless work of blue-collar factories workers; while software is engaged in by highly educated, creative white collar workers.

It seems that a lot the first ideas of “Software Engineering” came from this factory analogy.  Interchangeable parts and software components is another example.  There is a reference to the quality movement in the early 1900’s that I’d like to explore more fully.

Overall, this is a good read and elucidating history of Software Engineering.  As the military’s influence on software development wanes; it becomes less relevant.  But the history shows you how we got to where we are today in software development.

Software Education in the 21st century


It is unfortunate that today’s software practitioners are put at such a disadvantage by spending four years of their lives studying things that are totally irrelevant to creating software (i.e. a BS in Computer Science).  I have yet to use any calculus in my career.  Discrete Mathematics was also a total waste of time.  P = NP is nifty, but not really relevant to my profession.

That is why there is such a brazen turn against the term software engineering.  This is where things such as the Agile Manifesto come from.  It is the pent-up frustration of software developers finally saying “ENOUGH”!  I want to get things done, I don’t feel like studying so much theory that I forget why I started Computer Science in the first place.

This era in time is analoguous to the late 1800’s in which established universities such as Harvard, et. al. were still teaching Latin and other useless subjects.  What came out of this was MIT, all the A & M schools, Virginia Tech, Texas Tech, etc.  Universities that actually prepared there graduates for the real world.

The big universities are so large that they cannot be turned quickly and today’s software profession changes every month.  A new model of education needs to be developed lest these big university programs are replaced.  There is a vacuum right now for certifying and educating software developers.  Either universities need to change, and change quickly, or the industry will find another way.   But time is running out….

What is Software Engineering’s Greatest Achievement?


As I was trying to define engineering tonight; I was struck by this part in the Wikipedia article on the subject:

The Pharos of Alexandria, the pyramids in Egypt, the Hanging Gardens of Babylon, the Acropolis and the Parthenon in Greece, the Roman aqueducts, Via Appia and the Colosseum, Teotihuacán and the cities and pyramids of the Mayan, Inca and Aztec Empires, the Great Wall of China, the Buddhist Stupa and Yoda Canal in Sri Lanka, among many others, stand as a testament to the ingenuity and skill of the ancient civil and military engineers.

What is software engineering’s great achievement that will be looked upon 500-1000 years from now with awe?  At first I thought the Internet, but that is really not all software engineering.  It’s mostly electrical and network engineering.  But, the World Wide Web is software!  And it runs on the Internet.  A little research brought up the initial proposal for the World Wide Web written by Sir Tim Berners-Lee and R. Cailliau.  It almost gives me goose bumps to read it.  He does a requirements analysis of the WWW for crying out loud.  His description of the architecture takes about five sentences!  But the best part, at least in terms of showing that the WWW is a result of software engineering, is that he asks for 4 software engineers and a programmer in his proposal!!!  Take a look at history in the making….