Literature - UnityCoin - Clean Code - Uncle Bob / Lesson 6 - Agile

Literature note: UnityCoin - Clean Code - Uncle Bob / Lesson 6 - Agile Solutions for Balancing Deadlines and Software Quality

Reference note: ref-unitycoin-clean-code-uncle-bob-lesson-6-agile

Summary: Agile isn’t about speed… It’s about visibility. Agile replaces hope with data so teams can manage reality instead of wishful thinking; to clarify, Agile is a feedback system for managing uncertainty - not a process for going faster.

Key Ideas

  1. Agile’s purpose: get the bad news fast, not to move faster. Shorter iterations - higher visibility resolution.
  2. Every project balances the Iron Cross: good, fast, cheap, done - you can’t have all four.
  3. Velocity charts and burn-down charts are the backbone of real Agile - no data, no management.
  4. Quality drives speed: “You go fast by going well.”
  5. Don’t let a tool or process get in the way of getting impactful work done.
  6. Large-scale Agile requires many small Agile teams working in parallel - not a single “Agile in the large” process.
  7. Strong communication prevents waste, misalignment, and rework.

Chapters

/references/articles/ref-unitycoin-clean-code-uncle-bob-lesson-6-agile/#how-do-you-manage-a-software-project

  • Software project management is notoriously hard - often done “badly” or through “hope and prayer”.
  • Mismanagement leads to wrong products, low quality, missed deadlines, and burnout.
  • The Iron Cross defines constraints: good, fast, cheap, done - you can’t have all four.
  • Effective managers adjust the knobs (quality, cost, schedule, scope) using frequent feedback and short iteration cycles.
  • Agile exists to improve feedback and communication, reducing guesswork.
    • The goal isn’t to hit a fixed plan - it’s to steer toward the best achievable outcome.

/references/articles/ref-unitycoin-clean-code-uncle-bob-lesson-6-agile/#finding-the-optimum-solution-data

  • Data drives success; without it, management is blind.
  • Use metrics to manage toward the best achievable outcome across quality, cost, speed, and scope.
  • Two key tools:
    • Velocity Chart: shows how much work is completed per week/iteration.
    • Burn-down Chart: shows how much work remains to reach the next major milestone.
  • These visuals allow teams and managers to predict progress transparently.
  • Requirements should never freeze - Agile welcomes change as understanding improves.
  • Estimates ≠ promises; treat them as evolving signals.
  • The goal of Agile: produce reliable data early so the team can manage reality.

/references/articles/ref-unitycoin-clean-code-uncle-bob-lesson-6-agile/#what-is-the-first-thing-know-about-project-the-management-paradox

  • The first thing known in any project is the date, often fixed by business needs; however, requirements are fluid - customers refine what they want through iteration.
  • Agile solves this by allowing requirements to evolve while maintaining time-boxed delivery.
  • Teams continuously replan priorities, focusing on core features first and pushing less-critical items to future iterations.
    • If every feature is “critical,” none of them are - prioritize what matters.
  • Frequent show-and-tell sessions keep customer expectations aligned with progress.
    • Customers rarely know what they truly want until they see a working product.
    • Agile embraces this uncertainty by iterating quickly and showing progress often.

/references/articles/ref-unitycoin-clean-code-uncle-bob-lesson-6-agile/#the-waterfall-model

  • Traditional Waterfall assumes phases (analysis, design, implementation) are sequential and “done”.
  • In reality, analysis and design are continuous, not binary.
  • Software differs from physical engineering - it’s adaptable and should evolve.
  • Freezing requirements too early forces teams to “hack in” changes later, creating instability and technical debt.
  • Waterfall often fails because it resists feedback and delays learning until it’s too late.

/references/articles/ref-unitycoin-clean-code-uncle-bob-lesson-6-agile/#iterative-development-calculate-day

  • “Runaway process inflation” happens when teams respond to failure by adding more process instead of more feedback.
  • Iterative development starts with Iteration 0 - capture lightweight requirements and draft user stories, leaving details to emerge over time.
    • Gather rough requirements and create simple user stories - refine later.
  • Each iteration provides real data about progress, risks, and estimates.
  • The focus shifts from predicting the future to learning as early as possible.

/references/articles/ref-unitycoin-clean-code-uncle-bob-lesson-6-agile/#the-control-knobs-of-project-mgt

  • The four adjustable controls:
    1. Schedule
    2. Staff
    3. Quality
    4. Scope
  • Adding people rarely helps - it initially slows progress (Brooks’s Law).
  • Lowering quality for speed causes rework and collapse - “You go fast by going well”.
  • Scope negotiation is the manager’s most powerful lever; trim deliverables to hit the date.
    • Scope is the most flexible lever; negotiate what must ship now vs. later.
  • Developers hold the data, stakeholders hold the authority - in rational organizations, data should win.

/references/articles/ref-unitycoin-clean-code-uncle-bob-lesson-6-agile/#short-cycles-agile-software-development-practices-extreme-programming

Agile development, particularly Extreme Programming (XP), emphasizes short cycles to uncover problems (“bad news”) as early as possible. The goal of Agile isn’t speed, but early feedback and adaptability.

  • You can’t fix scope, date, quality, and cost all at once (“the Iron Cross”). The best way to manage uncertainty is to work iteratively, learning and adjusting each cycle; that is, short cycles expose tradeoffs early.
  • Agile’s purpose: get the bad news fast, not to move faster.
  • Scrum without engineering discipline (testing, refactoring, clean code) leads to Flaccid Scrum - progress slows and quality decays: a process framework without the technical rigor needed for success.
    • Extreme Programming (XP) (testing, refactoring, clean design) keep Scrum sustainable.
  • XP structure of practices
    • Outer (Green) Ring - Business-facing (Scrum-level): focus on what is being built and why, ensuring that the software actually delivers value to the customer or stakeholder.
      • Whole Team: Business and technical people work together.
      • Acceptance Tests: Define done-ness in terms the customer understands.
      • Small Releases: Deliver value and get customer feedback early.
      • Planning Game: Balance business priorities with technical estimates.
    • Middle (Blue) Ring: Team behavior
      • Continuous Integration: Team members frequently integrate and test their code together, ensuring shared ownership and rapid feedback.
      • Metaphor: The team uses a shared “story” or metaphor to describe the system’s architecture, helping everyone (technical or not) share a common understanding.
        • Creates a common language across technical and non-technical people.
        • Helps guide design decisions - new features should “fit the metaphor”.
        • Makes the system easier to discuss and reason about.
      • Sustainable Pace: The team avoids burnout by maintaining a steady, reasonable work rhythm - no “death marches”.
      • Collective Ownership: Any developer can improve or modify any part of the code; responsibility is shared, not siloed.
    • Inner (Red) Ring: Engineering (developer-specific)
      • Test-Driven Development
      • Pair Programming
      • Simple Design
      • Refactoring
    • Business-facing == practices that expose progress, risk, and value to the business side (product owners, stakeholders, customers).
    • Engineering-facing == practices that ensure technical excellence and delivery capability.
  • Agile works best for small, disciplined teams.
  • Large-scale Agile requires many small Agile teams working in parallel - not a single “Agile in the large” process.
  • Avoid process theater - when tools (e.g., Jira) become more important than outcomes.
  • Relative estimation (story points) enables better forecasting and ROI-based prioritization.
  • Projects finish not when everything’s done, but when nothing valuable remains.
  • Iterations never fail - even zero progress yields data for better management.
  • Velocity stability is the goal - steady, predictable output signals health.
    • Stable velocity signals health; erratic or declining trends indicate tech debt or pressure.

/references/articles/ref-unitycoin-clean-code-uncle-bob-lesson-6-agile/#questions-and-answers

  • Writing extensive documentation often fails - “nobody reads it”. Favor visibility and communication instead.
  • Mentorship is a senior engineer’s responsibility; pairing with juniors accelerates growth for both.
    • “The best way to learn something is to teach it” .
  • Business analysts play a crucial role - they must translate between technical and business domains.
    • Effective analysts empathize with both the customer’s needs and the developer’s challenges.
    • Understand and communicate both customer intent and developer constraints.
  • Spikes (research tasks) are valid stories - used to explore unknowns and improve estimation accuracy.
Built with Hugo
Theme Stack designed by Jimmy