Examination Preparation Materials - Chapter 05

Engineering Project management

Product Management & Project Management

Product Management: Focuses on the "what" and "why" of a product. They are responsible for the overall vision, strategy, and roadmap of a product throughout its lifecycle. This includes understanding customer needs, defining product requirements, and ensuring the product delivers value.

Project Management: Focuses on the "how" and "when" of delivering specific tasks within a project. They oversee the execution of a project plan, manage resources, track progress, and ensure projects are completed on time and within budget.

Analogy: Think of a product manager as the architect who designs the house (product) and the project manager as the foreman who oversees construction (project) following the architect's blueprint.

Waterfall Model and Agile Model for Software Development

Waterfall Model: A traditional, sequential approach where each development phase (requirements gathering, design, development, testing, deployment) is completed in order before moving to the next. This method offers clear milestones and control but can be inflexible and slow to adapt to changing needs.

Agile Model: An iterative and incremental approach to software development. Projects are broken down into smaller "sprints" with continuous feedback loops. This allows for faster delivery of working features and easier adaptation to changing requirements.

Think of it this way: Waterfall is like building a house one floor at a time, needing a complete plan upfront. Agile is like building a house one room / floor at a time, adapting the plan as you go. In the Agile model, you can even start living to the floor that's already ready while the construction continues.

Building a House: Agile vs. Waterfall

Waterfall Approach (Traditional Method):

Imagine you have a detailed blueprint for your dream house. This blueprint outlines everything from the foundation to the roof, including materials, permits, and construction phases.

Following the blueprint rigidly, you proceed sequentially:

  • Phase 1: Foundation & Framing: The foundation is poured, and the entire house frame is built based on the blueprint.

  • Phase 2: Plumbing & Electrical: With the frame complete, plumbers and electricians install all the necessary systems based on pre-defined locations in the blueprint.

  • Phase 3: Walls & Roof: Walls are built, and the roof is installed according to the blueprint.

  • Phase 4: Interior Finishing: This involves everything from flooring and painting to installing cabinets and fixtures, all based on the specifications in the blueprint.

Pros:

  • Clear Plan & Milestones: You have a clear roadmap from start to finish with defined milestones at each phase.

  • Cost & Schedule Visibility: Easier to estimate final costs and project duration upfront due to a fixed plan.

  • Reduced Risk of Major Changes: Difficult to make significant changes mid-construction, reducing overall complexity.

Cons:

  • Inflexible to Changes: New ideas or unforeseen problems can be expensive and time-consuming to accommodate once construction progresses.

  • Limited Customer Input: Focuses on the initial plan with less room for customer feedback during construction.

  • Potential for Delays: Delays in one phase can ripple through the entire project, affecting completion date and budget.

Agile Approach (Incremental Method):

Imagine building your house one room at a time. You start with a basic structure and then work on specific sections in short cycles called "sprints."

  • Each sprint has a clear objective: For example, building the kitchen in the first sprint, bathrooms in the second, and so on.

  • After each sprint, the team evaluates progress and incorporates feedback from stakeholders (future residents!). This allows for adjustments to the plan based on new information or changing needs.

  • The process is iterative: You learn and adapt as you go, potentially changing materials, layouts, or even adding features based on the evolving vision.

Pros:

  • Fast Adaptability: Can readily incorporate changes and new ideas throughout the building process.

  • Continuous Customer Input: Customers (future residents) can provide feedback and influence the final outcome.

  • Reduced Risk of Big Mistakes: Errors are caught and addressed earlier, preventing them from becoming major issues later.

Cons:

  • Uncertain Final Cost & Schedule: Difficult to predict the final cost and project duration due to the iterative nature.

  • Requires Strong Communication: Frequent communication and collaboration are crucial between the team and stakeholders.

  • Potential for Scope Creep: The project can potentially grow in scope if changes are not carefully managed.

Product Owner and Scrum Master

These roles are specific to the Agile Scrum framework:

Product Owner: Represents the stakeholders and prioritizes the product backlog (list of features) based on business needs and customer value. They ensure the product backlog reflects the product vision and communicates requirements to the development team.

Scrum Master: Acts as a coach and facilitator for the Scrum team. They ensure the team understands Agile principles, removes roadblocks, protects the team's time, and keeps the Scrum process running smoothly.

Principles from the Agile Manifesto

(Reference : https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/)

The Agile Manifesto outlines core values for software development:

  1. Customer Satisfaction Through Early & Continuous Delivery: The top priority is to deliver valuable software to customers early and often, fostering continuous feedback and improvement.

  2. Welcome Changing Requirements: Agile embraces changing requirements even late in development. These changes are seen as opportunities to improve the product based on new learnings.

  3. Deliver Working Software Frequently: Focus on delivering working software in short, regular intervals (weeks or months) to get user feedback quickly and adapt accordingly.

  4. Business People & Developers Collaborate Daily: Close collaboration between business stakeholders and developers throughout the project ensures everyone is aligned on priorities and goals.

  5. Build Projects Around Motivated Individuals: Empower and trust motivated individuals by providing them with the environment and support they need to excel.

  6. Face-to-Face Conversation is Most Effective: The most efficient and effective communication for agile teams is through face-to-face conversation. This fosters clear understanding and reduces misunderstandings.

  7. Working Software is the Primary Measure of Progress: The primary measure of progress is the delivery of working software that provides value to customers.

  8. Sustainable Development Pace: Agile promotes a sustainable development pace that avoids developer burnout and ensures a constant, healthy development flow.

  9. Continuous Attention to Technical Excellence: Continuous attention to technical excellence and good design enhances agility by improving maintainability and adaptability of the software.

  10. Simplicity—the Art of Maximizing the Undone Work: Focus on simplicity by prioritizing the essential work and eliminating unnecessary complexity. This frees up time and resources for what truly matters.

  11. Self-Organizing Teams Deliver the Greatest Value: The best architecture, requirements, and designs emerge from self-organizing teams. These teams are empowered to make decisions and take ownership of their work.

  12. Regular Reflection on How to Become More Agile: Agile teams should regularly reflect on how to become more effective, continuously tuning their processes and behaviors to improve their agility.