FP vs. OO

Over the last several years I have paired with people learning Functional Programming who have expressed an anti-OO bias. This usually comes in the form of statements like: “Oh, that’s too much like an Object.” I think this comes from the notion that FP and OO are somehow mutuall … | Continue reading


@cleancoder.com | 6 years ago

In The Large

From the very first moments of the Agile revolution we pondered the question of Agile in the Large. How could we take the principles of light-weight, iterative, incremental, high-feedback development and apply them to truly huge projects? At first the answers were things like Scr … | Continue reading


@cleancoder.com | 6 years ago

We Programmers

The Good. There is a little red sports car heading out towards the asteroid belt and, we programmers put it there. Oh, I don’t mean to give short shrift to Elon Musk and all the rocket scientists and engineers at SpaceEx. It was their vision, and their accomplishment. But they c … | Continue reading


@cleancoder.com | 6 years ago

Uncle Bob Fly-In.Have I got a deal for you!

I just got my pilot’s license. That means I can fly! So now I want to fly – to you! I want to fly to anyone within a 500 nautical mile radius of Chicago (see map below), to give talks, conduct workshops, and provide training… At Half Price! 500 nautical miles includes cities like … | Continue reading


@cleancoder.com | 6 years ago

The Citizenship Argument

An old friend of mine recently posted a video blog that I found to be brilliant. Mike (GeePaw) Hill presented Five Underplayed Premises of TDD on a web page that contains an article and a video. The video and the article appear to be identical in content; so you can read, or list … | Continue reading


@cleancoder.com | 6 years ago

Operating Behind the Power Curve

I promise that this blog is about software. So bear with me for a bit. What happens when you increase the throttle in an airplane? You go faster, right? More power to the engine means more thrust which means more speed. Most of the time this is true; but there’s a different mode … | Continue reading


@cleancoder.com | 6 years ago

Excuses

The parallels between double entry bookkeeping and Test Driven Development are deep and plentiful. Both are disciplines used by experts who carefully manipulate complex documents full of arcane symbols that must, under pain of terrible consequences, be absolutely correct in b … | Continue reading


@cleancoder.com | 6 years ago

The Brain Problem

Imagine an information processing system composed of over 100 billion components that are deeply interconnected to one another. The interconnections are physical and dedicated – they aren’t on a buss. Imagine that the entire system is an analog computer. Analog computers are mu … | Continue reading


@cleancoder.com | 54 years ago

TDD Harms Architecture

The idea that TDD damages design and architecture is not new. DHH suggested as much several years ago with his notion of Test Induced Design Damage; in which he compares the design he prefers to a design created by Jim Weirich that is “testable”. The argument, boils down to sep … | Continue reading


@cleancoder.com | 54 years ago

Symmetry Breaking

Imagine that you are an accountant. You are responsible for manipulating arcane symbols, concepts, and procedures in order to create deeply complicated and detailed financial models for your business. The stakes are enormous. Accuracy is essential. Millions wait to be lost or … | Continue reading


@cleancoder.com | 54 years ago

Is Dr. Calvin in the Room?

I saw Grady’s tweet today, and I read the article it referenced; and it got me to thinking. Is the training of a neural net a kind of programming? It is the kind of activity that an agile team could plan, estimate, and execute in iterations? Or is it something entirely differe … | Continue reading


@cleancoder.com | 54 years ago

Test Contra-variance

Do you write unit tests? Yes, of course!Do you write them first? Yes, I follow the three laws of TDD.What is the difference in module structure between your tests and your code? I create one test class per production class.So if you have a production class named User you will … | Continue reading


@cleancoder.com | 54 years ago

First-Class Tests.

I believe it may be my fate to find blogs written by people who have fallen prey to unfortunate disciplines that have led them to give up on unit testing. This blog is just another one of those.The author tells of how his unit tests are fragile because he mocks out all the colla … | Continue reading


@cleancoder.com | 54 years ago

Pragmatic Functional Programming

The move to functional programming began, in earnest, about a decade ago. We saw languages like Scala, Clojure, and F# start to attract attention. This move was more than just the normal “Oh cool, a new language!” enthusiasm. There was something real driving it – or so we thoug … | Continue reading


@cleancoder.com | 54 years ago

Drive me to Toronto, Hal.

I keep reading articles in the news about the imminent inevitability of driverless cars. The financial news is all abuzz over the idea. So are the techies. The predictions are that truck drivers, cab drivers, and Uberists will all be out of work in the next five years.I have o … | Continue reading


@cleancoder.com | 54 years ago

Women In Demand

The demand for programmers is high, and growing: “According to the U.S. Bureau of Labor Statistics, software developer jobs are expected to grow 17% from 2014 till 2024. They categorize this growth as “much faster” than the average rate among other professions.” Forbes 2017The … | Continue reading


@cleancoder.com | 54 years ago

Tools are not the Answer

I just finished reading an extremely depressing article in The Atlantic entitled: The Coming Software Apocalypse. The article does a good job, at first, of describing several terrible software bugs that have harmed, maimed, and killed people. But then the article veers off in a … | Continue reading


@cleancoder.com | 54 years ago

Thought Police

Let me tell you the sad story of Edward. Poor Edward is an escalator operator working for a company named Escalators-R-Us (ERU). ERU had noticed that people less than the average height (short people) tend not to become escalator operators. In fact, at ERU, only 20% of escalat … | Continue reading


@cleancoder.com | 54 years ago

On the Diminished Capacity to Discuss Things Rationally

I can divide the negative responses to my previous blog into the following categories: The Outraged Haters. “You F-ing Clown.” The Condescending Elitists. “Oh, Bob, I’m so dissapointed.” The Unprepared True Believers. “Subduction can’t be tolerated.” The Rational Disagreers. … | Continue reading


@cleancoder.com | 54 years ago

Just Following Orders

The year is 2006. Executives at VW know that their diesel engine can not meet American emissions standards. So they ask the enginers for a solution that does not require a redesign of the engine.Imagine the scene in that meeting room. What was said? What was agreed to? We ma … | Continue reading


@cleancoder.com | 54 years ago

Living on the Plateau

Languages have evolved quite a bit over the years. The early evolution from machine language to assembler was necessary and obvious. The evolution from assembler to Fortran and Basic was also necessary and obvious. We might even say that the evolution of COBOL was predictable, … | Continue reading


@cleancoder.com | 54 years ago

Bobby Tables

SQL is demon spawn, and no self-respecting software developer should ever use it.OK, that’s a little hyperbolic. Demons did not create SQL. Indeed, the folks who created it were filled with nothing but good intentions.But you know what they say about the road to hell.I want you … | Continue reading


@cleancoder.com | 54 years ago

Women in Tech

I started my career as a programmer in 1969 at a company called A.S.C. Tabulating in Lake Bluff, Illinois. ASC had two IBM 360s that they rented out to customers. They also provided programming services for those customers. I was hired as a COBOL programmer at the tender age o … | Continue reading


@cleancoder.com | 54 years ago

Dbtails

A Bit of History about Bits.Memory was always the problem. Once we had established that we could process information with relays, or vaccuum tubes, or transistors; the problem was where to keep the information we were processing.Random Access Memory (RAM) within the computer was … | Continue reading


@cleancoder.com | 54 years ago

Testing Like the TSA

I was very glad to read in DHH’s recent post that he is actually still using TDD***. I’m glad he has realized that TDD is not, in fact, dead.This blog is a simple response; just to state a couple of disagreements. But I have to say, I agree more than I disagree.DHH presented se … | Continue reading


@cleancoder.com | 54 years ago

Sierra Juliet Foxtrot

Thanks to John Sonmez for the title.Clean Architecture is on the stands! The response has been terriffic. Thanks for all your support.But just you wait until the SJFs read the chapter on Frameworks. OMG! Their poor little snowflake hearts will just melt away. I mean, I actua … | Continue reading


@cleancoder.com | 54 years ago

The Unscrupulous Meme

There is a meme running rampant in our society, and our industry, that we need to confront and resist. It is the unscrupulous meme: The ends justify the means.This meme is unscrupulous by definition. When a person has scruples it means that they choose honorable means to achiev … | Continue reading


@cleancoder.com | 54 years ago