Developer Roundtable - Anything counts as a Scotsman Fallacy
All true Scotsmen wear kilts
This time during the Developer Roundtable, we discussed an interesting thought Casey had. The opposite of the No true Scotsman. Anything counts as a Scotsman fallacy
No true Scotsman
The No true Scotsman is a type of logical mistake where someone changes the definition or criteria of a general statement to exclude a specific example that contradicts it. Essentially, itâs a way of moving the goalposts to maintain an argument, even when presented with evidence that contradicts it. The example Casey gave was: someone says, âAll Scotsmen wear kilts.â If someone else responds, âI am Scottish and I donât wear kilts,â the first person might retort, âWell, all true Scotsmen wear kilts.â In this case, the term âtrue Scotsmanâ is being used to arbitrarily exclude the counterexample, thus protecting the original, overly broad generalization.
This can be applied to software development as well. Most notably, people who are major proponents of scrum or agile development get accused of this fallacy. Someone might say, âWell, my team tried scrum and it just didnât work.â Oftentimes you will hear a scrum advocate say something similar to: âYou didnât use continuous integration correctly, so you didnât use scrum right and scrum isnât the issue here.â The counter example is refuted and excluded as viable evidence.
What if we take this a step further?
To take an interesting twist on this idea, Casey proposed the idea that maybe there is an Anything counts as a Scotsman fallacy, fallacy. Rolls off the tongue, right?
Think of this example: I tried Test Driven Development (TDD) and it just didnât work for me. Therefore TDD doesnât work and is trash. Basically, take a concept, idea, framework, tool or whatever you are trying and give it a bad try. Like skimming a blog post and then trying to implement it in your app. Because you couldnât get the thing to work after taking a few minutes to learn, you conclude that the thing is awful and shouldnât be used.
And, hey, we have all been here. At least I have and it seemed like most of us on the developer roundtable call felt this same way. We misunderstand a concept, apply it lazily and then throw it in the trash. We might even take it a step further and tell others that the concept is terrible and shouldnât be used.
An interesting example Max brought up can be seen in recipe reviews. Sometimes you will see a review that is scathing. But when you read the review, it says something like âThis fettuccine alfredo recipe tasted awful, I would not recommendâŠ..(further down the review)âŠ.I substituted almond milk for the dairyâ. Well yea, almond milk would be a terrible substitute in this recipe. Doesnât mean the recipe itself is awful, the way you implemented the recipe was the problem here.
A possible reason why this might happen in the developer world, stated by Casey, is that when we have a new developer starting out, they often run into problems. The common thing to say is âyou arenât the problem, this [framework/tool] is hard to understand or useâ. We label problems early on as the tools fault, not our fault. But over time, we need to scale this mindset back and learn to recognize when itâs our fault and when we are using tools incorrectly. Sometimes we definitely are the problem.
Iâm sure we all can think of a time when we are on a time crunch for a feature or wake up feeling low on spoons. You need a tool to accomplish something in your app and search the internet. You find something that looks correct and skim the README or some blog post. You cram it into your app and run into a host of problems that are starting to pile up quickly. You might not have the patience and emotional capacity to make this work or maybe you have a time deadline that is fast approaching. Since this tool didnât seamlessly work, you label the tool as incompatible or awful to use. You strip it from your app and move onto the next. This is not a tool problem, this is a you problem. The conclusion here should be âI am not able to fully learn how to use this toolâ instead of âthis tool is too complicated or hard to useâ. But we often make this conclusion and donât think twice about it.
Yossef brought up a good point as we were discussing this. For better or worse, with a career in programming, if you are tired or in a bad space mentally, you often will push through. There are no immediate and salient dangers to doing so. But, in contrast, if you are a wood worker, the dangers of being tired are immediate. You have to stop, you need a break or you will regret and potentially face a physical consequence. As programmers, however, we need to be mentally aware of the consequences that coding in a poor mental state can have. We can run into the Anything counts as a Scotsman fallacy. Thanks for the new term Casey!
Enjoyed this content? Join our developer roundtable, we meet every other Friday from 10:30 - 11:30 am CT. Hope to see you there!
If youâre looking for a team to help you discover the right thing to build and help you build it, get in touch.
Published on March 19, 2026