Software problems aren't like mathematical problems. They have no clear boundaries or axioms and the problem domain is always shifting and evolving and changing. This fundamental difference ensures that while mathematical knowledge has a long shelf life, technical knowledge seems to last little longer than most popstars. And the changes wrought in programming are not just shallow refinements or surface innovations but fundamental changes wrought by order-of-magnitude shifts in the virtual landscape.

From http://blogs.concedere.net:8080/blog/discipline/software+engineering/?permalink=The-Problematic-Nature-of-Problems.html