Dan North
dannorth.net · Personal blog · on HN since 2009
Dan North, a software consultant and originator of behaviour-driven development, writes about programming practice and team methods.
What HN saysCommenters cite his views that programming is not a profession, his talks on faster software, and his post on classic SOA.
81HN people shared it
14linked it in comments
81stories submitted
1.4Kstory points
4 months agolast shared
2009people per year2026
Most-shared posts
- 1Programming is not a craft12 people · 92 points · first shared 2011 · 60 comments on HN
- 2McKinsey Developer Productivity Review – Dan North and Associates Ltd8 people · 8 points · first shared 2023 · discussion on HN
- 3In praise of SWARMing6 people · 55 points · first shared 2018 · 18 comments on HN
- 4Introducing BDD6 people · 3 points · first shared 2010 · discussion on HN
- 5The Worst Programmer I Know (2023)5 people · 532 points · first shared 2023 · 370 comments on HN
- 6Best Simple System for Now5 people · 17 points · first shared 2025 · discussion on HN
- 7The Worst Programmer I Know (2023)4 people · 4 points · first shared 2025 · 4 comments on HN
- 8CUPID – For Joyful Coding3 people · 77 points · first shared 2022 · 32 comments on HN
- 9The rise and rise of JavaScript3 people · 12 points · first shared 2011 · 2 comments on HN
- 10What's in a Story? – Behavior Driven Development Explained [2007]3 people · 4 points · first shared 2012 · discussion on HN
- 11CUPID – the back story2 people · 328 points · first shared 2021 · 257 comments on HN
- 12We need to talk about testing2 people · 127 points · first shared 2021 · 72 comments on HN
- 13Are we nearly there yet?2 people · 6 points · first shared 2013 · discussion on HN
- 14The Art of Misdirection -- Opportunity cost of some modern dev techniques2 people · 5 points · first shared 2012 · discussion on HN
- 15A classic introduction to SOA2 people · 3 points · first shared 2016 · discussion on HN
What HN people wrote when they linked it
glenjamin · 2025-10-24
This reminded me of a slide from a Dan North talk - perhaps this one https://dannorth.net/talks/#software-faster? One of those anyway.
The key quote was something like "You want your software to be like surgery - as little of it as possible to fix your problem".
Anyway, it doesn't seem like this blog post is following that vibe.
pbh101 · 2016-09-12
You would probably like reading [1] by Dan North.
[1]: https://dannorth.net/classic-soa/
seesomesense · 2014-08-07
Programming is not a profession.
"It would be great if programming were a proper profession, but it isn’t. A profession has a structured model for advancing through levels of skill and ability, be it studying for a law degree and articles (working for a legal practise) or the years of undergraduate and medical training a doctor undertakes before specialising. The latter has clearly-delineated ranks, from junior doctor, via a brutal regime of 80-hour weeks, to consultant."
http://dannorth.net/2011/01/11/programming-is-not-a-craft/
ggeorgovassilis · 2024-10-04
Dan North lives from speaking at conferences, corporate events and tutoring classes, so coming up with novel, memorable terms is his trade mark. I attended such a class ("software, faster" [2] or something like that) around 2016. It was very entertaining, a much needed escape from corporate reality and full of great insights and "aha" moments, but none of that had a lasting impact on me. Dan's way is to reduce complex topics into simple categories - like in the OP post, he speaks about the "Dreyfus model of clinically acquired skills" [1], or pulls out a complexity-impact diagram etc. This reduction of complex topics to simple categories greatly impresses upper management with simple messages and gave us, the foot folk, hopes that we finally found the lever with which we'd make things better. But the category choices and reduction procedure seem arbitrary and I've found the messages imparted of little value in work life and corporate reality.
[1] https://dannorth.net/tags/dreyfus/
[2] https://dannorth.net/courses/software-faster/
zackmorris · 2015-01-08
I shouldn’t post this.
It’s hard for me to single out specific patterns because it feels like the things I’m doing today (taking an idea from a written description, PowerPoint presentation or flowchart and converting it to run in an operating system with a C-based language) are the same things I was doing 25 years ago. It might be easier to identify changes.
If there’s one change that stands out, it’s that we’ve gone from imperative programming to somewhat declarative programming. However, where imperative languages like C, Java, Perl, Python etc (for all their warts) were written by a handful of experts, today we have standards designed by committee. So for example, compiling a shell script in C++ that spins up something like Qt to display “Hello, world!” is orders of magnitude more complicated than typing an index.html and opening it in a browser, and that’s fantastic. But what I didn’t see coming is that the standards have gotten so convoluted that a typical HTML5/CSS/Javascript/PHP/MySQL website is so difficult to get right across browsers that it’s an open problem. Building a browser that can reliably display those standards responsively is nontrivial to say the least.
That affects everyone, because when the standards are perceived as being so poor, they are ignored. So now we have the iOS/Android mobile bubble employing millions of software engineers, when really these devices should have just been browsers on the existing internet. There was no need to…
asymptotic · 2011-04-15
Due to the sheer volume of responses to this article the author posted a rebuttal to many complaints here:
On craftsmanship
http://dannorth.net/2011/01/15/on-craftsmanship/
His rebuttal is, as the author admits, better edited and more pithy. Some key parts are:
"If I gave the impression that I wanted the cheapest or quickest cobbled-together solution then I certainly didn’t mean to. I want the best value software, something that’s fit for purpose in this specific context, to solve this specific need."
...
"I used the metaphor of negative space to illustrate that the point of programming isn’t the software - it’s the information flow or utility that the software enables. Programming is not fine art."
...
"People want software because they want to solve a problem, not because they like the notion of software. Some software practitioners risk losing sight of that. That’s all."
...
"Some people self-identify as 'rock stars' or 'software' 'craftsmen' in an unfortunate attempt to differentiate themselves from regular jobbing professionals, whom they regard as less talented or valuable than themselves. I don’t have much time for these people."
SCdF · 2026-06-12
I had seen, up until LLMs, posts in this theme: https://dannorth.net/blog/the-worst-programmer/ pretty regularly. This one was only a few years ago!
Maybe we run in different circles. Or did, anyway.
shrikant · 2026-02-05
Reminds me of this post: https://dannorth.net/blog/the-worst-programmer/
Discussed here a couple of times as well: https://news.ycombinator.com/item?id=37361947 , https://news.ycombinator.com/item?id=43452649
tomstuart · 2022-07-29
I do find “BDD” a frustrating term.
It was coined by Dan North [0] to refer to a coherent set of sensible TDD practices — give tests expressive names, say “behaviour” not “test”, write executable “given/when/then” acceptance criteria — but in the intervening 16 years (!) it’s mutated into… I don’t even know what.
There’s a community of “BDD” practitioners who talk about all sorts of ideas that aren’t necessarily even specific to software engineering. Which is fine and good, but it’s rendered the term essentially meaningless in a software context.
These days I usually say “double-loop TDD” or “outside-in TDD” when I want to emphasise the use of executable acceptance tests; it’s impossible to predict what (if anything) “BDD” will mean to anyone.
[0] https://dannorth.net/introducing-bdd/
atulatul · 2017-10-06
Agree with this.
I like some of his ideas. But a problem I have(possibly of my perception) with uncle Bob is that he gets too aggressive. If you don't have X percent (100%) code coverage, then you are doing it wrong, you are not a craftsman, etc. Well, Dan North put things in perspective a bit- https://dannorth.net/2011/01/11/programming-is-not-a-craft/
The problem is dogma. And it keeps repeating. But probably this aggression helps them in their careers.
(Not a frequent contributor to comments/ here on HN. Mostly like to read.)
HealthyTree · 2016-08-18
A few that I follow on a semi-regular basis:
https://michaelfeathers.silvrback.com
http://highscalability.com
http://techblog.netflix.com
http://www.natpryce.com
https://8thlight.com/blog/
https://www.percona.com/blog/
https://www.smashingmagazine.com
http://blog.crisp.se/author/henrikkniberg
https://m.signalvnoise.com
https://dannorth.net/blog/
https://codeascraft.com
dragonwriter · 2014-04-21
> What do binary decision diagrams (BDDs) have to do with TDD (test driven development)?
In context, BDD = Behavior Driven Development [1], not Binary Decision Diagrams.
[1] http://dannorth.net/introducing-bdd/
mikeleeorg · 2011-12-20
Here's a link to this article without the anchor to the comment:
http://dannorth.net/2011/12/19/the-rise-and-rise-of-javascript/
olalonde · 2022-07-29
> Luckily the industry doesn’t really use this term [OOP] any more so we can ignore the changed meaning.
OOP is still a widely used term today.
> It used to mean “not waterfall” and now means “waterfall with a status meeting every day and an internal demo every two weeks”.
That doesn't sound waterfall-y at all.
> If you can hire a “DevOps engineer” to fulfil a specific role on a software team then we have all lost at using the phrase DevOps.
DevOps was never about eliminating all operations roles. It is about better cooperation between dev and ops.
> This one used to mean “psychologist/neuroscientist developing computer models to understand how intelligence works” and now means “an algorithm pushed to production by a programmer who doesn’t understand it”.
No, that's never what it meant. It was always a branch of computer science, going as far back as Alan Turing.[0]
> Previously something very specific used in the context of financial technology development.
Not at all. It was coined by Ward Cunningham[1] who happened to be working on financial software. The metaphor was never meant to be restricted to financial software. The fact he was working on financial software is largely irrelevant other than possibly having given him inspiration for the metaphor.
> Was originally the idea that maybe the things your software does should depend on the things the customers want it to do. Now means automated tests with some particular syntax.
Again, completely wrong. The…