Continuously optimized task flow in software development

or “Sprintless Flowing Priority Elastic Scrumban

As-far-as-I-can-see 

Various methodologies of software development provide optimized project management for different cases of customer-contractor relationships and work styles. For any of those cases, especially when Agile methodologies are applied, optimization of the workflow in task queue is also very important.

According to the Theory of Constraints a task management in a task queue is the most important thing of work optimization. Unfortunately every of well-known project management methodologies overlooks work optimization in task flow since all of them are based on deliveries schedule.

In ZeeSofts we have experience of work in different conditions. Usually the requirements are completed less than 100%. Often in the middle of project lifecycle we have to add new features according to the client wishes. Taking this into account we have developed own suitable hybrid Project Management methodology. With the approach I will describe below we always are opened to new requirements and we are always both – flexible and optimized.

All you need to do is to consider any agile project in waterfall way, i.e. complete with requirements you are able to and start development phase. You also will need to use “Kanban system of manufacturing and supply management” but with small difference:
1) there is only one sequential task queue for every project component
2) any developer can take only one task at one time
3) tasks position is set up in the task queue according to their priority only:
a) the tasks whith depending tasks must have higher priority
b) as well as the tasks with other developers depending on have the highest priority
c) and finally the tasks with the near deliveries depending on have the most high priority.

Using Waterfall and Kanban this job becomes very easy todo. Since we talk about agile project, the problems happen when new requirements were approved:
– the part of done work requires modifications and all next tasks require modifications
– also there is new amount of tasks must be added to the general queue.

Agile methodologies provide the best solutions in comparison with the other methodologies for agile projects. Unfortunately those methodologies do not provide the best from the perspective of optimization because agile methodologies are supposed to complete the sprint before apply changes according to new requirements. Fixes always require more effort than development from nothing. So why to waste time to complete the sprint if it will be required to fix done work right after the sprint is ended? It is better to stop the sprint, apply changes and start new sprint. This approach is better, but if we will have small continuous incoming stream of new requirements then the Scrum Master will be bogged down with creating of hundreds of slightly modified sprints. The only one way to optimize this – is to combine Queue Theory with TOC and use plain sequential priority queue of tasks, which can be subdivided to smaller queues according to the tasks priorities and moved anytime anywhere just like railcars by locomotive. In terms of well-known methodologies this approach could be called something like “Sprintless Flowing Priority Elastic Scrumban”

Word “Elastic” here used because the next problem which is solved by TOC is “Critical chain elasticity management”. Originally TOC was applied to manufacturing and that’s why TOC mostly offers permanent bottleneck enhancement. In software development, using part time and contract workers we can make bottlenecks really elastic.

Reorganizing the task queue according to new requirements with help of TOC becomes really not a big problem and here is how to manage it:
1) complete current tasks by developers and stop the work
2) apply modifications to work done
3) change existing tasks in queue according to new requirements
4) set newly arrived tasks into the queue according priorities and dependencies (estimate how other tasks depend on newly arrived tasks and move tasks with lower priority to the end of the queue)
5) review priorities in tasks according to the next delivery, reorganize queue according to new priorities if necessary.

Queue confusion always take part after new tasks added into the queue. This cycle will help to avoid tasks line confusion by aligning task queue according to priorities and dependencies. This cycle should be repeated every time after a set of new requirements has arrived.

And finally

If you know how to optimize continuously the task queues for every developer then you can start analysis of high-level optimization i.e. optimization of project life-cycle workflow or low-level optimization i.e. optimization of business processes of development via different development methodologies like TDD, FDD, BDD etc. But every optimization must be integrated with respect to TOC rules and principles.

 

unstoppable_train_by_dragonwolface-d32sj4v-small

 

TOC Books in order:
The goal: a process of ongoing improvement
Critical chain
Necessary but not sufficient

 

TOC in software development: Agile and the Theory of Constraints