I originally understood and believed (what I wanted to believe, in fact) that software development trade is a branch of engineering discipline. I studied the work of Watts Humphrey, Mark Paulk and others at SEI and related organizations, looking to improve my understanding and my practice of software development. I was especially interested on these because I have been developing software for a living since some decades.
Experience by experience, I have found mayor parts of software engineering body of knowledge simply doesn’t fit with my thought process in practice. I was utterly surprised when I found that many, many practitioners –even many giant practitioners of our industry– reported similar observations. Those individuals had been practicing software development trade for many years, successfully evolving families of software products with their own hands at sustainable pace.
If software engineering is not going to be what those ‘software engineers’ do for a living, what else could be then?
Further objective research was in order, looking the seminal work of authors and trying to review the concepts from the original practitioners.
There has been surprise after surprise, many, many popular notions have proved been just plain wrong. An example, the popular software lifecycle process known as “waterfall”, which invention is typically attributed to Dr. Winston Royce because of his work ‘Managing the Development of Large Software Systems’ is just another mal-interpretation, Dr. Royce never said “waterfall”, indeed he concluded that doing analysis, design, etc., activities (not phases), sequentially was not going to work, that each activity should be revisited.
Our industry is very, very young; many popular notions are misleading and the lack of consideration to our own history is a root source of such a condition.
Probably this condition plays a factor in many outsourced jobs to offshore development shops recently.