Two values that a software system provides – Behavior and Structure.
Behavior – Developers are hired with the intent to make the machine behave in a way that makes the client work better or saves money.
Structure – Software must be designed to be soft, ie easy to change.
Which of these two provide more value?
Let’s think we have two systems –
- First system is working but is impossible to change. If a new requirements come, it will be impossible to make it work and therefore will become useless
- Second system is not working but is very easy to change. It can be modified to be in working condition and continue functioning with new requirements
So, the structure/architecture is the more important value.
However often times, in order to deliver quickly, we compromise on the architecture of the system and end up spending more cost and time later when new requirements need to be added.
Eisenhower’s matrix
As we can see, eisenhower had a matrix in which he divided problems –
- Important and urgent
- Important and not urgent
- Not important and urgent
- Not important and not urgent
Software Behavior is urgent but can be important or not important. So it qualifies for 1 and 3.
Software architecture is important but not urgent. So it qualifies for 2.
Most times, managers and developers prioritize 3 over 1, focusing on features which are not important instead of the important and urgent. This leads to ignoring important architecture of system in favor of not important features. We as software developers and software architect should fight for the architecture of the system to implement the system in right way from start.
Thanks for stopping by! Hope this gives you a perspective on values software system provides and which one is important and why. Post comments to start a discussion. See you in the next post.