Thursday, December 31, 2015

Flow is the intersection of prevailing improvement methods


The First Law of Supply Chain


Life cycle of a product


Input/output control


Priority planning and production activity control


Capacity versus load


Star Wars the Force Awakens - Heavy Metal Version

Please hear my anguish words of truth

MICHAEL ANGELO BATIO - 2x Again

Friday, December 11, 2015

Rewrite!

Behavior is the most important thing about software

Behavior is the most important thing about software. It is what users depend on. Users like it when we add behavior (provided it is what they really wanted), but if we change or remove behavior they depend on (introduce bugs), they stop trusting us.

Legacy code is simply code without tests

Code without tests is bad code. It doesn’t matter how well written it is; it doesn’t mat- ter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behavior of our code quickly and verifiably. Without them, we really don’t know if our code is getting better or worse.

Refactor x Rewrite


The Legacy Code Dilemma

“When we change code, we should have tests in place. To put tests in place, we often have to change code.”

[Feathers 2005]


Developers and architects like to build things


Reasons for the code base getting worse over time,


  • More and more features. It leads to increased complexity.
  • Shortcuts and hacks to support “We need this fancy search till August. Period!” features
  • Developers rotation. New developers don’t know all the fundamental decisions and ideas behind the architecture. Knowledge gets lost with transition inevitably.
  • Development team growth. More people - less communication. Less communication - bad decisions.