Scrum Thinks People Are Stupid
nih.blogspot.com.es
nih.blogspot.com.es
Processes at their best are self-imposed sets of constraints that are empirically found to lead to better software (for whatever axes of 'better' makes sense for your team - faster, feature richer, higher quality, etc.) Scrum gives you a baseline set of rules to abide by. Any team who've worked with Scrum for more than a few months will start to tweak, add to or remove from these rules. If they're any good, they'll measure their tweaking and see what works and what doesn't. This is the whole point of having a retrospective.
As another example, if you want to include quantifiable performance bounds in your stories, do so. We work Scrum-ish, and we have a set of QA steps for every story implicit in its delivery (works across supported browsers, feels fast, immune to common security errors, etc). We test for this, and we demo it, but it's not articulated in every story. It's implicit in our work.
A lot of times it requires a change of mindset where managers and executives have to relinquish control and trust developers to do what's right. That might not be the easiest thing in the world.
Many important things in a Scrum process can be achieved through the definition of what is "done". If you know for sure what parts need to be optimized, then optimizing them may be part of getting them "done". If you don't, then there is no point in pointlessly optimizing the whole system where only a fraction of these optimizations will be useful and the rest of them just make the code less readable.
This would eliminate the "optimizing considered harmful" point, because there is group that can work on continuous improvement.
The Feature group get all the credit and are heroes for solving things quickly, while the Maintenance group have to clean up their bloody mess without getting any recognition.
Noooooooooooooooooo! :-)
Seriously though - I'd go as far as saying that it's an organisational anti-pattern. Every time I've seen folk do this it's gone terribly wrong. Some of the behaviours it seems to encourage:
* The feature team no longer get to deal with the messes they produce - the maintenance team does. So the feature team suffers a pressure to not worry about those issues so much, which leads to worse code getting released.
* The maintenance team gets seen as being less important than the feature team, so product maintenance gets neglected.
* You waste a lot of time in pointless arguments over whether something is a feature of maintenance. The distinction often ends up actually being fun vs not-fun.
* Feature development is perceived as being "harder" than maintenance - so all of the best coders end up in the feature team
* Once the previous point gets into play and you have the "good" devs on the feature team and the "bad" devs on the maintenance team you suddenly get being assigned to the latter as a being seen as an insult/punishment (in one particularly egregious case I saw being assigned to the maintenance team being actually used as a punishment! Gack!)
Seriously - total suckage. Don't go there.
(Also curious to know why you don't think a kanban approach is a good one for feature development - since I use it that way myself, and know a bunch of other folk who have that approach too.)
Now, there are some companies who DO develop like that - I'd venture to suggest they aren't the successful ones.
Hire better developers, hire better managers, incentivise the lot of them to care about the thing they're building. Ditch the Agile crap, it's about minimising the damage incompetent people can do to your project, while compromising the best people until they too are just mediocre.
Now I'm watching as another 'Agile' team pushes 6x4 cards around (at least they've managed to adopt a half-assed electronic version of that). Sadly there's no methodology that'll save them, but that's a different problem.
YMMV but we've used several agile ideas (for example iterations, retrospectives, stop-the-line) to great effect to reign in scope creep, increase quality, reduce overtime and make people happier, overall.
It does, however, sound very much like some organisations I've been involved with who have adopted one or two of the Scrum practices, but haven't really understood the core of the process.
Scrum teams should be relentlessly focussed on improvement.
It's a deliberately minimal process which can help in of itself since everything outside of that process is open to question and change.
Even ignoring that of the five regularly scheduled events in Scrum two, arguably three, are specifically focussed on self-assessment and improvement (Sprint Review and Sprint Retrospective are the definite ones. I'd also argue for the Daily Standup/Scrum because of the focus on obstacles in the way of progress).
Now there are certainly criticisms that I have of Scrum - but thinking folk are stupid and not fixing problems are very definitely not on the list. If a team does not focus on improving their process every sprint then they are not doing Scrum by definition.