good chemistry is complicated, and a little bit messy -LW |
|
PerlMonks |
Re: Software Projects In Real Life: "I See Dead People"by mr_mischief (Monsignor) |
on Jun 23, 2015 at 21:29 UTC ( [id://1131741]=note: print w/replies, xml ) | Need Help?? |
Oddly enough, one of the first things they teach in Scrum classes is that not every type of system is a good fit for Scrum. Some software gets very over-specified. This usually somewhere between the customer and the developers by someone called a Business Analyst or a Product Specialist. Things that were never asked for by the customer get added, the logic and basic control flow of the overall application are specified, and then it's lobbed at a development team. Then the developers spend a lot of time developing something, send it back out, and the customer is pissed they spent so much time and cash waiting to get delivered something that is half useless to their case. Those over-specified type of projects, it turns out, can have iterations done in which small amounts of work are added to the whole. The core idea can be fleshed out. Then Important Feature A can be added. Then work can move on to Important Feature B. Then the customer may even be able to use the project while work continues on Not-Quite-As-Important-Feature C. The customer asks the Product Owner for some things. The Product Owner makes sure the developers know what the customer wants, even if that means the PO goes back to the customer several times at the request of the developers. Then, get this, the people developing the software get to decide how to best develop it. The UI designer designs the UI. The programmers write the code. The technical writer writes the documentation. The programmers and/or the QA agents (some Scrum teams use a dedicated QA person and others have the main programmers do all the automated test suites) test it. Then they show it to the PO. Then the PO and the team schedule a meeting to show the customer what they've produced the last two to four weeks. The goal of every two to four week sprint is to make a commitment about what to deliver, work on it, and deliver it as a potentially useful part of the overall project. The project may not be totally useful until a few sprints go by because the customer may need multiple features from different sprints as their initial deployment. This works quite well for a lot of types of software. What type of software is a good candidate for this flexible specification and iterative delivery? Business process software is one. Document management is another. A shopping cart, content management system, forum... pretty much anything that's a basic CRUD interface with maybe some API calls to a payment gateway, social network, or data transmogrifier of some sort can start really basic and grow features. A word processor can start as a basic text editor, then support marking up text, then support a spell checker, then support templates, etc. The same basic text editor could instead be grown into a programmer's editor or an IDE. Where doesn't this work so well? Life support is an example. That's something where you have to have a whole bunch of specifications up front. Fly-by-wire flight control for planes is another. Missile guidance, nuclear plant controls, embedded systems that aren't easily updated in the field, and traffic control systems are probably poor candidates. This is especially true in initial development. It may be useful to have shorter, more responsive iterations for improvements once the initial system passes its rigorous test suite. It's possible to do these with Scrum from the beginning, but expect a whole lot of other effort around auditing all the edge cases. Something else -- maybe even traditional waterfall -- would probably be better for some things. In any case, no matter how it's developed (or how many Scrum sprints it might take), life-preserving or life-risking software or software that's really difficult to update shouldn't be actually put into place until all the parts are present. I think the argument "well you wouldn't use Scrum for X" is a strawman considering Scrum is pretty clear that it's only a fit for some projects.
In Section
Meditations
|
|