These seem to be obvious, but if so - why do I every now and then meet people who seem capable but ignore them happily?

  1. There’s a difference between software create by student who just did 3 days-long training and professional developer that has already created several applications using given technology. Significant difference. Humongous one - usually like between cardboard box under a bridge and a new villa.
  2. Creating crapware and then investing money to raise it to acceptable  quality level by applying test->fix cycle is dumb like a jar of nails.
  3. Time-boxing mixed with increasing scope will ALWAYS result in decreased quality.
  4. Temporary solutions are the ones to last the longest.
  5. If you re-assign Java developer to COBOL work, his productivity won’t really sustain (unless he’s fully capable in antiques). And you may end with a knife in a liver.
  6. Eskimos have 12 different words to name snow. Developers have 12 meanings for 1 single word "done".
  7. Business people are not the ones to design software. They are to say "what" has to be achieved, not "how" it will be achieved.
  8. There’s a significant difference between Analyst and Chronicler - the first one is supposed to think and abstract models. The latter is the one obliged to depict the reality directly. Hint: chroniclers shouldn’t participate in software development.
  9. Security and authorization models are so annoying because they are  meant to protect you from yourself.