Software Development

Things to consider during software development - these are living documents that will be updated as I learn more or evolve opinions.

  • A Game Plan for Product and Software Development

    A Game Plan for Product and Software Development The Premise Most software problems are not technical. A team that consistently delivers working software, …
  • A Pyramid Principle Structure - Software Engineering Excellence

    This attempts to apply the McKinsey Pyramid Principle to these software development thoughts and practices. Amazon Affiliates Link Buy on Amazon The Pyramid …
  • Breaking Down Problems

    Breaking Down Problems — Decomposition as a Core Skill Why It’s a Skill, Not a Step Decomposition is often treated as a planning activity — something that …
  • Clean Architecture

    Clean Architecture The Core Idea Clean Architecture, articulated by Robert C. Martin (Uncle Bob), is a way of organising code so that business logic is the …
  • Coding Tips — Principles in Practice

    Coding Tips — Principles in Practice These tips are the everyday expression of everything covered in this series — the micro-decisions that, made consistently, …
  • Cognitive Load

    Cognitive Load — The Hidden Cost of Complexity What It Is Cognitive load is the amount of mental effort required to hold and process information at any given …
  • Collaborative Development

    Collaborative Development — Beyond Strict Pair Programming (updated to include mentoring and teaching) The Spectrum of Collaboration Traditional pair …
  • Configurable Systems

    Configurable Systems and the Right Abstraction The Core Idea There is a class of problem where the right move is not to write another solution, but to recognise …
  • Continuous Integration and Delivery

    Continuous Integration and Delivery The Problem with Infrequent Integration Imagine two developers working independently on the same codebase for two weeks. …
  • Decision Making

    Decision Making Under Uncertainty The Problem With Deciding Too Early Architecture decisions are made at the worst possible time. At the start of a project — …