title: Theories of software engineering
body: <p>In my career I've come across two broad types of theory: physical theories and educational/management theories:</p>
  
  <p>Physical theories are either correct (under appropriate conditions) or incorrect, as judged by the physical world.</p>
  
  <p>Educational/management theories have the appearance of being like physical theories, but they lack rigorous testing. At best they give new ways of thinking about problems. Multiple theories are useful because one of them may speak to you in the right way.</p>
  
  <p>As an hobbyist student of software engineering there appear to be a lot of theories of software engineering (such agile programming, test driven design, patterns, extreme programming). Should I consider these theories to be physical-like or educational/management-like?</p>
  
  <p>Or have I mis-understood software engineering and find myself being in the position of "not even wrong"?</p>