Many organizations have switched strategies for developing business applications from traditional approaches to flexible models that promote innovation and fast turnarounds. This is reflected in a surge in the adoption of DevOps and agile methodologies that improve workflows and make development teams more efficient.
Another model gaining ground as part of this movement is the POD model, which can be viewed as an extension of the principles of DevOps that increases efficiency while splitting larger development teams into smaller, autonomous units.
This post will break down the POD model, its benefits, its drawbacks, and how you can implement this model within your organization.
What is a POD model?
The Product Oriented Delivery (POD) model is a software development strategy that centers on building small cross-functional teams that own specific tasks or requirements for a project. A POD's team members will collectively have the skills to design, develop, test, and operate a product, ensuring self-sufficiency.
Agile development methodology focuses on breaking down large project timelines with one main product launch into small incremental sprints that produce deliverables for the customer. The DevOps model expands on the agile approach by combining the development and operations teams to promote collaboration and reduce bugs in deployment.
The POD model embraces the incremental approach of agile and also follows the DevOps model's emphasis on operational requirements during the planning and development phases. The POD team works in the same sprint workflow and combines multiple skill sets to cover the entire software development lifecycle from planning to maintenance. Multiple PODs are typically used so that larger sprint goals are broken down into single tasks that each POD team works on in parallel.
PODs are both a software development and a people management strategy. POD teams are most often made up of 4-10 professionals. The roles that individual contributors may fill include:
- Scrum Masters
- Product Leads
- Technical/Business Analysts
- UX Designers
- UI Developers
- Back-end Developers
- Full-stack Developers
- DevOps Engineers
- Test Engineers
- QA Engineers
- Cloud Engineers
Now that you understand the POD model, let's examine its benefits.
The Benefits of the POD Model
The POD model has three key benefits that make it a worthwhile extension of the agile and DevOps methodologies: scalability, collaboration, and efficiency. Let's examine each one in more detail.
By combining all needed disciplines into one integrated unit, the POD model removes the traditional roadblocks in the software development process associated with handoffs and lag time between phases that occur when the team is segmented by skills. POD teams can be onboarded and offboarded from projects as needed to provide the right amount of resources for each sprint.
Because the POD teams are small, it’s easier to foster productive relationships between team members as communication is simplified.
In addition, by working closely with others in related disciplines, employees develop an awareness of the greater process for producing the deliverable and the unique needs of each discipline to achieve the objective. This both improves collaboration with other team members and enables the employee to consider how they can support these requirements in their own work.
With all necessary skill sets under one roof, POD teams are highly productive because the process for reviewing and testing deliverables is streamlined. By working closely with all stakeholders, team members have easy access to feedback on their contributions. This reduces the risk that bugs make it into production and allows team members to course correct sooner in the process.
The Drawbacks of the POD Model
While the POD model offers many advantages, it is not ideal in every scenario. Here are a few drawbacks to consider before making the transition.
1. Distributed Decision Making
One advantage of the POD model is that those performing the work are left to make strategic decisions such as choosing the technology stack to use to produce a feature.
However, inexperienced team members may lack the leadership skills and experience to make these decisions. This means that you must ensure each POD team has practitioners with a background to determine team strategy. You should also promote mentorship to foster these instincts in any newer team members so they can participate in future discussions.
2. High Level of Coordination
The vision of the POD model is that each team is autonomous so that multiple tasks can be performed in parallel. This requires careful planning to define the goals for each sprint and ensure they are completely self-contained.
In other words, a task should not require resources from another POD team to complete.
Otherwise, the efficiency advantage offered by close internal collaboration may be negated. For example, Team A waits on Team B to complete its contribution before handing the deliverable off to Team A to finalize.
How to Implement a POD Model Framework
If you have identified the POD model as the right fit for your organization, these are the steps to start setting up your POD teams.
Plan the model.
As mentioned before, careful planning is a necessity for any POD model. Begin by examining the project and identifying its underlying goals: what does the customer want and what will be required to meet their needs? You can then split these individual points into separate areas of responsibility and further distill them into tasks.
Once you have the breakdown of work, you can determine how you will split these responsibilities between PODs to ensure each sprint ends with a working deliverable. You now have the necessary information to decide the number of POD teams and the skills needed within each team to meet these requirements.
Finally, you can form your POD teams and assign individual responsibilities. It's important to ensure each team has the necessary leadership as well as technical expertise to meet project requirements.
Now that you've defined the sprint goals and selected your teams, it's time to launch.
Execute your strategy.
This phase is all about flexibility. As your teams assemble and start to perform their work, actively collect feedback so you can identify areas of friction and work with internal leaders to address them. These stakeholders should similarly be looking for potential conflicts and intervening as necessary, especially if this is a new project or new team.
During each sprint and after its conclusion, you should also be tracking metrics to measure progress against goals.
Implementing a new POD model is a success on its own. But how do you know it was worth the effort?
You can track team activity and results over several key performance indicators (KPIs) to determine how effective your POD implementation was, including product quality, sprint completion rate, and customer satisfaction ratings. You should also collect anecdotal feedback from team members to determine their consensus on the model and if they have identified any areas for improvement after working "in the trenches."
Any best practices determined from these quantitative and qualitative measurements should then be shared across the POD teams so everyone can use these steps to improve their execution during the next sprint.
Create centers of excellence for your DevOps lifecycle.
The POD model focuses on forming self-contained teams to fulfill individual requirements of software projects and is an extension of the principles of the agile and DevOps methodologies. It offers advantages in scale, collaboration, and speed of execution, although it does require additional coordination and competent leaders within each team. Implementing a POD model is an evolution of the DevOps model's combination of development and operations by bringing these disciplines together in small, independent teams.