Start of main content
High Optionality Programming: software architectures that reduce technical debt
Technical debt is a term dreaded by software developers everywhere, as it means having to pay the price today for the inflexible choices we made yesterday - often compounded by years of subsequent layers of decisions added on top of our original choices.
What if there were a way to make different upfront choices at the inception of our software systems that would lead to more flexible software systems that could evolve at lower cost and less agony? That's what we intend to introduce in this talk: "high optionality programming" - building software systems that preserve future choices and reduce their costs.
In this talk we introduce the concepts and language of high optionality programming, along with some time-tested patterns for implementing it - such as:
- Prefer event-driven programming over remote procedure calls;
- Persistence ignorance is bliss, but event-sourcing is better;
- Command Query Responsibility Segregation;
- Apply functions over data - decouple stateful domain objects from business rules;
- Use actors to make systems dynamic, queryable, and recoverable; and
- Embrace extend-only design on schemas of any kind.
We will be focusing on event-sourcing and CQRS in .NET, Akka.NET, F# and functional programming in C#, and several other combinations of technologies that can help deliver a lower tech-debt future to .NET developers in general.