It is a one size fits all kind of deal. You just have to try putting it on the right appendage. The difference here is that surgery is a service and software is a product. I think that basically they're the same. You "develop" a service the same way you would develop a product. You practice. In effect, practice is the iterative design of a service, just like rapid prototyping is the iterative design of a product.
Now, the surgeon can't just crack open your head and see what happens, but before he ever does that he's going to have practiced cracking open heads and mucking about with them somewhere (probably on a cadaver). He's probably going to have made some mistakes doing it too, and learned from them the right way to go about cutting up people's brains.
Likewise, you don't just ship the first piece of software you scribble out and see what happens either. Now, certainly with a web 2.0 AJAX calendar-organizer-automated-fish-feeder there's a greater margin for error than brain surgery, but it's a difference in degree, not in kind. If you launch a site that just returns "Internal Server Error" when someone surfs to it, you're going to be about as successful as a brain surgeon who never learned how to handle a scalpel.
So the surgeon cutting up a cadaver seems to me to be the same as a programmer blasting out a broken version 1.0 of his software. They're both trying something out in a situation where they can fix mistakes and reincorporate them to product. The surgeon makes a cut, looks to see if it's in the right place and is the right size, if not he keeps trying until he gets it right. When he can make the right cut every time without thinking about it, his service of cutting people is finished being developed. Likewise, the programmer writes some code, and checks if it produces the right output. If not, he tweaks the code until it does. Same thing. You can't compare a finished version of one product (performing brain surgery) to the development process of another product (writing software).
Now, the surgeon can't just crack open your head and see what happens, but before he ever does that he's going to have practiced cracking open heads and mucking about with them somewhere (probably on a cadaver). He's probably going to have made some mistakes doing it too, and learned from them the right way to go about cutting up people's brains.
Likewise, you don't just ship the first piece of software you scribble out and see what happens either. Now, certainly with a web 2.0 AJAX calendar-organizer-automated-fish-feeder there's a greater margin for error than brain surgery, but it's a difference in degree, not in kind. If you launch a site that just returns "Internal Server Error" when someone surfs to it, you're going to be about as successful as a brain surgeon who never learned how to handle a scalpel.
So the surgeon cutting up a cadaver seems to me to be the same as a programmer blasting out a broken version 1.0 of his software. They're both trying something out in a situation where they can fix mistakes and reincorporate them to product. The surgeon makes a cut, looks to see if it's in the right place and is the right size, if not he keeps trying until he gets it right. When he can make the right cut every time without thinking about it, his service of cutting people is finished being developed. Likewise, the programmer writes some code, and checks if it produces the right output. If not, he tweaks the code until it does. Same thing. You can't compare a finished version of one product (performing brain surgery) to the development process of another product (writing software).