You are previewing Managing Software for Growth: Without Fear, Control, and the Manufacturing Mindset.
O'Reilly logo
Managing Software for Growth: Without Fear, Control, and the Manufacturing Mindset

Book Description

The IT professional's guide to delivering exceptional software development projects.

One of the biggest problems facing businesses today is the effective delivery of software development projects. Recent surveys show that almost 75% of software development projects are either over budget, late, undeliverable, or cancelled outright. After more than 30 years of making software in an increasingly global economy dominated by technology, why is creating software still so hard?

Software development expert Roy Miller answers this and other questions in Managing Software for Growth, the first truly insightful guide for industry observers and IT leaders who struggle to make great software despite the challenges. Contents include:

  • The nature of the beast—why software projects fail, and what to do about it

  • How rigor, formalism, and "science" have created barriers to software development

  • Chaos, complexity, and emergence in complex adaptive systems

  • Moving beyond the "manufacturing mindset," which makes no sense for software

  • Practical advice on how to start growing software

  • From philosophical evaluations of software engineering to nuts-and-bolts realism, Miller reveals the inner workings of the software development process in a way that will change the way people think about IT. Software development needs radical change to meet the challenges of the new century. For anyone involved in the process of software creation, Managing Software for Growth can help begin that process.

    Table of Contents

    1. Copyright
    2. Acknowledgments
    3. Introduction
      1. The Manufacturing Mindset
      2. Bad Assumptions
      3. A New Way of Thinking
      4. Implications for Software Development
      5. This Book
    4. Manufacturing Software
      1. The Manufacturing Mindset
        1. Making Cars
        2. Making Software
      2. The Way We Think
        1. Taylorism
        2. Manageable Problems
        3. Taylor's Cube
        4. Doing What “Works”
        5. Being Pavlovian
        6. Plausible Deniability
      3. Different Work
        1. Bad Logic
        2. Bad Assumptions
        3. Planning for Predictability
        4. A Different Kind of Problem
        5. Messy Problems
        6. Software Development
      4. Square Pegs in Round Holes
        1. Swingin' Shillelaghs
        2. Increasing Predictability
        3. When Control Doesn't Work
        4. Certified to Control
        5. The Software Uncertainty Principle
    5. Complexity
      1. Making a Mess
        1. The Newtonian World
        2. Weird Science
        3. Disproportionality
        4. Nonlinearity
        5. Emergent Patterns
        6. Complex Problems
        7. Interacting Agents
        8. A Vast Space of Possibilities
        9. Conflicting Constraints
        10. Hope
      2. Order for Free
        1. Self-Organization
        2. The Edge of Chaos
        3. Coevolution
        4. Beyond Biology
      3. Muddling Through
        1. Dim Bulbs
        2. Muddling Through
        3. Simple, Generative, Local Rules
        4. Self-Organization
        5. Continuous Emergence
        6. Realistic Software Development
    6. Growing Software
      1. Growing Software
        1. Getting What We Want at the End
        2. Self-Organization
        3. Conversation
        4. Moving in the Right Direction
        5. Right Now
        6. Unpredictability
        7. What “Done” Means
        8. Feeling Our Way
        9. Meetings
        10. “Just Enough” Plans
        11. Requirements
        12. Design
        13. Software
      2. The Lost Art of Conversation
        1. Conception
        2. Birth
        3. Growth
        4. The Kitchen Sink
        5. Just Enough-ness
        6. Starting with Just Enough
        7. Growing Just Enough
        8. Death
        9. Them's Fightin' Words
    7. Change
      1. Thinking Differently
        1. Traditional Thought
        2. The Challenge of Complexity
        3. A New Way of Thinking
        4. The Living Present
        5. Relationships, Not Systems
        6. Getting Stuck
        7. Pretending
      2. Losing Control
        1. Old-Time Control
        2. “Let's Have Some Emergence Now”
        3. Nothing to Lose
        4. Giving Up Control to Gain It
      3. Managing Uncertainty
        1. From Bosses to Participants
        2. Purpose
        3. Principles
        4. Communication
        5. Power
        6. Personal Risk
      4. Starting Projects
        1. Focus on Value
        2. Asking for Money
        3. Specifically Wrong
        4. Good Enough Answers
        5. Plans
        6. Staying the Course
      5. Finishing Projects
        1. Managing Growth
        2. Being Helpful
        3. Dealing with Programmers
        4. Nudging
        5. Pressure
      6. Catalysts
        1. Starting a Revolution
        2. Taking Responsibility
        3. Manager Conditioning
        4. Confrontation
        5. Breaking the Pattern
        6. Translation
        7. Something Completely Different
      7. A Regular Lead Bullet
        1. The Complexity Trap
        2. Avoiding the Trap
        3. Arguments with Trains
        4. The New Meaning of Success
        5. Realism, Not Magic
      8. Agility
        1. What's Agile?
        2. XP in a Nutshell
        3. The XP Practices
        4. One Team
        5. Fertilizer
      9. Tomorrow
        1. Learning to Be Agile
        2. Experiment
        3. Reflect
        4. Spread the Word
        5. Keep at It
      10. Afterword
    8. Annotated Bibliography