Software development is a set of complex tasks. Many parties involvements and coordinated participation are necessary in order to achieve results. Agile methodologies explains some guidelines and provides more multiple framework to facilitate the development process. Two well known framework is Scrum and Kanban. It is important to select the appropriate framework for effective project management. Making a good choice will make the project run smoother and increase team members engagement. This article explains which framework could be a more appropriate choice when a project has too many external dependencies.
Scrum Framework in a nutshell:
Scrum Software development is a value driven iterative development process. Each iteration is called sprint. sprint starts with planning and end with a review and retrospective. Scrum defines 3 roles:
Product owner (PO): Product Owner is responsible for creating a prioritized list of all features of the product called product backlog.
Scrum Master (ScM): Scrum Master keep the focus on the goals and help the development team to remove the impediments. Scrum master is also responsible for facilitating scrum artifacts.
Development Team: At the beginning of the a sprint development team picks some of the features based on their capacity. Usually the most important features are picked first. Ideally, end of the sprint all features that are picked shall be done and shippable.
Kanban Framework in a nutshell
Kanban is a Japanese invention that mainly is a scheduling system for lean manufacturing and Just In Time (JIT) manufacturing. It is also viewed as an inventory control system for supply chain.
Kanban operates using “PULL” method. Demands are stacked and the production pulls requests from the demand according the capacity of the production. This philosophy is implemented in every station of production. A Kanban card is used to send signals from one station to another within the production line or even external supplier. A Kanban card generally states the demand. When a Kanban card is received that triggers an order to fulfill the demand stated in the card. Thats how Kanban represents a contentious flow of work in progress.
How Kanban can be applied in software development & Agile?
All demand orders from customer can be viewed best project management software product development requirements/ requests. as the backlog for the software and product owner can be given the responsibility to make a prioritized list. whenever a Kanban card is received the higher priority work items shall go to the production. Systemization, Development and Test can be considered as three minimum station in software development production line. A work item is done when it goes through the entire flow. Once the last station is passed, it shall be shippable.
What is External Dependency?
Agile software developments teams are expected to be formed in a way that the development teams shall be responsible for end to end value delivery. However, an agile project could be consist of multiple development team. This article refers to a dependency as external dependency when a task can not be handled by the development teams involved in that project. Dependencies within different teams in a project is addressed as internal dependency.
Corrilation between External Dependencies and Scrum and Kanban
When a Scrum development team can not finish a task within the sprint that task shall go back to the product backlog and re-prioritized so it can be pulled by the development in the future/next. One of the main philosophy of Scrum team is to make commitment at every sprint to complete all pulled task and make it shippable. Ideally, team should do nothing else but what they have committed to do. Another key aspect is that in Scrum an estimation of future
Kanban on the other hand accepts producing and/or supplying based on demand signal through Kanban Card. Kanban does not require estimation in future.
Let’s take a case study of Hardware (HW) and Software (SW) development with external dependency
In this example let’s assume Enterprise “ABC” is developing a product “XYZ” where the enterprise is responsible for deliver the complete product both HW and SW. HW and SW development is defined as two separate project and both projects have respective project manager who regularly meets and synchronise the project time plan. For the SW project, HW is an external dependency. For the HW project, both components from external vendor and SW are external dependency.