I want to come back to the discussion about Agile vs. CMMI. After a presentation about the
I want to come back to the discussion about Agile vs. CMMI. After a presentation about the subject in UTN (National Technological University) in Córdoba a couple of weeks ago, I started thinking a bit differently on the subject. I thought that instead of asking the question “Are CMMI and Agile Methods compatible” the important question is “Should CMMI and Agile Methods be compatible?”
In other words, if they are not compatible, so what? Isn’t software development an incredibly wide field so as to need different approaches to different problems? Didn’t for example Management benefit during its evolution from new theories that presented different points of view about how organizations should be managed? CMMI and Agile methods present many incompatibilities (at the CMMI practice level and not at the goal level), and one of the reasons is that they follow different management theories.
I always say that the best software engineer is the one that knows many different theories, tools, techniques, management approaches and so on. And has the judgment to recommend one or the other depending on the specific needs of the project. Off-shore outsourcing and distributed teams, for example, present unique challenges.
With such a wide field, the search for a unifying theory is wrong and doomed. I think that the future of Software Engineering is in specialization. Once specializations become clearer, it will be easier to recommend where each approach works better, and this applies both to technical and non technical issues.