Crafting and Engineering Software: Contrast What it Might Mean to Engineer Software With What it Means to Craft Software
The software engineer Steve McConnell notes, "The dictionary definition of engineering is the application of scientific and mathematical principles toward practical ends." (McConnell, 1998) He believes that is what most software designers do, namely they apply scientifically developed and mathematically defined algorithms, functional design methods, quality-assurance practices, and other practices to develop software products and services. To engineer software thus is to view a set of real world problems and to ask one's self what works and what does not work, when meeting the needs of the product's potential range of services, according to professional guidelines.
But although this may be useful when engaging in the architectural design of the project, and determining the overall processes of the program, it may be equally useful to think of one's self as a craftsperson, with a hands-on, non-technical and more spontaneous and less professional approach. "During construction, I'm a craftsman," notes one engineer quoted by McConnell. In other words, after the engineer within the speaker troubleshoots the program's problems, and understands the full range of the program's requirements and specifications. Then he employs the practical tools and crafts of his trade to their best advantage in software construction.
While it is true that software engineers do not have an "absolutely stable core body of knowledge, and knowledge related to specific technologies will never be very stable," they "do have a body of knowledge that is stable enough to call software engineering. That core includes practices used in requirements development, functional design, code construction, integration, project estimation, cost -- benefit trade-off analysis, and quality assurance of all the rest." (McConnell, 1998) In essence, software engineering has the body of accepted troubleshooting procedures to give it the professionalism of engineering, while it still has the spontaneous 'what works for now with the tools I have,' approach that a craft often has, in a creative and interesting fashion.
Works Cited
McConnell, Steve. (January/February 1998) "The Art, Science, and Engineering of Software Development. Best Practices. IEEE Software, Vol. 15, No. 1. Retrieved 13 Jan 2005 at http://www.stevemcconnell.com/ieeesoftware/bp13.htm
Our semester plans gives you unlimited, unrestricted access to our entire library of resources —writing tools, guides, example essays, tutorials, class notes, and more.
Get Started Now