The Art, Science, and Engineering of Software
Steve McConnell · 1998
When interviewing candidates for programming jobs, one of my favorite interview questions is,How would you characterize your approach to software develop- ment? I give them examples such as carpenter, fire fighter, architect, artist, author, explorer, scientist, and archeologist, and I invite them to come up with their own answers. Some candidates try to second-guess what I want to hear; they usually tell me they see them- selves as scientists. Hot-shot coders tell me they see themselves as commandos or SWAT-team members. My favorite answer came from a candidate who said, software design, I'm an architect.While I'm de- signing the user interface, I'm an artist. During con- struction, I'm a craftsman. And during unit testing, I'm one mean son of a bitch! I like to pose this question because it gets at a fun- damental issue in our field: What is the best way to think of software development? Is it science? Is it art? Is it craft? Is it something else entirely?