Software Is Change

Published in ·

Software is, by definition, a rule-system for changing data, that is itself meant to be changed easily (to change how the data is changed). If you are not designing your software application with the intention for it to be changed, altered, and/or adapted, you're doing it wrong.

If we knew exactly what we needed, and knew that that was all we would ever need, we would build it as hardware. Hardware is insanely faster, more secure, and less complex (that is, in what's necessary to represent the logic in physical form) than software processing. But software has the advantage of easily being changed with a few keystrokes and altering the result of the system for "free" (in the sense that no new physical tooling, testing, or construction/fabrication is necessary to make the desired changes). This should always be expected because that's literally what software is as a tool: changeable logic modules.

So, when you're typing in your editor remember that it's not good enough for it to "just work." You should always build any software with the intention to "work" (for today's current expectations) whilst also making changes easy (for tomorrow's expectations... because it will be different tomorrow).

We don't know what might change or what might stay the same. All components need to be thought about in this context. Software that can't be changed(easily) is just complicated hardware.