Development Methodologies, Processes, and Tools
Product Manager who has understood the various development methodologies, you will be able to share actionable feedback on what can be improved in the development team’s process after following their current process.
How work is structured and managed using work management tools and how do development teams develop new features while maintaining the existing product’s stability? These concepts remain largely unchanged even if the issue and project tracking software tools vary by company.
What is the Waterfall methodology?
Understanding the philosophy and how it works?
The process is divided into distinct phases where each phase cannot begin unless the previous phase is completed since it also serves as an input for the next phase. Let’s understand each of these phases better:
- Gather Requirements : The requirements must be fully captured and defined through rigorous documentation in the form of an elaborate requirements document.
- Design the solution : The requirements are utilized to design the product that details the functional or system requirements and aids in defining engineering architecture. The requirements and solution may be functionality focused instead of being customer-centric.
- Develop the solution : The scope of work is broken into smaller manageable units and developed independently. Each unit of work is tested to confirm whether the intended functionality has been developed and this is called as Unit Testing
- Test the solution : The units developed and verified in the previous phase are combined or integrated. This integrated system is tested thoroughly for any issues or failures.
- Deploy the solution : Once the product has been exhaustively and comprehensively tested, it is deployed to the production environment for customers to start using it.
- Maintenance and support : When issues arise, they are fixed. Enhancements to the product go through the same process to deliver the changes Each phase requires a sign-off from an approver ( for e.g. in the case of Gather Requirements and Design the Solution — it could be the enterprise customer for a B2B2C product) to ensure there is no overlap between phases ( e.g. gather requirements and design the solution).
The waterfall methodology has been adopted by the development and product team based on various factors, which make the linear and sequential process a more appropriate approach:
- Requirements are not ambiguous and fixed.
- Ample resources with the expertise required to develop and launch the project are available for a significant amount of time at the project’s disposal
- Project timeline is short
Understanding the Agile Philosophy
Companies need to respond to change and adapt to evolving customer needs and constantly changing market dynamics. This requires a shift in the development methodology’s focus from following rigid processes to focusing on people and how they collaborate.
Agile methodology is centered around this need to respond to change and adapt. It is an iterative approach to software development, where requirements and solutions evolve through constant collaboration and clear communication within the self-organizing cross-functional team. A self-organizing team decides how to get things done versus waiting for another person (e.g. project manager) to step in and lead the team to figure out what needs to be done next.
Kanban and Scrum are popular frameworks that enable teams to embrace and follow agile principles, and helping teams deliver value faster without compromising quality.
We’ll learn more about both in the next sections of the lesson.
What is Kanban methodology?
Understanding the philosophy and how it works
Note: In the video, the instructor defined the lead time to be the time taken to move an item from Ready to Develop stage to Done. It should be the time taken to move an item from Backlog to Done.
Kanban utilizes the power of visualization to increase team efficiency and deliver value to the customer faster.
- It enables a highly motivated team to visualize the progress of their work and the process through which the project has to flow through.
- It enforces a limit on the maximum number of items that can be in a particular stage of the process, and by helping the team see that clearly, Kanban methodology enables the team to swarm and figure out how to unblock the team
- The team focuses on taking the work from start to finish as fast as possible, which is called lead time.
Lead time vs. Cycle time
When you add a new item to the Backlog of your Kanban board, it needs to be reviewed and discussed before it is Ready to Develop. Cycle time refers to the time a ticket takes to go from the Ready to Develop stage to being Done. Lead time, on the other hand, is the time taken to take the ticket from Backlog to Done.
A deep dive into Scrum
Understanding PM’s role and how it works
Note: the Fibonacci sequence above should read 0,1,2,3,5,8,13,21..
Scrum enables the team to self organize and work together to develop and maintain complex products.
- A clearly defined set of guidelines on roles that need to be played by different team members, what needs to be covered in the meetings, how frequently should the team meet and, who needs to attend these meetings.
- Team Dynamics is at the core of the scrum. The guidelines are aimed at creating open communication channels between the development team members and the product manager to gain clarity around what is expected of each other and share project progress.
- The emphasis on short release cycles allow the team to adapt to changing requirements and business condition.
What is the Work Management Tool?
How is it used?
The purpose of a work management tool is to help teams of all types manage work starting from capturing detailed requirements, bugs and issue tracking, and test case management to agile software development. With teams becoming global and adopting an iterative approach to developing software, the need for a single tool that is a central hub for the coding, collaboration, and release stages is critical.
From Development to Deployment
What happens during this period?
The development team uses a version control system to track all the changes made to the codebase, manage and view the changes made in a specific part of the codebase easily. It also allows the development team to restore the codebase to a stable version when undesirable or unstable changes are added to the code base.
- Developers always start with the most current and stable version of codebase called the master or main trunk and make a copy (called as a branch) to their local environment.
- Once the developer adds new features or makes modifications to an existing feature, they write and execute test cases to ensure their modified code passes. This is called unit testing.
- When developers merge their unit-test verified code directly, conflicts may occur. Many teams adopt continuous integration, where the modified codebase is validated by running automated tests. This helps the development team identify and resolve conflicts earlier and improve delivery speed
- Continuous delivery is an extension of continuous integration, where the latest version of the master is deployed automatically to an internal environment called staging.
- QA team conducts comprehensive and exhaustive manual testing in the staging environment. The product manager conducts user acceptance testing, feature demo and sign-off with internal stakeholders here.
- In most companies deployment to production is manual
- After deploying the latest version of the codebases to production, smoke tests are run to verify whether basic functions and critical features are working as expected