Understanding Simplicity

BetterWays.dev: Understanding Simplicity is my attempt at distilling the most important lessons I learned over 3 decades of software/web development and system administration into a series of easy-to-follow guides/ebooks.

Functional Core, Imperative Shell

In the first guide of the series (called "Functional Core, Imperative Shell"), we are going to create an elegant, general-purpose build tool and use it to build an example website.

By going through this process, we are going to explore many important topics like combining imperative and functional programming (i.e. by isolating the imperative parts into the outer shell, and keeping our inner core pure), creating a flexible, storage-agnostic architecture, and writing clean and testable code in general.

We are going to build everything from the scratch, and use external dependencies only where it's really necessary.

Note: while I'll try to keep things also relatively friendly towards new programmers, some experience with JavaScript and an understanding of general programming concepts are required.


Series index:

Imperative Shell, Functional Core (part 1)

In the first part of this guide, we're going to go through all the relevant concepts, and build the outer shell. The second part will be focused on the inner core.

Download