Principles - paulvi/notes GitHub Wiki

A few principles for Software Engineering:

  • Software quality cannot be added. It is has to be cared from the begging with right architecture and engineering practices. The later someone starts to clean it up, the more things will and should be cut. Uncared software becomes debt instead of asset, and dies painfully.
  • "It is impossible to automate mess. It will be automated mess." used to say my first mentor 15+ years ago. So it is all starts with clarification and organizing things. Do change processes right before trying to automate them.
  • Adding new people into a project will make it run slower (at least for few months)
  • If team has communication difficulties, integrating will be lasting trouble. Organization structure defines architecture. Bring clear API for subsystems. Subsystems should be able to update independently, resilient to outer factors.
  • Initialize clearly, fall quickly. Software should have clearly seen initialization phase in logs, and when resolvable situation happens, that part should fail with message and not be in unknown state.

Personal principles

  • People first. Success is first defined by people cooperation. If we are to walk together over long time we are to resolve any personal misunderstanding and conflicts of interests.
  • Do not tolerate lie in any form. Build up trust relationship through openness and showing results of work. Lie kills trust.

Integrity, honesty, investing in people, just like big company do http://www.msdcapital.com/businessprinciples.htm