Concurrency: it’s way easier when values don’t change. True fact! But what else can we gain from making our data immutable? Let’s look at the benefits and tradeoffs–beyond concurrency–of applying the concept of immutability to real world programs. We'll start by looking at the history of immutability in programming, both in the object-oriented and functional paradigms, and examine ways it can reduce our cognitive burden and improve readability. We'll discuss some elegant and counter-intuitive outcomes of functional data structures that take advantage of immutable data. With those in mind, we’ll take a hard look at the performance of implementations of immutable collections in real-world programming languages. Finally, we'll explore frameworks do exciting things with immutable data, from the database level (append-only DBs) to data processing (Samza) to front-end development (Facebook’s React & Om).
Decoding Paradoxes: Why are many good ideas in Software Delivery counter-intuitive
How does deploying more frequently improve quality? How does slack time in a team improve reliability? Why should we do it more often if it hurts? These are counter-intuitive concepts that don't make sense at first, and you'll be met with a bewildered stare...