The relationship between theory and practice in software engineering

I to say something radical at the outset of this new incarnation of an old Communications column. I believe in software practice, and I believe in software practitioners. And, as a corollary to those beliefs, I do not agree with those who put down software practice and software practitioners. There was a time, a half-dozen years ago, when a software engineer taking that position would have been laughed out of the halls of academe and the pages of the computing literature. Cries of “software crisis” opened nearly every article on any software engineering topic, put there by an author who believed his (or, occasionally, her) new proposal was the solution to this apparently rampant crisis. Software was always over budget, behind schedule, and of low quality, the crisis thinking said. How could anyone possibly believe in practice or practitioners? Fortunately, these things are changing. The computing world—and especially the societal worlds at ACM and IEEE—are beginning to be open to what was once only a contrarian viewpoint, that software practice is doing just fine, thank you. A few respected voices are beginning to cry out that software practice is not in crisis, and in fact is doing a pretty good job. Such application domain areas as aerospace, banking, process control, productivity tools, and reservation systems are thriving, woven successfully into the threads of our daily lives. And computing folks such as Al Davis, Peter DeGrace, Tom DeMarco, and Nicholas Zvegintzov are not bashful about pointing at software’s successes, and decrying those who cry “crisis.” Some, in fact, are willing to go even further. Not only is practice OK, these people say, but there are some important flaws in the theory and research area of the field that may be of more concern than the software crisis ever really was. Theorists who fail to evaluate their ideas in a practical setting before advocating them are of particular concern. Fred Brooks, Norm Fenton, Dave Parnas, and yours truly have taken this viewpoint in print and public forums a few times, and been surprised at the force of both those who support, and those who oppose, this viewpoint. So this column will, in the future, be a sort of ode to software practice. I want to talk about some of the good things that practitioners do, about The Relationship Between Theory and Practice in Software Engineering