5 Oct 20104 min readMaking complex software not complicatedBreaking down difficult problems by isolating dependenciesdependency injectionunit-testing