All computer systems are equal

Filed under: Software development, — Tags: As simple as possible, KISS, Keep It Simple Stupid, Right abstractions — Thomas Sundberg — 2012-10-13

All computer systems are equal, but some systems are more equal than others. At least on a high level.

They are all subject to these actions:

The business value of the system is in the data retrieved from the system. The value is created when the business rules are applied on the input. There is no business value in the input. You might express the relationship as:

Business rules (Data) = Business value

There are differences between systems. The data that is added is different. The business rules are different. The data storage is different. The business values are different.

Challenges

The biggest challenge is often to understand what the customer actually wants. When that has been understood, you have to figure out a logical flow of the information and how the business rules should be applied.

The rest is technology. Technology is less important than most managers think. It doesn't matter if you aren't an expert on a particular tool or technology. If you need to be an expert, the solution is probably too complicated.

Consequence

The enlightened, or sometimes cynical, developer has realized that all we do is shuffling text. The things entered are text; the business rules transforms the text and retrieving the business values are done by returning text transformed by the business rules.

This view also implies that if you need to focus on something else, then replace all complicated things with better abstractions. This could for example be data storage. If there isn't any need for a database from your current perspective, replace it with a simple class that holds the values in some collection instead. There is no need for a mocking framework in many simple cases. A trivial, hardcoded class is sometimes enough. Some people will think that this is cheating. I think it is just being smart and focusing on the right thing.

Conclusion

The differences between systems are actually a lot smaller than what some people want to think. Stuff are entered, transformed, persisted and returned. That's it. This view tends to provoke people a lot. But I am still waiting for somebody to show me any computer system that is radically different.

Remember Albert Einstein's words: "Everything should be made as simple as possible, but no simpler."

Always strive for KISS, Keep It Simple Stupid.

Credits

Thank you Johan Helmfrid and Malin Ekholm for your feedback. It is, as always, much appreciated.

Resources



(less...)

Pages

About
Events
Why

Categories

Agile
Automation
BDD
Clean code
Continuous delivery
Continuous deployment
Continuous integration
Cucumber
Culture
Design
Executable specification
Gradle
Guice
J2EE
JUnit
Java
Linux
Load testing
Maven
Mockito
Pair programming
PicoContainer
Programming
Public speaking
Quality
Recruiting
Requirements
Scala
Selenium
Software craftsmanship
Software development
Spring
TDD
Teaching
Technical debt
Test automation
Tools
Web
Windows
eXtreme Programming

Authors

Thomas Sundberg
Adrian Bolboaca

Archives

Meta

rss RSS