Why Software Development Methodologies Suck
java.dzone.com
java.dzone.com
This is a very big reason why I doubt the effectiveness of creating a class of "managers" who's skill set is "managing". How can a graduated MBA lead a software development team without knowing the business or the domain?
Management, to me, is a skill that is learned through experience, not taught in a classroom. And it is in the classroom's where dogmatic methodologies are most prominent.
"How can a graduated MBA lead a software development team without knowing the business or the domain?"
The MBA is the American capitalist equivalent of the Soviet apparatchik.
I do share your suspicion of management as a generic separable activity. Especially since it creates such perverse incentives. It has rarely been my impression that the more managers you add, the better things get.
It's the organization part that's important. Methodologies will work differently depending on the make up of the team. The important part is discussing what works and eliminating what doesn't. Only then can you flush out the gremlins of the mind and focus on the work.
That being said -- too much methodology is a gremlin of another kind. There needs to be enough process and practice to ensure everyone understands what needs to be done and how to consistently go about it. My favorite motivator is responsibility. Let the team members in the trenches make the decisions and make them own the consequences of their decisions. Winning feels so much better that way compared to being led by a dogmatic agile-XP-scrum-master.
This! And this:
Maybe it’s an extension of the deeply held view that from an economic viewpoint, it would be ideal if people were interchangeable.
People are unique, each person has her own talent: you can profit from it and get a nice product, or you can try and annihilate it into a strict methodology and get a sloppy result - but you'll have obtained it with your favourite methodology!
It’s rare to see serious empirical work in SE that’s up the same standards as empirical work in modern economics (either an RCT, or a good pseudo-experiment from a clever instrumental variable), and when you do, there’s little to no discussion of how generalizable the work is. There’s often a paragraph about how the study may not generalize, which seems to be enough to satisfy peer reviewers, but isn’t nearly enough to figure out if the methodology under test has any applicability whatsoever to your setting.
[1] if you're curious, and want to look up what's in vougue, the premier SE conferences are ICSE and FSE
Humans don't like thinking, it's expensive, it requires time and effort. So people like to think once, find an answer, copy and paste that answer over and over, and never think again.
It's the ultimate human mistake, trying to use simple dumbed down solutions to complex problems. The same goes for liberal/conservative/christian/muslim/jewish/athiest/republican/democrat/libertarian ideologies. Any time you group a series of solutions together into an idea, party, or organization you've given them planned obsolescence.
==================================
You might think that puts us in an impossible position when it comes to deciding how to run teams. But consider why software development is not a regular environment, and why it is so hard to run experiments, to acquire skills, and to measure which practices and decisions lead to success, and which to failure. The root cause in all these cases – the reason the environment is not regular – is that the feedback loop between making a change and understanding the result of that change is too long. The word “change” here should be understood very generally to mean change in requirements, change in methodology, change in development practices, change in business plan, or code or configuration change.
There are many benefits to reducing cycle time – it’s one of the most important principles that emerges when we apply Lean Thinking to software development. Short cycle times are certainly essential for creating great products: as Bret Victor says in his mind-blowing video Inventing on Principle, “so much of creation is discovery, and you can’t discover anything if you can’t see what you’re doing.”
But for me this is the clincher: It’s virtually impossible for us to practice continuous improvement, to learn how to get better as teams or as individuals, and to acquire the skills that enable the successful creation of great products and services – unless we focus on getting that feedback loop as short as possible so we can actually detect correlations, and discern cause and effect.
==================================
Jez seems to believe that Development Methodologies suck when they reach the point of getting in the way of developers creating things and when you have long cycle times before you can see the fruits of your labor, wonderful ideas are potentially lost. One of the important aspects of Continuous Delivery is to reduce that feedback loop as much as possible - people start to do amazing things and create wonderful ideas with immediate results to the changes they are making.
I tend to think that just using any methodology at all will tend to give better results because it means the team is at least attempting to manage the process. It usually means that at least somebody on the team cares about keeping some kind of organization. Even if it's a loose version of a methodology. Having no methodology at all can work too, but tends to rely on heroics and can be more stressful for everyone - especially the other people in the company who need to plan their work around the development schedule.