Well there are various approaches to building software, which affects the
perception on the "right" way of building software.
- The engineering perspective: Building software is like building a bridge -> Emphasis on requirements & design documentation
- The factory perspective: Building software is like manufacturing -> Emphasis on process
- The mathematical perspective: Building software in a way that every component is provably correct -> Emphasis on specifications
- The art perspective: Building software is a creative activity -> Emphasis on individual coding
- The craft perspective: Building software is about creating something -> Emphasis on coding & testing
The traditional view has been the engineering perspective. Agile tends more towards the craft notion. Also there is the perspective of coding as an individual activity or as a group activity. Popular notion is that it is an individual activity, with the image of the lone hacker coding away into the night. IBM commissioned a study in *1978* where they found only about 30% is individual, and 70% of coding is done as a group (2 or more people). Traditional process view has been of coding as an individual, agile processed tend to favour the group view.
I like Alistair Cockburn's view of software development as a cooperative game -
http://alistair.cockburn.us/index.php/Software_development_as_a_cooperative_gameThat's very well put, thanks!
Of course, in reality, Software Engineering is probably all of the above (and more) to varying extents. That might also be why treating it as any one of them, while solving some problems, introduces others. It is nevertheless important to realize that there is "No Silver Bullet." There is a very well known paper titled as much, a must-read for all Software Engineers:
http://www.lips.utexas.edu/ee382c-15005/Readings/Readings1/05-Broo87.pdfA small clarification, just in case: I'm personally not against Agile methodologies per se, but I'm definitely against any methodology/technology being tauted as the silver bullet that is going to solve all the worlds problems (let's get real, we're engineers, not beauty queen contestants

.)