Archives
All the articles I've archived.
-
Building adaptive organisations: a reading guide
A guide to the ideas I have been writing about since returning to this blog — technology leadership, organisational adaptability, and creating strategic options in a period of accelerating change.
-
Moving fast requires more than speed.
There is a common belief that quality and speed exist in tension. Over many years working with engineering teams, I have found the opposite. Quality is what creates sustainable speed.
-
Diversity is not a metric. It is a source of organisational strength.
Diversity is not simply something we measure. It is one of the capabilities that makes organisations stronger — and in a world of increasingly complex problems, it is one of the greatest advantages we can create.
-
Agile was never about the ceremonies. It was about building adaptive organisations.
The most valuable part of agile was never the ceremonies themselves. It was the thinking behind them — creating organisations that could learn, adapt, and respond to change.
-
Technical skills make engineers effective. Core skills make them impactful.
The difference between someone who can implement a technical solution and someone who creates meaningful impact is often found in what I think of as core skills: curiosity, empathy, communication, and judgement.
-
Platform engineering is not about platforms. It is about leverage.
A platform is not successful because it exists. It is successful because it makes the right thing easier. Platform engineering is an organisational capability, not a technology capability.
-
Technology excellence is not a destination. It is a discipline.
Speed matters, but sustainable speed matters more. Technology excellence is the disciplined practice of building software that solves real problems while remaining resilient, scalable, and adaptable.
-
The future of software engineering is not a tooling problem. It is an organisational design problem.
AI is not simply improving the tools engineers use. It is beginning to change the relationship between an idea and the software that implements it — and that changes everything about how we design organisations.
-
The role of the CTO is not to deliver technology. It is to create strategic options.
For a long time, the role of technology leadership has been measured by what we deliver. But the purpose of technology leadership is to create strategic options for the organisation.
-
Returning to writing
After a few years spent moving from advising organisations on transformation to leading it, I'm returning to writing because the questions facing technology leaders have fundamentally changed.
-
I stand against racism and police violence
I stand with my fellow ThoughtWorkers to condemn racism and police violence. We released a statement and I added my signature to it. I have quoted from it
-
Move. Just Move
As we shift to self isolating and working from home it’s important to remember that when we are in the office we do move around quite a bit. Think about
-
Hierarchy of Needs through the COVID crisis
How are you going? It's the first question I’m asking my team; and I’m hearing a variety of answers : comments about their desk setup or office chair,
-
Commands, not passive aggressive events
In my last post, I shared an explanation of the key concepts that fall under the Event Driven Architecture umbrella. However, there is a significant
-
Is Kafka the only option?
It’s Eventuary all month long at ThoughtWorks Australia. We have so many projects incorporating Event Driven Architecture underfoot that we thought we
-
Event Driven Architecture Terminology
It’s Eventuary all month long at ThoughtWorks Australia. We have so many projects incorporating Event Driven Architecture underfoot that we thought we
-
Defining a Tech Strategy
Recently, I have been consulting to CTO/CIOs to help them create and execute the Technology Strategy for their company. I wanted to share the types of
-
A Decade of Cross Functional Requirements (CFRs)
Ten years ago, to this day, I had an idea to redress how my team considered and approached their Non-Functional Requirements such as Performance. I got
-
Experience Report: Feature Toggling
Last week, I shared my experiences with git and feature branching. As I mentioned, we moved away from this and towards feature toggles and branch by
-
Experience Report: Branch by Feature
I have been made aware of some negative responses to Martin Fowler and Mike Mason's discussion on Branch By Feature. Perhaps unsurprisingly, I agree with
-
Easy A
I have heard the car metaphor many times before - you know the one - "are we building a ford, or a ferrari?". But that metaphor though has never really
-
How to Mug Tiny Types
I love tiny types. I love how they make me feel, how they make me laugh, how easy it is to understand what is going on when they are around. The one
-
Pagination Made Easy
Ok, so I am doing a little happy dance right now, because I managed to get pagination into our application in less than a day. It is not your traditional
-
Code Contracts in .Net4.0: First impressions
Code Contracts is one of the new features in .Net4.0 which brings a little bit of formal specification to .Net applications. As someone who has a
-
Conferences: SDC and GoTo
I have been getting my speaking voice ready, and now I am getting set to use it. This week, I am speaking about how to integrate with other systems in my
-
TED Talk: Sheryl Sandberg: Why we have too few women leaders
Do you like TED? I have been enjoying the TED app on the iPad lately, and I recently saw the TED talk given by Sheryl Sandberg, Facebook's COO - Why we
-
How Gender Stereotypes Influence Emerging Career Aspirations
I have just finished watching Shelly Correl's talk on How Gender Stereotypes Influence Emerging Career Aspirations, a video filled with really great
-
How to decrease risk when designing integrated systems
How often do you get to work on completely isolated systems? It is seemingly more and more common that your system needs to talk to another system to
-
Working With Integration Points: Simulators
In my last post about working with integration points I described how I use anti-corruption layers (wrappers) to hide away any warts of the integration
-
Working With Integration Points: Anticorruption Layer
On my last few projects we had a requirement to integrate our application with another system. Adding to this complexity was the fact that these other
-
I don't believe in NFRs
There is something about the phrase Non Functional Requirements that I don't really like. It's the Non bit which gets me - I think that word makes them
-
The Importance of Words
The English language is a very complex beast which can easily strike confusion in the most unsuspecting moment. Take, for example, the word "lollies". Did
-
JAOO and Women: Attendance at Conferences
I was going to start this series off talking about filters and the way that connections are made in your brain, but after hearing about the lap dances at
-
JAOO and Women
A few weeks ago, I was fortunate enough to attend JAOO, an awesome conference for software developers, architects and PMs, for one day. How did I get to?
-
Slippers: How to click your heels
In my last post about Slippers, I introduced it's philosophy and the places that you could find it. In this post, I will introduce some of its constructs.
-
Slippers: Introduction
There are many template engines that you can choose for the generation of views in your mvc application. The problem with most of the them, however, is
-
How to Refactor like a Something star
Refactoring a piece of code can be such a thrilling experience when it's finished, but at the same time can also act as the blackhole of time. Recently, I
-
Pairing 101: Skills Matter
A few weeks ago, my good buddy Christian Blunden and myself presented at a London Geek Night. For us, it was quite fun and I hope people not only picked
-
Coding Tip #42: turning enums into classes
In Coding Tip no27 I explained how I rarely like to use booleans to represent states, and prefer to use an enum. Now that I have all nice little enums
-
Canned, Stubbed and Mocked Fake Objects
I had a very interesting discussion with Jen Smith today about the differences in approach to faking objects during testing. As a result, I am finally
-
I don't believe in ORM object as your domain model
I have been on a few projects now where we have used ORM libraries to help store our data (eg ActiveRecord for Rails, Hibernate (and it's variants),
-
Coding Tip #27: turning bools into enums
On my recent project, I have noticed a resurgence in a pattern that I have seen many times previously: where a field which is represented as a needs to
-
As a user I want to Log In
The classic log-in story is often the story that new-to-agile-ist assume you need to develop first. In fact, it is often the last story that should be
-
Making C# IList Useable
Around my neck of the woods, I have been having a theoretical debate with my colleague Dan Bodart as to the best method signature when it comes to
-
How I Perform like a p0rn star
After a few days of introspection, I have finally decided to post about my reactions to the now infamous Perform like a p0rn star presentation and it's
-
YouTube is Flipped
YouTube is offering you a great new experience to watch your clips with. Their new feature allows you to flip the image upside down! They are recommending
-
What is REST?
There has been quite a lot of discussion on mailing lists that I am on about what it means to be RESTful. It has occurred to me that the reason for many
-
Happy Ada Lovelace Day
Recent psychology research into how a role model impacts careers indicates that women need female role models more than men need male role models. This
-
I don't believe in signing up to stories for an iteration
If there is one thing that I hate about how a lot of Agile projects are run is the notion that you need to sign up to deliver certain stories/ a certain
-
Notes from a brown bag session on Pair Programming
Pair programming may feel quite strange and frustrating to those new to it. (I guess it can feel strange and frustrating to those who have been doing for
-
Pair programming is just like flying a plane
I have been reading Malcom Gladwell's Outliers, and in it he discusses the events which lead to plane crashes. Gladwell explores the plane crashes of
-
Improvements to the usual stand up meetings
Stand-up meetings are a healthy part of the daily routine. They are a useful forum to keep everyone up to date with the happenings of the team, escalate
-
It is a truth (not so) universally acknowledged...
that an agile team in possession of good practices, must be in want of a better way of doing
-
A New Take on the Hot Air Balloon Retrospective
I am not a huge fan of the iteration-based retrospectives that people usually run. These are the retrospectives in the format where you write about What
-
Surf's Up meets Software Development
I have just finished watching the special features of Surf's Up on the DVD and I was struck with a thought that software development is somewhat similar
-
How does Architecture fit with TDD
The question a lot of people (especially software architects) ask when adopting TDD is how does Architecture fit in the whole Test Driven Design paradigm.
-
A conversation with a TDDer
This is part of a conversation I had this week with my pair (in the conversation, I am A and he is B) as we were working on a new story. He, like many
-
What is a good test?
I have been helping my current client introduce TDD, and in doing so explaining principles such as single-responsibility, encapsulation and intention
-
TDD does not mean Test First
Those starting out on their XP or Agile journey often hear supposedly enlightening phrases touted by those in the know like "TDD will lead you to better,
-
Australia to censor the internet
If you haven't heard of Australia's plans to censor the internet, let me be the first to inform you. The current government has a plan "to force all
-
I don't believe in IPMs
I like celebrating on successes, whether it is making a test pass, finishing a task on a story or finishing the story itself. I also love celebrating what
-
Living in the code
Someone shared an observation with me today regarding the way ThoughtWorkers talk when referring to classes. Apparently, we say "this guy" a lot; as in
-
Using Builders in Tests
An annoying part of writing a test is the amount of setup an object can need in order to use it within the test. However, there is a solution: builders.
-
Women in Technology - who cares? I do.
There is no denying that finding a women working in the field of information technology is a rare occurrence. At my current client, I have only seen 1
-
Retrospectives for the code base
At the conclusion of a lot of projects, we conduct retrospectives in order to gain a deeper understanding of the success factors of the project, discuss
-
Recursive Trees
I like recursive algorithms, and I like trees (I mean the data structure, not the perennial wooden plant - of course I like them too). So today, I was
-
What is Agile?
At the moment, it seems quite vogue to say your company is Agile. But what does it really mean? Before joining ThoughtWorks, I worked for a company which
-
Are types of testing important?
The comments on my last post about acceptance tests have made me think a little more about testing, particularly the value in specifically declaring the
-
Attracting women to free software projects
I came across an article the other day about ten easy ways to attract women to free software projects. I am not quite sure what to make of it. All the
-
I don't believe in Acceptance Tests
There - I said it. Heresy. But, I am yet to be sold on their value. Before I continue, I should describe my observations of acceptance testing. From what
-
How many O's in Woolloomooloo
I am often asked how to pronounce my surname. It's not too difficult, but for your benefit, I will now attempt at a phonetic guide to my last name.
-
ReSharper - Saint or Sinner
I love ReSharper. It makes life in Visual Studio such a breeze. You are just so productive in it, with all of its navigation tools, code completion and
-
Say the right thing - don't just do the right thing.
Often, I see tests like the following: This conveys to me two things about the author of the test: They treat tests as second-class citizens They have no
-
Test names go wild
Around ThoughtWorks, there is much discussion about test strategies. The arguments range from setup vs inline; named vs anonymous; mocks vs stubs; high
-
Lists: Filter, Map and Reduce
There are 3 very handy list functions which make dealing with lists a breeze: , and . I have come to the belief that not everyone understands their power,
-
Maybe null
My colleague Andy posted today about Returning null considered Dishonest and while I agree with his sentiments, I disagree with his solution. Andy's
-
JQuery is your friend
Lately, I have had the opportunity to add some pretty funky usability behaviour on websites thanks to JQuery and some UI Plugins. If you haven't used
-
Picking the right domain to model
When designing your code, it is important to model the business domain. However, how do you know you have modelled the right domain? Sometimes you need to