Are there unbreakable laws ruling the process of software development? I asked myself this question while reflecting on a recent project, and the answer leads to many conclusions, some already known and some more revealing.
Scientific laws reflect reality and cannot be broken. They have strong implications onto how we build things. For instance, there is no point in building a car with vertical propulsion once you’ve observed that the law of gravity will prevent your car from drifting into space anyway. But software lives in the logical world. Does it really follow any laws?
The fixed context in every problem: Under fixed circumstances, every solution will behave the same way, unless it has been modified.
Impact of each change in software: The impact of a technical decision is directly proportional to the size of the project and to how much of it is affected.
Trade-offs in software development: Every technical decision comes with an implied tradeoff.
Source: The 3 Effects I’ve Noticed During Software Craftsmanship, http://chrismm.com/blog/the-3-laws-software-craftsmanship/