What does "Agile Development" mean to you?
Feb. 5th, 2014 01:33 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
[Not strictly aimed at programmers, this time -- I'm interested in hearing from anyone in the software field who has an opinion.]
I was in an interesting discussion on one of the Scala mailing lists last week, and we wound up off on a tangent about "Agile". My correspondent described how he strongly dislikes Agile, and why -- and the interesting thing to me was that his definition of Agile not only didn't match mine, it was in some ways directly *contradictory* to mine.
I've been starting to realize that, 15 years into the process-management revolution in software, the term "Agile" has become ever-squishier. This hasn't been helped by management consultants who sometimes spout complete nonsense, or more often take a specific dialect of the idea and say "This is what Agile means".
So here's a quick question, aimed at my many techie friends: what does the word "Agile", in the context of software development, connote to you? What are the two or three *most important* aspects of it? I'm not looking for answer just from the experts here -- I'm at least as interested in the viewpoints from the people who have only been reading about it in the trade press or blogs, and what impressions you have gotten. And I'm curious whether the viewpoints and priorities differ between, eg, the programmers and the project managers.
(I have strong opinions about this myself, of course -- I've been an active proponent of some of these ideas from almost the beginning. But I'd rather hear your viewpoints first, before I spout off...)
I was in an interesting discussion on one of the Scala mailing lists last week, and we wound up off on a tangent about "Agile". My correspondent described how he strongly dislikes Agile, and why -- and the interesting thing to me was that his definition of Agile not only didn't match mine, it was in some ways directly *contradictory* to mine.
I've been starting to realize that, 15 years into the process-management revolution in software, the term "Agile" has become ever-squishier. This hasn't been helped by management consultants who sometimes spout complete nonsense, or more often take a specific dialect of the idea and say "This is what Agile means".
So here's a quick question, aimed at my many techie friends: what does the word "Agile", in the context of software development, connote to you? What are the two or three *most important* aspects of it? I'm not looking for answer just from the experts here -- I'm at least as interested in the viewpoints from the people who have only been reading about it in the trade press or blogs, and what impressions you have gotten. And I'm curious whether the viewpoints and priorities differ between, eg, the programmers and the project managers.
(I have strong opinions about this myself, of course -- I've been an active proponent of some of these ideas from almost the beginning. But I'd rather hear your viewpoints first, before I spout off...)
(no subject)
Date: 2014-02-05 10:57 pm (UTC)Snarkier, more truthful answer: "We're behind schedule and can't seem to ship, and one of the developers heard agile helps with that."
(Note: agile and scrum overlap entirely in my mind; I understand some people differentiate the two, but I use them as synonyms.)
Usually the core pieces of agile I hear used are (in decreasing order of actual use):
1. Work broken into short iterations/sprints (1-3 weeks). This alone is sufficient for people to claim they are being "agile".
2. Short daily stand-ups to report status and force engineers to talk to each other
3. Work decided ahead of time for the sprint
3b. Work sometimes changed mid-sprint, sometimes not
4. Work priority decided using "user stories"--Ship Value Early
4b. and possibly a Product Owner who knows what users want
5. Work difficulty estimated ahead of time using story points or the equivalent
6. Demo/ship every sprint
7. Development team given more control over how to do things
8. Development team expected to cross-train--implement features "depth-wise" rather than staying in their stratum of the system. (E.g.: developer is responsible for writing front end, glue, and backend for feature X)
9. Introspection after a sprint to figure out what happened, why, and how to improve it
9b. Use of introspection to improve the team's estimating skills
9b is, of course, one of the places that outside management can start to see value--which makes it frustrating when it's at the bottom. Improved estimates are a product of a good process but take some time to evolve...