JavaScript Scene
Published in

JavaScript Scene

Composing Software: The Book

Smoke Art Cubes to Smoke — MattysFlicks — (CC BY 2.0)

Note: This is part of the “Composing Software” book that started life right here as a blog post series. It covers functional programming and compositional software techniques in JavaScript (ES6+) from the ground up. “Composing Software” is also available in Print.

"Composing Software”, the hit blog post series on functional programming and software composition in JavaScript is now a best selling book on Leanpub. Also available in print.

On February 18th, 2017, I started writing a blog post on functional programming. “The Rise and Fall and Rise of Functional Programming” was to serve as an introductory article for a series of articles on software composition. I had no idea when I started writing that it would attract more than 100,000 readers, or that the articles that followed would attract over a million aggregate reads, or that it would become a book and jump up the Leanpub best sellers list the week it was announced.

My sincere thanks go out to JS Cheerleader, who made the book better in too many ways to list. If you find the text readable, it is because she carefully pored over every page and offered insightful feedback and encouragement every step of the way. Without her help, you would not be reading this right now.

Thanks to the blog readers, who’s support and enthusaism helped us turn a little blog post series into a phenomenon that attracted millions of reads and provided the momentum we needed to turn it into a book.

Thanks to the legends of computer science who paved the way.

“If I have seen further it is by standing on the shoulders of giants.” ~ Sir Isaac Newton

All software development is composition: The act of breaking a complex problem down to smaller parts, and then composing those smaller solutions together to form your application.

But I noticed while interviewing candidates for software development jobs, almost none of them could describe what composition is in the context of software. When I asked “what is function composition?” or “what is object composition?” in interviews, I got… stammers. Crickets. Nothing.

How could this be? How could 99% of professional developers — some with 10+ years’ of software development experience not know definitions or examples of the two most basic forms of composition in software engineering? Everybody composes functions and objects in the process of building software on a daily basis, so how could so many people not understand the basic foundations of those techniques?

The fact is that composition simply isn’t a subject that people pay attention to, or teach well, or learn. It occurred to me that maybe this is why overcomplicating things is the single biggest mistake software developers make every day. When you don’t know how to fit lego blocks together, you might break out the duct-tape and crazy glue and go nuts… to the detriment of the software, your teammates, and your users.

You can’t get away from composing software — that’s how software comes together. But if you don’t do it conscientiously, you’ll do it badly, which leads to a lot of wasted time, wasted money, bugs, and even critical human safety issues. I wrote this series — and book — to change that.

The trouble with the blog posts is that they never had an official index. Welcome to the official blog post index for “Composing Software: The Blog Posts”.

Eric Elliott is a distributed systems expert and author of the books, “Composing Software” and “Programming JavaScript Applications”. As co-founder of, he teaches developers the skills they need to work remotely and embrace work/life balance. He builds and advises development teams for crypto projects, and has contributed to software experiences for Adobe Systems,Zumba Fitness, The Wall Street Journal, ESPN, BBC, and top recording artists including Usher, Frank Ocean, Metallica, and many more.

He enjoys a remote lifestyle with the most beautiful woman in the world.

JavaScript, software leadership, software development, and related technologies.

Recommended from Medium

Exploiting postMessage()

React Native for App Development: 10 Motives Why Organizations Love It!

React Bootstrap Button Example — Bootstrap

GitHub Copilot in flight

The Forgotten History of OOP

State Management in Vanilla JS

Des MacBook Pro Touch Bar perdent leurs empreintes TouchID

Using BigCommerce Storefront APIs to Create Custom Product Display Page Experiences

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Eric Elliott

Eric Elliott

Make some magic. #JavaScript

More from Medium

How to Use Native ES Modules

Write Rock Solid Tests in Any Programming Language

Why Developers Fall Into the Trap of Reinventing the Wheel Costing Themselves Time and Causing…

Man hanging in net