TekMonkey.org: "Software Engineering, Not Computer Science
January 13, 2006
All credit goes to Steve McConnell, I merely transcribed it here for convenience. The original PDF can be viewed here.
* 'A scientist builds in order to learn; an engineer learns in order to build.'
- Fred Brooks
When interviewing candidates for programming jobs, one of my favorite interview questions is, 'How would you describe your approach to software development?' 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 themselves 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, 'During software design, I'm an architect. When I'm designing the user interface, I'm an artist. During construction, 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 fundamental 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?"