March 09, 2007
Agile development comes to Photoshop
The Register hosts a Q&A with Photoshop co-architect Russell Williams about how the team changed its ways in the CS3 development cycle, making product quality paramount, improving the team’s work/life balance (i.e. fewer "Photoshop widows/-ers" who never see their loved one), and yet still delivering a rich set of features. In brief: rather than building all the features up front, then spending the rest of the cycle fixing them, the team moved to a more incremental development model, insisting that bugs be fixed as we went along (not allowing them to build into a late-stage "bugalanche"). The article is a good read if you work in product development, or if you just want some inside geekery on how this stuff gets done.
Russell addressed the engineering side, so I thought I’d add some product management perspective. Overall I’m pleased with how things have gone, but no approach is perfect, and it’s worth noting some of the challenges we faced. [Continued in this post's extended entry]
- The team’s ability to deliver a public beta–a first for a major Adobe application*–is probably the single greatest tribute to the new method. In the old days, we could have delivered a feature-rich beta, but the quality would have been shaky at best. This time, as Russell says, "The public beta was basically just ‘whatever build is ready on date X,’" because we knew it would be stable.
- Flexibility means uncertainty about what features you’ll be able to deliver. As you’d imagine, that can be pretty stressful for a product manager whose responsibility is the overall feature set.
- It’s hard to do agile development when you have to interact with organizations that aren’t necessarily set up for it. Corporate marketing, for example, want to know early on what features you’re planning to ship. With our approach we deliberately kept ourselves from committing to certain things until late in the cycle. Short story: you have to keep the paint wet on documentation, marketing, demo scripts, and so forth much later than you otherwise would.
- This is particularly challenging when outside groups are having to handle a large number of projects at once—a situation that makes them want details & confirmation sooner, not later. And it’s one thing when you’re talking about marketing or docs, quite another when you’re talking about an external technology team (“Will you commit to doing the integration work we need?”).
- This was a learning experience for everyone, including beta testers. I think that a number of folks who were used to seeing everything up front spent more than a few months saying, “Er… so this is all there is?” And we could only say, “We don’t know yet, and we won’t know for a while. ”
- The upside of this was that we could make course corrections more easily than in the past. With the old method, an engineer would sign up for features A, B, and C, then get them all to a marginal level of quality as quickly as possible, then spend the rest of the cycle fixing bugs. With the new method, she would work on feature A until it was pretty well polished, asking for feedback the whole while. If we decided that further work on feature A was more important than feature B and/or C, we had a much better time making that trade-off.
- By the end of the cycle, then, we started hearing much happier noises from the testers than I remember in the previous two cycles.
- A minor point, but a real one: those of us who give demos throughout the cycle often had to juggle a great number of builds—the 3D build, the correct correction build, the performance build, etc. I’d often find myself running three or four separate copies of CS3 simultaneously on my Mac (possible via a little hacking of the resources). Tabbing through several identical feather icons while people look on is… interesting. So, if you’re going to go down this route and plan to demo, you should make sure you’re stocked with RAM. :-)
*Lightroom, the Flash AS3 preview, and other efforts were different beasts in a variety of ways. Photoshop CS3 is the first time Adobe took one of its flagship, shipping applications and released it this widely with a full set of new features.