Daniel Terhorst-North invented Behaviour-Driven Development , co-invented the build pipeline , and pioneered many of the Continuous Delivery practices that software teams now take for granted. These were born out of necessity, on real projects, which is why the ideas stuck. In his thirty-five year career, Daniel has moved from programmer to technical leader to trusted CxO adviser, bridging the…
You can have your cake and eat it, as long as you bake it carefully. ‘We can do this the quick way and pay later, or the thorough way and pay now.’ This seems to be a fundamental dichotomy in software development, between ‘perfectionism’ and ‘pragmatism’, but I do not think it has to be a trade-off at all.
One area where companies struggle is recruiting good people. I see enormous variability in quality and style of interviewing. This is something I care about, having spent nearly a decade working with some amazing recruiters at a global technology consultancy, and variously as an employee, contractor and independent consultant in many organizations.
I have been building my website with Hugo since early 2021. I love the control it gives me. I recently wanted to start using short URLs in presentations, that would link to either a longer URL on the website or to somewhere else altogether. It turns out Hugo makes this easy but not entirely obvious, so I thought I would write it up.
McKinsey recently published an article claiming they can measure developer productivity . This has provoked something of a backlash from some prominent software people, but I have not seen anyone engage with the content of the article itself, so I thought this would be useful. I am writing this as though the authors have approached me for a technical review of their article. You can think of it as…
The great thing about measuring developer productivity is that you can quickly identify the bad programmers. I want to tell you about the worst programmer I know, and why I fought to keep him in the team.
I found myself offering advice to someone recently who was giving her first technical talk, at an internal conference, that happened to be about a topic of mine. We agreed that I should share my answers with a wider audience, in case someone else finds them useful.
Whenever I arrive in a new context—a new client engagement or a new team in an ongoing gig—I seem to arrive right in the middle of something. A significant planning event, a technical design session for a major component, implementing a new productivity tool. Phew, it looks like I am just in time! A few days later and they would have totally messed up that quarterly plan. They are going to use…
When you make all the work explicit, you get fewer surprises. When people work in product-based teams, the product development work is front and centre. It is easy to see how this work adds value and where it should live. Less obvious is where the day-to-day “Business As Usual” work sits, how it gets prioritized and measured, and how to ensure it is not neglected. I like to make this…
This is a story about amazing customer service being undermined by poor software, in the form of simplistic business rules and fragile systems. I am telling it because I made a promise to someone who features prominently in the story, and whose manager should be aware just how fantastic their staff are, and just how much their poorly designed computer systems and cost-cutting are letting their…
What started as lighthearted iconoclasm, poking at the bear of SOLID, has developed into something more concrete and tangible. If I do not think the SOLID principles are useful these days, then what would I replace them with? Can any set of principles hold for all software? What do we even mean by principles?
This cookie policy (‘Policy’) describes what cookies are and how and they’re being used by the https://dannorth.net website (‘Website’ or ‘Service’) and any of its related products and services (collectively, ‘Services’).
This disclaimer (‘Disclaimer’) sets forth the general guidelines, disclosures, and terms of your use of the https://dannorth.net website (‘Website’ or ‘Service’) and any of its related products and services (collectively, ‘Services’).
We want to do everything possible to protect your privacy and confidentiality. Dan North & Associates Limited (“We”, “Our”) understands that all users of this website are quite rightly concerned to know that their data will not be used for any purpose unintended by them and will not accidentally fall into the hands of a third party.
Or how programmers and testers can work together for a happy and fulfilling life. Why don’t we just automate all the testing? Is test coverage a useful metric? What does it mean to “shift testing left”? When and where should we be testing? How much is enough testing?
“If you had to offer some principles for modern software development, which would you choose?” At a recent Extreme Tuesday Club (XTC) virtual meet-up, we were discussing whether the SOLID principles are outdated . A while ago I gave a tongue-in-cheek talk on the topic, so ahead of the meet-up one of the organizers asked what principles I would replace SOLID with since I disagreed with…
My friend Gojko Adzic has been running a series of BDD quizzes illustrating different ways to approach some interesting BDD situations. I noticed on Twitter that Seb Rose , another BDDer (Cucumberer?), had gently taken issue with one of Gokjo’s solutions so I thought I’d take a look at them both. Before reading on I recommend reading Gojko’s solution and Seb’s response for…
I recently found myself in yet another circular Twitter discussion of estimation, in which the One True Way to scope work in uncertainty ranged from entirely abandoning estimation to applying formal Cost Accounting methods and nothing less would suffice. I’ve talked about this at length and I will happily excise any comments that get into #noestimates.
Organizations often introduce Best Practices as part of a change program or quality initiative. These can take a number of forms, from “cook books” and cheat sheets to full-blown consultant-led methodologies, complete with the requisite auditing and accreditation. This article introduces the Dreyfus learning model to challenge the strategy of naively applying Best Practices, and shows…
Most of my work these days is helping organizations figure out how to be more effective, in terms of how quickly they can identify and respond to the needs of their external and internal customers, and how well their response meets those needs. This tends to be easy enough in the small; the challenges appear as we try to scale these techniques to the hundreds, thousands or tens of thousands of…
Over the last year or two I have been exploring OKRs—Objectives and Key Results—with several organizations, from a few hundred people in size to a couple of thousand. Some are well over a year in, some are just starting out. There doesn’t seem to be much out there in terms of experience reports or hands-on advice so I have tried to capture the advice I wish I’d had when I started out.
Here are some of the topics I’ve been talking about over the last few years, arranged into themes. I’ve also provided links to slides where I have them. All content is freely available under a Creative Commons Attribution license (reuse anything but please mention me) unless stated otherwise on the sites hosting the content. Programming and Architecture # Microservices: Software that…
tl;dr # I like JUnit. It is simple and clean, and it is ubiquitous in the Java world. I like Go’s testing package. It is even simpler and cleaner, and distinguishes between failed checks and fatal test failures. It doesn’t use exceptions to do this. I wanted to see what Go’s testing semantics would look like in JUnit, so I wrote JGoTesting . Some people helped me. I’m quite pleased with how it is…
Modern Scrum is a certification-laden minefield of detailed practises and roles. To legitimately describe oneself as a Scrum Master or Product Owner involves an expensive two day certification class taught by someone who in turn took an eye-wateringly expensive Scrum Trainer class, from one of the competing factions of ‘Professional’ or ‘Certified’ (but ironically not both)…
tl;dr: Thank you to some lovely people for translating or graphic recording some of my work. One of the nicest compliments you can receive as a writer is someone choosing to translate your work to make it available to a new audience. I am enormously grateful to the people who have translated my articles and blog posts over the years, most recently Julia Kadauke , who translated What’s In A Story…
[ Adventures With Agile interviewed me recently ahead of teaching a couple of classes with them in June. The original interview is on their blog .] What was your first job in the industry? # My first job was playing Star Wars for a living. True story! I had a student internship in 1988 with a games company called Domark. They published the 8-bit versions of movie and board game tie-ins like Star…
I am excited to announce some public dates for my Testing Faster and Software Faster classes. These include the first 2-day classes this year, and the first ever public dates for London. Software Faster masterclass # Software Faster is for people looking beyond Scrum and the other agile methods that have been around since the mid–1990s. These methods can shrink delivery times from years to months,…
Someone asked me recently for advice about consulting into multiple teams, in particular about how to make the most effective use of a number of short sessions. He will be spending two hours with each team in each visit. This will be an ongoing relationship, with a series of visits made up of these two hour coaching sessions.
tl;dr: Send us your examples of real world BDD. Read on to find out why. The panel # ‘What is BDD?’ ‘How can I tell if I’m ‘doing BDD right’? Or wrong? Is there even such a thing?’ ‘Where should I start?’ ‘Is this or that practise considered part of BDD?’ ‘What are the mandatory ‘core’ practises of BDD?’ These and similar…
Some software teams get stuck because their business users don’t realize they need to make time to take delivery of features they’ve requested. Over time their User Acceptance Testing backlog increases to the point where the team’s throughput virtually stalls.
I’ve been taking a few weeks of semi-vacation in South Africa and I’m in a reflective mood, so please forgive the indulgent tone of this post. I’ve been thinking about what an awesome industry I work in, and some of the people who have been moving it forward over the last few years, at least for me. I wanted to take a moment to appreciate them. If you haven’t come across…
I’m having fun in the most unlikely of places. I’m currently working at a Big American Bank. In fact, it’s so big it’s called Bank of America. I recently wrote an article for their internal agile magazine which probably best describes why I think it’s so much fun, and which I’ve reproduced below.
Experienced delivery folks can have surprisingly good instincts for macro-level estimation, as long as we are careful to manage blind spots and cognitive biases. This can be an important tool in early project investment discussions, and can remove roadblocks where people are uncomfortable or unwilling to provide estimates.
A curious phenomenon # At the end of 2009 I left the world of agile delivery and consulting to join a small team in a trading firm. I was member number three. The team grew to five in the next few weeks. This team was the most insanely effective delivery machine I’ve ever been a part of. A handful of programmers sitting in amongst a handful of traders, producing state-of-the-art trading…
Great software professionals build better software faster. Agile methods, Continuous Delivery and DevOps helped speed up delivery from years to months or even weeks, but then what? Some teams are able to deliver software at a speed of change like you have never seen before, delivering quality software in days or even hours, again and again. So what is keeping the rest of us from doing so? Now is…
Business optimization for leaders and change agents Whether you realize it or not, your organization is set up to resist effective delivery. Hierarchical reporting lines, annual budget cycles, and time-consuming hand-offs are just the start. Your ‘agile rollout’ may have reduced project timescales from years to months, but then what? Some teams deliver in days rather than months to…
We architects love a good framework. We like our abstractions, we like to design “enterprise” solutions, we like to mandate complex algorithms, or better yet to prescribe toolkits to enable other teams to implement complex algorithms under our expert guidance. If it looks like a good idea we slap the label “pattern” on it and tell everyone to do it. Ok, maybe that…
97 Things Every Programmer Should Know 97 Things… started as an idea for a wiki, grew into a repository and became a book published by O’Reilly. Kevlin Henney collects nuggets of wisdom from all sorts of contributors, mostly real but occasionally fictional, to produce a fantastic desktop reference or Christmas present for the geek in your life. From O’Reilly’s website: Tap…
I am delighted to announce my new independent consulting company, Dan North & Associates , which has the handy abbreviation of DNA. Take a look around the new website - I’d love to hear your feedback and suggestions, especially in terms of the direction I’m taking. Going independent has been on the cards for a while now, and the timing feels right after successfully carrying out a Lean…
I’ve just come back from the excellent NDC 2012 event in Oslo, where they published my article about opportunity cost in The Developer magazine ahead of the conference.
Watch the magician. Watch how he drops a coin into his hand, closes his hand, shows you the closed hand, opens it with a flourish, and the coin is gone! He smiles. You look to his other hand. He turns it over and opens it with the same flourish. Not there either! Then he takes your hand, closes it into a fist, opens it and there is the coin!
I’ve noticed a number of people recently declaring that BDD really is just TDD, such as Robert Martin on Twitter and Ron Jeffries on the XP list . I can understand where this mindset comes from and I’d like to offer my perspective.
I’ve been using JavaScript for a while now, but only really programming in anger with it during the last year. I’ve found it in turns frustrating and enlightening, ridiculous and brilliant. I have never felt so empowered by a language and its ecosystem, so I thought I’d take some time to write about why that is. I’m starting with a ramble through the history of JavaScript,…
It’s November, and it seems I haven’t posted anything here since January. Partly that’s because I have a Proper Job™ these days, which means I spend a lot less time writing and blogging. Partly I’ve rediscovered the joy of actually programming, which means I get to spend most of my time hacking on code.