Organic Design

Grow Your Software

Iteration #1

  • Start Simple
  • Create a minimum working slice
  • Focus on your craft
  • Grow your system organically

Building a Resume Site

contain

Building a Resume Site

Thanks for coming!

Iteration #2

  • Start Simple
  • Create a minimum working slice
  • Focus on your craft
  • Grow your system organically

Second Pass

contain

Simple Solutions

The immature developer makes simple problems complicated. The mature developer makes complicated problems simple.

Philosophy of Unix

  • Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features.
  • Design and build software, even operating systems, to be tried early, ideally within weeks
  • Don't hesitate to throw away the clumsy parts and rebuild them.

Philosophy of Unix

  • May 2015 estimate that 96.55% of web servers run Linux
  • Android is linux, capturing the vast majority of phones globally

What’s a Hacker?

Today - Guy in a hoody in a dark room that makes a hollywood plots work


1960s - Men and women who realized you could build things using computers. A hungry, independent, collaborative, creative, culture.


Hack something together vs Hacking through it yourself

Refactoring

  • Tending the lattice upon which the vine grows
  • Pays down technical debt
  • Allows you to organically grow

Thanks for coming!

Iteration #3

  • Start Simple
  • Create a minimum working slice
  • Focus on your craft
  • Grow your system organically

Mythical Man Month

  • The tar pit of large software
  • Having a baby
  • The ongoing struggle
  • The tower of babel
  • The surgical team

Mindsets for Simplicity at All Levels

  • Organization Level
  • Scope Level
  • Card Level
  • Individual work (TDD etc)

Cathedral and the Bazaar

  • Simplicity is elegant
  • Unix vs Multix
  • Ordained structures vs marketplace of ideas
  • Waterfall vs agile

Iterative

contain

Building Software is Art

“Of all the different types of people I’ve known, hackers and painters are among the most alike” - Paul Graham, Hackers and Painters

Hacker Mindset

  • Thinking forbidden thoughts
  • Developing Taste
  • Industry best practice - the warning sign
  • You must know the pattern before you can dismiss it

Lean Manufacturing

  • Limit WIP
  • Everything JIT

When in doubt, use brute force

  • “Make it work, make it right, make it fast.” — Kent Beck
  • “Premature Optimization Is The Root Of All Evil” – Donald Knuth

Refactoring Too Soon

  • Specific vs Generic
  • When is it DRY?
  • Refactoring to understand

Bad Refactors

  • Opinion Infighting
  • The hills you die on
    • Is it a flag, a stake, or a gravestone?
  • YAGNI

Iteration #4

  • Start Simple
  • Create a minimum working slice
  • Focus on your craft
  • Grow your system organically

Killing Your Darlings

  • What do you think you need?
  • What do you actually need?

Level of Detail

Delaying Commitment

  • Don’t commit before it’s time

Kill Your Darlings (again)

  • Don’t fear the larger refactor when it’s warranted

Further Reading