This is a repost from Medium.
For some time we have already been seeing great advances in the technology that powers consumer products. The progress is undeniable, as personal communication, transportation, productivity, media consumption and access to information have been revolutionised.
Having said that, my personal excitement is focused on Enterprise Software and how science and technologies advance this space. What’s truly alluring about Enterprise Software is not only that it delivers direct value to organisations, but also, in doing this, it delivers more value to their customers. That cascading effect is fascinating.
For the past six years, I have been building the next generation of Enterprise Software Technology at Base.
That experience has yielded what today I want to share with you, a set of fundamental rules for architecting technology for enterprises. You need to ‘live and die’ by these rules if you want to see great outcome. Every single decision you take needs to be 100% aligned. It is a mental framework that will help you ship great products.
I wanted to start with principle 0, which is the building block for all further ones. Skipping this one will make you focus on the wrong things, so let’s put it on the table to start with.
0. Technology is here to enable customers.
Too many times I have seen technology being built only for the sake of technology. Succeeding on the market means fully immersing yourself and the whole company in the customers and the product. Technology is only a means to build a product and to deliver value to the customers. Think ultimate pragmatism.
As for the other 12 principles, I am going to cover them in detail in my next postings. Here is a preview.
Next generation of Enterprise Software Technology:
- Is data oriented.
Mutable Data is dead. Long live Immutable Data. How great a role does immutable data play for enterprises?
- Enables ubiquity.
How can mobile first technology be designed?
- Is fast.
What does application speed really mean? How can it be properly measured and acted upon?
- Is trustworthy.
Embedding security within your stack? It’s all about data driven security.
- Is open.
Expose everything — data, services and infrastructure.
- Is cheap and reusable.
Optimising your stack for fast value delivery in order to stay ahead in a competitive market. Performance, productivity and generality.
- Is easy to reason about.
Robustness of technology means ability to instantly know how stuff works. Complex design is your enemy.
- Is consistent.
Design decisions need to be implemented through the entire architecture. It is a matter of principle. It is super hard to keep technology consistent at all times, however otherwise you will find it slowing you down.
- Is designed for failure.
Independent components fail independently. Be ready!
- Is scalable.
Scalability is the ability to support both more customers and bigger customers. Your architecture does the right things if you can throw in more boxes.
- Is disposable.
Always be ready to burn everything and rebuild from scratch within minutes.
- Is as little technology as possible.
Simplify and minimise your stack. Enterprise software dies as it gets complex.