Individual craftsmanship has a place even in an engineering discipline. “We who cut mere stones must always be envisioning cathedrals”

  • Care about your craft
  • Think about your work
  • You have agency
  • Provide options, not excuses
  • Don’t live with broken windows
    • Survey your project with your team. Choose 2-3 broken windows and discuss the problems and what could be done to fix them
  • Be a catalyst for change (like the soldiers with the stone soup)
  • Remember the big picture
    • Make sure you are making the change for the good of others, and not boiling the fabled frog.
  • Make quality a requirements issue
    • Would your users rather use software with rough edges today, than “perfect” software next year?
  • Invest regularly in your knowledge portfolio
    • Learn one new language every year
    • Read a technical book each month (read non-technical too)
    • Apply the same financial investing principles to your knowledge investments. Diversification, market timing, etc.
  • Critically analyze what you read and hear
  • English is just another programming language.
  • It’s both what you say and the way you say it
  • Build documentation in, don’t bolt it on
    • Comment about the WHY, code already describes the how
  • Good design is easier to change than bad design
  • Don’t repeat yourself
  • Make it easy to re-use
  • Eliminate effects between unrelated things
  • There are no final decisions
  • Forgo following fads
  • Use tracer bullets to find the target
  • Prototype to learn
  • Program close to the problem domain