(This was written loosely in response to this post and
this post. You might want to consider reading those first)
For those of you who don't know, I work at a company that's known for making good software (compared to other software in the medical practice management sector, at least). I'm working on an internal startup (read: new product) and as of right now we're using the Scrum "agile" development methodology. The only positive of Scrum that you can't get without Scrum is that it makes anal product managers worry less. This benefit isn't because Scrum makes the software better, it's because anal product managers love structure in everything. Too bad that doesn't work with software development.
Software methodologies, when followed religiously, mostly turn out mediocre software. This isn't because they don't create structure and control on your development process, it's because they do it far too well. Structure and control is good for testing and bug fixing. But it's terrible for design. Forcing structure and control on to design is fundamentally flawed:
- Good developers should be limited as little as possible. You hired them to be creative and free.
- Good design has a long-term view, where our dreams for grand solutions can play. Forcing people to think only 1-2 weeks in advance turns your development shop in to the knowledge-worker equivalent of an assembly-line. Seductive to a manager, but it won't work.
That's the big thing: Scrum turns software development in to an assembly line. Assembly lines are great for mechanical tasks but software is a complex, creative processes. I'm not saying you shouldn't have some formal task-tracking and clear schedules, but you shouldn't turn software development in to a machine shop. Not everything is a nail, so you can't fix everything with a hammer.
Software methodologies are seductive to developers because it appeals to our desire to apply processes to problems. We like making software because, at heart, creating software is specifying a process that deals with a difficult problem. So some of us think we can do that with software development itself.
Repeat after me: Software Development is not Engineering