What’s so different about software development ?

It’s the 2020s (or as my kids say, “The 20’s”) and we’ve still got organisations using outdated methods for managing software endeavours. A big part of the reason that’s the case is that folks haven’t quite realised that software isn’t like building or renovating a house or building a bridge. It’s different in a whole bunch of really important ways.

Here’s 10 key differences that make software development a poor fit for traditional project management:

  1. Uncertainty: Even if you’ve done loads of up-front analysis, there’s still going to be loads of uncertainty in how you’re approaching it, and even more uncertainty in whether the benefits you’re hoping for will result.
  2. Complexity: this is not like designing the movement in a Swiss watch. There’s people involved in both the development, checking and usage, and we use a famously imprecise language to describe what we want. Cynefin “complex” is the norm. There be dragons in this space, so you’d better be testing assumptions as you go. Probe > Sense > Respond.
  3. Iterative and Cyclical Process: Cycles of coding, testing, and refinement
  4. Constant Change and Evolution: New requirements and features emerge throughout. It’s not unusual for the work to double or triple once you get into the detail of it and start to understand more about the problems you’re solving.
  5. High Degree of Creativity: Requires innovation and problem-solving
  6. Intangible and Invisible Output: Difficult to visualize and measure progress
  7. Highly Skilled and Specialized Team: Unique expertise and communication challenges
  8. Rapidly Changing Technology: Keeping up with the latest tools and technologies
  9. Flexibility and Adaptability: Need to pivot quickly in response to changing requirements
  10. Emphasis on Quality and Reliability: High standards for software quality and reliability

These differences highlight the need for alternative approaches like Agile, Scrum, Kanban, or my preference, XP. These approaches are designed to handle the unique challenges of software development.