”Complex systems are easier to build than to figure out after they’re working.” - Valentino Braitenberg
  • This Law of Downhill Invention, Uphill Analysis starts becoming visible as development teams and projects start scaling.
  • The person who creates the system knows the ins & outs of it. They start assuming & expecting same level of knowledge of the system from everyone on the team.
  • First thing to ensure productive development environment is to accept the overhead that comes with larger teams. It is a tradeoff for scale.
  • Stop using any words that suggest anything is simple or obvious in all team communication.
  • Write tests so people afraid of unintentional breakages can freely experiment with their ideas & contribute to the system.
  • Try pair programming. It is one of the best ways of knowledge transfer about systems.
  • Make an exhaustive README document for developers on the team. Start this on day 1 when you start building any system.

Full post here, 5 mins read