Skip to content

Mindset

Software Design

In terms of software design, there are two overarching approaches:

  • tactical - focus to get something working, such as a feature or bug fix
    • nearly impossible to produce a good system design
    • initially deliver faster, but the time saved is quickly given back as development slows - technical debt builds up quickly
    • Adoptee: Facebook, with their motto "Move fast and break things"
  • strategic - focus to produce a great design, which also happens to work
    • working code is not considered enough
    • initially deliver slower, but the cost of this investment becomes free as development accelerates
    • Adoptee: Google, with heavy emphasis on high quality code and good design

Small Ahas

An aha is a an expression of satisfaction, triumph or surprise. An experiment discovering what works or needs improvement; rapidly learning what will produce the desired outcome.

A small aha differs from the lean manufacturing notion of a 'small batch'. While a small batch emphasises speed for completing work, a small aha emphasises speed to discovery.

A "small aha" requires:

  • Speed - we arrive at an aha as fast as possible
  • Learning - every aha helps us learn and adapt
  • Safety - we are safe to succeed or fail as we learn

It is an implementation technique for living the motto "Outcomes Over Outputs". The focus is on discovering how to deliver a key outcome over simply reporting on work completed. It makes us adaptive and keeps us in a continous state of flow to accomplish important outcomes.

Assessing New Technologies

Ask questions to keep conversation rounded and realistic.

  1. Does it solve a real meaningful problem? What are the core tenets? What are your core problems and does it solve them?
  2. Does it change the way you work? Can you do something a lot faster? Or maybe something you don't need to do anymore?
  3. Does it create new problems? Maybe as its faster, creates more work and that requires a lot more insight to discern. Maybe makes one thing faster and another slower.
  4. Does it work securely and reliably? e.g. not dumping IP into an LLM; hallucinations, etc.
  5. When things break, is it clear what steps need to be taken? Do you have the right people, do you have the resources you need, is it something you can reason about it? If you blindly trust a technology, what will you do when it stops working?

References