liveBook · Manning

Chapter 19: The functional journey ahead

What you will learn in chapter 19 of Grokking Simplicity

This chapter introduction closes the book and previews advice on applying functional programming skills and continuing to learn.

After this chapter you will be able to

What it builds on

Section by section

Introduction

This chapter introduction closes the book and previews advice on applying functional programming skills and continuing to learn.

19.1 A plan for the chapter

This section outlines the chapter’s plan for moving from learned functional programming concepts toward practical skill and further study.

19.2 We have learned the skills of professionals

The section recaps the professional functional-programming skills taught in the book, grouped into actions, calculations, and data and first-class abstractions.

Key terms: actions, calculations, data, implicit inputs and outputs, immutability, stratified design, first-class abstractions, functional iteration, functional tools, data transformation pipelines

19.3 Big takeaways

This section distills the book into three takeaways: extract calculations from actions, use higher-order functions to remove repetitive code, and control when and how often actions run.

Key terms: actions, calculations, data, rate of change, onion architecture, higher-order functions, abstraction, domain, temporal semantics, timelines

19.4 The ups and downs of skill acquisition

This section describes how functional programming skills mature through experimentation and why using a new skill too eagerly in production can be harmful.

Key terms: skill acquisition, mastery, production code, readability, maintenance

19.5 Parallel tracks to mastery

This section proposes parallel sandbox and production tracks for practicing functional skills while judging when each skill is ready for real-world use.

Key terms: two-track model, Sandbox, Production, mastery, refinement and judgment

19.6 Sandbox: Start a side project

This section gives four criteria for choosing a side project that makes practicing new skills manageable and enjoyable.

Key terms: side project, whimsical, familiar skills, one new skill, stable foundation

19.7 Sandbox: Practice exercises

This section recommends short, low-stakes exercises for practicing functional programming skills in different ways and under practical constraints.

Key terms: isolated exercise, sandbox, Code Katas, different skills, testing, Project Euler, memory limitations, performance limitations, stack size limitations

19.8 Production: Eliminate a bug today

This section recommends two small, practical ways to eliminate bugs in an existing codebase: remove a global mutable variable or fix a problematic timeline.

Key terms: global mutable variables, implicit inputs and outputs, timeline diagrams, race conditions, isolating, sharing, and coordinating, undesirable orderings

19.9 Production: Incrementally improve the design

The section shows how small changes to production code can gradually improve its functional design.

Key terms: incremental, design, action, calculation, extract, implicit input, implicit output, explicit, coupled, for loops

19.10 Popular functional languages

This section presents popular functional languages as practical choices and gives brief examples of how they differ.

Key terms: functional languages, libraries, general-purpose programming language, ClojureScript, Java Virtual Machine, actors, fault tolerance, statically typed

19.11 Functional languages with the most jobs

This section recommends functional languages to learn when job opportunities are the main goal.

Key terms: Elixir, Kotlin, Swift, Scala, Rust, Clojure

19.12 Functional languages by platform

This section groups functional languages by the platforms they can target.

Key terms: platform, Browser (JavaScript engine), Web backend, Mobile (iOS and Android), Embedded devices

19.13 Functional languages by learning opportunity

This section helps readers choose a functional language to explore based on what its prominent features can teach them.

Key terms: static typing, type systems, functional tools, data transformation, concurrency primitives, actor model, type system, multiple timelines

19.14 Get mathy

Introduces several mathematical ideas behind functional programming and briefly describes how they relate to functions, types, and effects.

Key terms: lambda calculus, combinators, type theory, static type systems, category theory, effect systems, monad, applicative functor, immutable data

19.15 Further reading

The section recommends further reading for different functional-programming interests and encourages readers to explore books for their chosen languages.

Key terms: Functional-Light JavaScript, Domain Modeling Made Functional, Structure and Interpretation of Computer Programs, Grokking Functional Programming, functional programming, functional languages

19.16 Conclusion

The conclusion encourages readers to apply the functional programming skills they have learned, keep practicing, and explore further learning when ready.

19.17 Summary

19.18 Up next…

Concepts explained in this chapter

← Chapter 18: Reactive and onion architectures

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.