Grokking Simplicity
Taming complex software with functional thinking
Eric Normand
  • MEAP began August 2019
  • Publication in Spring 2020 (estimated)
  • ISBN 9781617296208
  • 325 pages (estimated)
  • printed in black & white

A very accessible introduction to functional programming for developers who don't already know anything about it.

Kent Spillner
Distributed across servers, difficult to test, and resistant to modification—modern software is complex. Grokking Simplicity is a friendly, practical guide that will change the way you approach software design and development. It introduces a unique approach to functional programming that explains why certain features of software are prone to complexity, and teaches you the functional techniques you can use to simplify these systems so that they’re easier to test and debug.

Available in PDF (ePub, kindle, and liveBook formats coming soon).
Table of Contents detailed table of contents

Part 1: Introduction to Functional Thinking

1 Welcome to the book

1.1 The standard definition of functional programming has some hidden assumptions

1.2 The definition of functional programming is confusing to managers

1.3 Many functional programmers do consider side effects as part of FP

1.4 Let’s look at some code you might find in any codebase

1.5 Functional programmers distinguish code that matters when you call it

1.6 Functional programmers distinguish inert data from code that does work

1.7 The three categories of code in functional programming

1.8 Why is functional programming gaining popularity?

1.9 I set out to make this the functional programming book I wanted to recommend but could’t find

1.10 Brain break

1.11 Conclusion

1.12 Summary

1.13 Up next . . .

2 Functional programming in action

2.1 Understanding how actions interact in time

2.2 Timelines help you understand distributed systems.

2.3 Multiple timelines can execute in different orderings

2.4 Hard-won lessons about distributed systems

2.5 Cutting the timeline: Making the robots wait for each other

2.6 Positive lessons learned about timelines

2.7 Using the same data for multiple purposes

2.8 Comparing functional programming to an object-oriented approach

2.9 We use data all the time outside of the computer

2.10 Representing a recipe as data

2.11 Organizing code by “rate of change”

2.12 A group of basic operations for shopping lists

2.13 Using the shopping list operations to manage orders

2.14 Buying flour

2.15 Conclusion

2.16 Summary

2.17 Up next . .

Part 2: Mastering time

3 Distinguishing actions, calculations, and data

3.1 Actions, calculations, and data

3.2 Actions, calculations, and data apply to any situation (1 of 3)

3.3 Actions, calculations, and data apply to any situation (2 of 3)

3.4 Actions, calculations, and data apply to any situation (3 of 3)

3.5 Lessons from our shopping process

3.6 Deep dive: Data

3.7 Applying functional thinking to new code

3.8 Brainstorm!

3.9 Drawing the coupon email process (1 of 5)

3.10 Drawing the coupon email process (2 of 5)

3.11 Drawing the coupon email process (3 of 5)

3.12 Drawing the coupon email process (4 of 5)

3.13 Drawing the coupon email process (5 of 5)

3.14 The more you break up calculations, the easier they become to implement.

3.15 Implementing the coupon email process (1 of 5)

3.16 Implementing the coupon email process (2 of 5)

3.17 Implementing the coupon email process (3 of 5)

3.18 Implementing the coupon email process (4 of 5)

3.19 Implementing the coupon email process (5 of 5)

3.20 Deep dive: Calculations

3.21 Applying functional thinking to existing code

3.22 Actions spread through code

3.23 Actions can take many forms

3.24 Deep dive: Actions

3.25 Conclusion

3.26 Summary

3.27 Up next . . .

4 Extracting calculations from actions

5 Improving the design of actions

6 Isolating timelines

7 Sharing resources between timelines

8 Cutting timelines

9 Making timelines equivalent

10 Modeling change over time with calculations

11 Modeling change over time with data

12 Separating decisions from actions

Part 3: Mastering (state) space

13 Modeling facts with data

14 Creating interfaces to work with data

15 Augmenting data models

Part 4: Mastering architecture

16 Universal Process Pattern

17 Stratified design

18 Onion architecture

19 Creating ledgers

About the Technology

Even experienced developers struggle with software systems that sprawl across distributed servers and APIs, are filled with redundant code, and are difficult to reliably test and modify. Adopting ways of thinking derived from functional programming can help you design and refactor your codebase in ways that reduce complexity, rather than encouraging it. Grokking Simplicity lays out how to use functional programming in a professional environment to write a codebase that’s easier to test and reuse, has fewer bugs, and is better at handling the asynchronous nature of distributed systems.

About the book

In Grokking Simplicity, you’ll learn techniques and, more importantly, a mindset that will help you tackle common problems that arise when software gets complex. Veteran functional programmer Eric Normand guides you to a crystal-clear understanding of why certain features of modern software are so prone to complexity and introduces you to the functional techniques you can use to simplify these systems so that they’re easier to read, test, and debug. Through hands-on examples, exercises, and numerous self-assessments, you’ll learn to organize your code for maximum reusability and internalize methods to keep unwanted complexity out of your codebase. Regardless of the language you’re using, the ways of thinking in this book will help recognize problematic code and tame even the most complex software.

What's inside

  • Apply functional programming principles to reduce codebase complexity
  • Work with data transformation pipelines for code that’s easier to test and reuse
  • Tools for modeling time to simplify asynchrony
  • 60 exercises and 100 questions to test your knowledge

About the reader

For experienced programmers. Examples are in JavaScript.

About the author

Eric Normand has been a functional programmer since 2001, and has been teaching functional programming online and in person since 2007.

Manning Early Access Program (MEAP) Read chapters as they are written, get the finished eBook as soon as it’s ready, and receive the pBook long before it's in bookstores.
MEAP combo $25.00 $49.99 pBook + eBook + liveBook
MEAP eBook $39.99 pdf + ePub + kindle + liveBook
Prices displayed in rupees will be charged in USD when you check out.

placing your order...

Don't refresh or navigate away from the page.

FREE domestic shipping on three or more pBooks