Tuesday, April 26, 2011

Applying Radical Programming: Software is a Batch Process

Before applying the lean thinking to software engineering we must understand what are the concerns that lean thinking tries to solve and where exactly process of producing software fits in. 
See my earlier post What is radical programming? if you want and introduction to Radical Programming.

Mass Production vs Mass Customization 
Unlike craft production mass production relies on the standard components and economy of scale. Each unit is like every other unit and  parts are interchangeable. The assembly line can increase the throughput but then it becomes very difficult to change and to customize. 
On the other hand the more customization is required the less standard and costly the production becomes. Why is this relevant to software engineering ? That is because each software system is unique we have a need for high degree of custom software development and at the same time we need to bring in mass production techniques. 

User Story (Use case) is the unit of software production. 
In Radical Programming we treat user story as the unit of production. Our output is measured in terms of number of user stories implemented. We imagine an assembly line where a user story starts its life as a simple statement of user need which is developed into full set of acceptance tests and lightweight use case. It is then translated into design delta and finally implemented, tested and integrated. Individual user stories are the basis of calculations to make production decisions. 

Process Types 
One of the most critical factor in implementing efficient production system is to identify the process type that best achieves the tradeoffs between quality , time and flexibility.
There are five types to choose from

  1. Project Process - There is a high degree of customization and very low volume . Which means each project is unique. Flows and dependencies are very complicated.
  2. Job Process - Even though it is customized the volume is high enough. Which means each job is not as unique as project. Each new order is handled as a single unit and produced made to order. Flows and dependencies are jumbled. Examples are your doctors's visit, jobs with car mechanic, process for auto loan approval. Variety is achieved through "made to order" strategy.
  3. Batch Process: There is high volume and variety is achieved through "assemble to order". Most importantly items are produced as a batch. Some intermediate products might be pre-processed.
  4. Line Process: Volumes are very high. Fast food services and car assembly lines are examples of line processes. There are line flows with very little inventory held between operations.
  5. Continuous Process: It requires extremely high volume and very generic standardized product.
Software as a batch process with Time Boxing 
Like Scrum the radical programming achieves its goal using series of scrums. In radical programming we treat the software production as a Batch Process where we produce batch of user stories each iteration.

by Sachin Joshi
for Washington Technical Resources


  1. Great article by the great author, it is very massive and informative but still preaches the way to sounds like that it has some beautiful thoughts described so I really appreciate this article. Get more info about What is the goal for mass customization