When you build successful products, or services, your goal is to build something that is valuable. And in software development, we tend to see adding value and building with new things. With enabling new use cases, abandoning old limitations and creating simply better ways to do things.
The premise in this is quite simple. Software Development, being one of the youngest industries in the history of humankind, is on the edge and every day we uncover new ways how to push the envelope.
This is the narrative we are used to. This is the narrative we probably see, use and breathe.
Except that this is valid only and only in very new fields where almost any innovation can make old thing less relevant, less productive. This makes a lot of sense in software development, but it makes no sense in lots of activities we have now. New painting doesn't make Rembrandt's less relevant today.
List of paintings by Rembrandt
We are building framework based on a list of assumptions where some of them might seem very modern while others might seem they are outdates, but we believe they apply and nowadays are under-utilised and those who will pick them again, will get substantial advantage.
Things we see as innovative and way to go
- Clojure is a fantastic language, it is probably the highest level still practical language out there.
- Redux-flow is great, we are going to use re-frame frontend framework
- Models shouldn't have many layers of indirection. For example data mapper design pattern is often leading to flows that are unproductive, slow and hard for a developer when they want to utilize advanced SQL techniques.
- Data is data, function is function, flow is flow - which means that everything that is represented as data in underlying layer is data in our framework; on top of that, we build a set of functions using these data; and to modelling flow we are building monadic flow based functions that retain pure functional approach, referential transparency in places where other frameworks have lots of internal state, magic and which are near-impossible to be unit tested (like controllers, but also routers, often business logic).
- React-admin and similar helping apps can save a lot of time.
- SaaS is one of the fastest growing sectors in software development. We should provide SaaS scaffolding to kickstart development of such a product.
- One of repetitive tasks that are also source of security bugs is data ownership. Framework should give support in this.