[ samkhn Home | Comments or bugs? Contact me ]


Preventing Software Waste

Published: April 3, 2023

  • err towards not making decisions, especially ones you can't reverse
  • only keep a policy if the benefit it brings exceeds its cost/waste
  • hunt down slow-feedback loops. get to a YES/NO quickly
  • talk to users, when you do, practice a healthy degree of skepticism
  • have clear critical user journeys
  • break down large CUJs into smaller ones
  • measurements can be gamed so have a mix of quantitative and qualitative CUJs
  • if you do measure CUJs, verify metrics are met
  • finish features before starting new ones
  • update backlog with current work-in-progress
  • routinely work on bug fixes while doing feature work, especially of critical bugs
  • if possible, reduce scope and/or extend deadlines if its overbearing
  • start simple and iterate
  • learn to say no
  • don't multitask. if you must, limit it as much as possible
  • use the best tooling, understand your tools: the underlying architecture, core language libraries, basic data structures and algorithms, loggers, debuggers, profilers
  • replace hard to use libraries
  • write fast and accurate tests. every commit should have tests.
  • write fast and reliable builds. build every day
  • make root cause analysis easy
  • document your software. treat it like software
  • use pair programming, especially between junior and senior engineers
  • create an environment where team members can speak/share
  • practice blameless postmortems
  • practice conversation turn taking. explicitly ask quiet folks for input either in the meeting or later according to their comfort
  • do synchronous face to face checkups