In a recent blog posting titled "Moving from Software Production to Software Publishing," Gojko Adzic describes how he and his staff applied agile software development techniques to improve the production process at Mikro (Serbian edition of PC World magazine). He then describes some ways in which the magazine publishing model can be applied to software development.
Gojko begins by drawing analogies between the players and pieces of magazine publishing and software development:
- Writers = Programmers
- Readers = Users
- Advertisers = Large Customers
- Articles = Source Code
- Editing = Unit Testing
- Proof Reading = QA
- Layout = User Interface
- Magazine Assembly = Integration and Packaging
In both worlds, there exist trade-offs between four variables: quality, cost, time and scope. For Mikro, limited printing resources within Serbia meant that deadlines could never be missed, and marketing demanded consistent scope - 164 pages, to be exact - in every issue. Within these constraints, predictability and consistency were achieved by:
- Managing the expectations of readers and advertisers
- Maintaining a pipeline of large and small features which could be swapped in and out of any given issue
- Spreading important features across issues
From these experiences, Gojko makes specific recommendations for software development teams:
- Instead of deriving a schedule from a feature list, begin with an iterative schedule, and map features into the schedule
- Enforce non-negotiable deadlines for software releases
- Define the scope of each software release in a similar manner to that of a magazine issue: a small number of big features, and a larger number of small features
- If necessary, delay features - even if they're ready - to later releases in order to achieve consistency of scope between releases
For another example of cross-pollination between publishing and agile software development, see "The Emerging Art of Agile Publishing" at XML.com.