Dave Farley Profile picture
Software Engineer, Consultant & Author. Latest YouTube Video: https://t.co/6f6fyqZ3Jc Support Me On Patreon: https://t.co/7VzLHbRT4A
Nov 7 14 tweets 3 min read
We tend to talk in terms of analogy a lot when talking about software, we talk about text when we mean ASCII encoded binary, and files when we mean chunks of data, of software dev being like movie making or production lines.
I have been thinking a lot about a different analogy lately though, TDD as Measurement...
a #Thread
1/14 However, I am not too sure that this is an analogy at all, or is more like a completely accurate description of what we are doing when we practice TDD.
2/14
Oct 14 14 tweets 3 min read
Yesterday our species made a significant step forward in technological progress. This wasn't a result of individual brilliance, nor of some cookie-cutter, bureaucratic approach to development, rather this was the application of humanity's pinnacle of creativity - ENGINEERING
a #Thread
1/14
The launch and recovery of the world's biggest, most advanced, space craft - SpaceX's Starship, represents a huge step forward in the direction of truly reusable space travel, as a result dramatically lowering the cost of getting stuff into space.
2/14
Sep 26 14 tweets 3 min read
There's an idea called "Semantic Diffusion", that ideas become broadened, altered, or diluted over time.
One of my ideas that caught on is the idea of a "Deployment Pipeline".
I meant something quite specific but it has come to mean something else...
1/14
#Thread These days I think that mostly "Deployment Pipeline" is taken as a synonym for "build script", maybe that's a bit harsh, maybe more like "deployment script", but there was quite a lot more to the original idea than either or even both of these things.
2/14
Jul 15 13 tweets 3 min read
A few years ago I was one of the authors of the Reactive Manifesto. At the time we had lengthy discussions over whether to describe the units of async comms that we recommended, as "Messages" or "Events",
So Messages vs Events a #Thread
1/13
reactivemanifesto.org "Messages" are things that are sent to recipients, usually, but not always, with some expectation that some action will take place. "Events" are general notifications that something interesting happened.
2/13
Jun 10 12 tweets 3 min read
It's common for TDD practitioners like me to say things like "TDD is primarily about Design?", even though @KentBeck says "Yes, but the testing matters too" so what does this really mean?
#Thread
1/12 TDD means, by definition, "Test-First" we write code by first creating a small, as simple as possible, specification of what we want the code to do. This is VERY different to starting with the code and then testing that the code works.
2/12
Mar 28 19 tweets 3 min read
"Semantic Diffusion" is everywhere and why this matters...

a #Thread
1/19 I have been lucky in my career to have been close to the birth of several ideas that later became extremely popular, my overriding impression is that if you asked any creator of a popular idea, the commonest reaction would be "That's not what I meant at all!"
2/19
Mar 14 13 tweets 3 min read
How do we protect the systems that we create, fundamentally I think that this falls into the common pattern of there being two strategies, and as is often the case, one of them is dumb.
#Thread

1/13 We can either work in terror of changing them, with change freezes and change approval boards and lots of bureaucratic checks and balances,
or we can do the agile thing, and embrace change.
2/ 13
Feb 5 14 tweets 3 min read
Continuous Delivery specifically and Agile development in general is primarily about optimising our work so that we can make progress in small steps, and so better understanding our progress after each small step,
but what does this mean for Software Architecture?
1/14

#Thread Some descriptions of Software Architecture describe it as the "stuff that we can't afford to get wrong"

I think that this is a big mistake, because if we can't afford to get it wrong, it means that we MUST GET IT RIGHT FIRST TIME, and the chances of that are slim.
2/14
Jan 26 10 tweets 2 min read
5 Steps to Fast, Reliable, Software Development
#Thread

1/10 Software Development is a very difficult thing to do well, but at its core I think that if you focus on these 5 things you are guaranteed to get a better result...
2/10
Oct 17, 2023 15 tweets 3 min read
I recently talked about User Stories on my YouTube channel, and got asked by several people about how I would deal with "Back End Stories", so here is a thread User stories for "Back End" vs User stories for "Front End"
a #Thread

1/14 My problem in answering this is that I don't make that distinction. The idea of a User Story is significantly different to that. User stories have somehow been subverted, like much of agile thinking, by people looking at them from the perspective of project management.
2/14
Sep 25, 2023 15 tweets 3 min read
I think that Continuous Integration, and the disciplines that it forces on us to achieve it, is probably the most profound idea in SW dev practice.
So here's a #Thread to explain why I think that this is about much more than semantics or personal preference.
1/15 I have said many times that feature branching in particular is incompatible with Continuous Integration. That is because both of the words in CI matter, we integrate continuously - or a close approximation of continuously.
2/15
Sep 4, 2023 15 tweets 3 min read
What is the best way to design software?
Top Down, or Bottom Up?
#Thread

1/15 This is a fairly old idea in thinking about software design, and I confess that I find the terminology a bit confusing, particularly if you read the Wikipedia definition:

2/15en.wikipedia.org/wiki/Bottom–up…
Jun 19, 2023 14 tweets 4 min read
Dealing with "Coupling" is one of the things that makes SW a genuinely difficult activity. But I think Coupling is at least as big a deal for SW dev teams as it is for the software itself.

Here's a #Thread

1/14 Coupling is an interesting idea, and there are many dimensions to it. I particularly like the @mtnygard model of coupling described in this video, and have been quoting it for years.

2/14

Jun 5, 2023 12 tweets 3 min read
Agile isn't dead, but it is widely misunderstood and more unusual than most people think.
a #Thread

1/12 I have spent the vast majority of my career working in what today we'd call 'agile' teams and organisations, but I hadn't heard the term until 20 odd years ago.

2/12
Apr 25, 2023 14 tweets 3 min read
Microservices are maybe not what you think they are, so here's a #Thread to describe them...

1/14 Microservices are distinct from Services, although they are commonly confused.
Services, as an approach to software design, have been around for many decades. Service Oriented design was popular in the 1990s and early 2000s.

2/14
Mar 27, 2023 18 tweets 3 min read
What is the most important thing that I have learned in my career as a software developer?

Here's a #Thread

1/18 We could consider languages, how computers work, OS commands, understanding of design techniques and tools like editors and IDEs.
We could think of the need to collaborate, reducing dependencies & coupling, and focus on outcomes, but there's something more important.
2/18
Feb 27, 2023 14 tweets 3 min read
I confess that I am not a big fan of "The Test Pyramid" so here's a #Thread on what I think is a better focus for your automated testing strategy...

1/14 The Test Pyramid is usually described as something like this, though there are lots of different versions.
I don't think this helps much.

2/14
Jan 16, 2023 17 tweets 3 min read
In this tweet @christofebert says "optimising for velocity is dangerous" in software development. The article that he references is behind a paywall, so I haven't read it, but here are some thoughts, and some evidence that counters this view.

(A thread)
1/17 As ever it depends on what you measure, what does "optimising for velocity" mean?
Velocity is speed + direction. In software terms, I assume that we mean that speed is the rate at which we can deliver software.

2/17
Jan 2, 2023 14 tweets 2 min read
My recipe for Continuous Delivery (a thread)...

1/14 Start by measuring your Cycle Time, from "idea" to "working software in the hands of users"

2/14
Nov 7, 2022 12 tweets 2 min read
Unit Testing or Acceptance Testing?
Actually you need both for the best test-strategy.

a thread...
1/12 I think that the right answer is "Both!" because each delivers different things, and provides very different insights and advantages for the systems that we build.
A good testing strategy needs both kinds of test.
2/12
Sep 12, 2022 10 tweets 2 min read
One of the few things that I can be absolutely definitive about is the definition of a "Deployment Pipeline", because I defined it. So here is a short thread that answers the question “What is a Deployment Pipeline".

1/9
Defines Releasability

The DP is an automated mechanism to determine the releasability of changes. It should be definitive for release. If the pipeline passes there is no more work to do prior to release.

2/9