A blog about software and making.

Odds & Ends - March 2015

Thoughts, terms, and ideas I’ve come across over the last few months.

  • Avoid misunderstandings by making the implicit explicit
  • API Design - Don’t operate on one object if you can operate on many instead. If you do something once, there is a good chance you will do it 100x times. src
  • A good tech leads shield engineers from distractions and give support when needed. Enable people to do their jobs.
  • A good software architect makes the complex simple. Your job is to reduce complexity.
  • Pretend you had to create a schedule before you knew the requirements or you needed to estimate how long it will take to solve an unsolved problem.
    • When you don’t know what you are going to build then you cannot know how long it will take to build it.
    • You only really know for sure what you are going to build when you finish it.
    • A good way to document requirements is to create a user manual.
  • Code can be divided into algorithms that do work on data or coordinators that coordinate external dependencies with algorithms. Algorithms are easy to test.
  • Agile - build a little, test a little.
  • When you have a mess of short functions plagued by lots of behavior modifying arguments the boundary between component and layers is slowly dissolved, and nobody is sure what particular effect a change may have anymore.
  • Once you get rid of accidental complexity you are left with essential complexity, which cannot be reduced without removing functionality.
  • Reference equality, value equality and identity (PK) equality … are not equal.
  • One of the benefits of returning ASAP is the happy path isn’t identically nested anymore.
  • Identity map pattern - Ensures each object is only loaded once. One copy of an entity will be loaded at a time per transaction. One copy that everyone updates so, there are no update anomalies.
  • Immutable Infrastructure - Infrastructure built from golden images. Changes are made to the images, and the entire infrastructure should be redeployed by destroying the old deployment.