Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

There are now a a variety of programming methodologies: Scrum, Extreme Programming, Kanban to just name a few. Most of them combine several more basic techniques (for example frequent iterations). However, nearly all of them state that their combination of technics is the only way to write good software.

I don't think that there is one way that's best for each and every project. Instead I'm interested in independent scientific evaluations.

  • What basic techniques work best for which kind of project?
  • Is there any advantage in the combination of certain techniques?

As I don't have time to go through primary literature I'm especially looking for a book. I know that there is Peopleware, but it is a bit old. There are already several related questions (Are there any scientifically rigorous studies of coding style principles?, Scientific evidence that supports using long variable names instead of abbreviations?...)

share|improve this question

closed as not a real question by Mark Booth, Mark Trapp Jan 24 '12 at 16:32

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

5  
"However, nearly all of them state that theirs is the only way to write good software." Really..? Sources on this? –  Eoin Carroll Jan 24 '12 at 13:53
    
on XP: de.wikipedia.org/wiki/… (sorry in german, but Google translate will help) and Ken Schwaber "there will be no Scrum 2.0" (tech.groups.yahoo.com/group/leanagile/message/1358) –  ACNB Jan 24 '12 at 14:14
    
more appropriate they state that there combination is the only way to write good software. I'll fix that. –  ACNB Jan 24 '12 at 14:15
1  
    
Hi ACNB, this is too broad a question for the Stack Exchange style of Q&A: feel free to ask about the development methodologies you are interested in separately. –  user8 Jan 24 '12 at 16:36
add comment

2 Answers

As much of a fan of empirical data with rigorous statistical validity, I don't think you can scientifically prove that one methodology is any better or worse than any other.

There are many factors that go into chosing a methodology. In Rapid Development: Taming Wild Software Schedules, Steve McConnell identifies a number of factors: level of understanding of the requirements, level of understanding of the architecture, desired reliability, risk management, schedule constraints, amount of process overhead, mid-project "course corrections", ability to provide the customer with visibility, ability to provide management with visibility, and sophistication of the development team and management. There are others, as well, such as organizational culture, so there probably isn't an exhaustive list anywhere.

Even given the exact same project, there is also the team factor. If you take a team that has consistantly delivered software using the plan-driven spiral methodology and throw them into Scrum, they are going to experience a decrease in productivity, an increase in thrashing, and have to overcome a new process model before they can come around to being successful. Even though another methodology might be more suited, there's always the business need to actually deliver the software. That's why process improvement efforts are frequently long-term efforts and not overnight - major changes are shocking to a team and (even if the methodology might be better suited on paper) can cause a decrease in productivity.

I'd recommend picking up Rapid Development, along with Software Project Survival Guide (also by McConnell).

share|improve this answer
1  
There are an (almost) infinite number of degrees of freedom, making science relatively difficult to apply. Maybe economics would be a better starting point. –  S.Lott Jan 24 '12 at 14:58
    
@S.Lott That's a good point. The most influencial work that I'm familiar with in software engineering economics is Barry Boehm's Software Engineering Economics. However, it focuses on making program-level and project-level engineering decisions based on risk, cost, and value rather than on chosing a lifecycle methodology. –  Thomas Owens Jan 24 '12 at 15:11
    
Of course it is not easy to do science in this field but for example coding wars seem to produce fairly reliable results. –  ACNB Jan 24 '12 at 15:31
    
@ANCB It's relatively easy to perform studies in software engineering, in some areas. There's an entire area of study devoted to empirical software engineering. However, once you enter the realm of project management, you have to contend with people, and it becomes much harder to develop rules and absolute facts. –  Thomas Owens Jan 24 '12 at 15:32
    
Excellent answer Thomas, I think some of the points here would add to your answer to Are there any studies on the Efficiency/Effectiveness of Agile vs Waterfall?, especially since this question has now been closed. –  Mark Booth Jan 24 '12 at 17:16
show 1 more comment

The most important factor by far in a software project success is not the methodology. It is the team.

share|improve this answer
    
+1. And I would add that a good team can be slowed down when choosing the wrong methodology. –  Giorgio Nov 12 '12 at 7:03
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.