Org Structure, Software Architecture, and Cross-functional Teams

Some 46 years ago, Melvin Conway wrote, "Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure." This idea is known as “Conway’s Law,” and the converse is known as “Reverse Conway’s Law.” It’s as true today as it was a half century ago. The basic idea is this: Your organizational structure drives a particular software architecture. And your software architecture drives a particular organizational structure. People who work closely together and communicate frequently will create software that reflects this and vice versa. This dynamic leads to one of the major points of friction for established organizations trying to become agile: Read More

3 Ways to Handle End-of-the-Year Holidays on Your Agile Team

The period from mid-December to early-January can be disruptive for an agile team. You're used to working on a regular cadence, maybe in 2-week iterations. Suddenly, there's an avalanche of company holidays and vacation time that throws off your velocity and cadence. Here are 3 ways you can make the end of the year a useful and productive time rather than a few weeks of frustration and waste. Read More

Focusing on the Right Things in Your Daily Scrum

"Yesterday, I was in Sprint Planning..." I hear it once, and I'm suspicious. By the time the third team member says this, it's clear the Daily Scrum I'm observing is broken. Everyone in the room knows we did planning yesterday—we were all there. It's not valuable content to help the team plan its day. Too many Daily Scrums are a waste of time. It's not always this blatant, but if everyone knows what they're going to say in advance of the meeting and nothing changes as a result of the meeting, that team is probably missing the point. So, what is the point? Read More

Agile Homeschool

My wife and I have been homeschooling our 3 boys since our oldest, who turns 13 tomorrow, started kindergarten. From the beginning, we've tried to apply the Agile, Lean, and accelerated learning principles I use in my work. After 8 years of experimentation, we've settled on a system that works really well for our family. This post isn't about why we homeschool, what curricula we use, etc. Rather, I'd like to give a glimpse into how we apply some of the principles and practices I use and teach in my classes to a non-software context. Read More

Change Happens—So Make it Cheaper

Change on software projects is expensive; it leads to wasteful rework. Change is risk. We can deal with risk one of two ways. We can reduce the likelihood of the negative event occurring. Or we can reduce the impact of the negative event when it does occur. (Of course, the two can often be combined.) The traditional approach says, "Let's put more effort and thought in up-front and avoid that expensive change." (That is, let's prevent the negative event from occurring.) The problem, as decades of experience have shown, is we still can't seem to avoid change. Here's why: the kinds of change that plague software development can't be eliminated by thinking harder up front. Read More

Functional Managers in Agile

As an organization transforms to an agile way of working, functional managers (e.g. a dev manager or a test manager) can feel lost. Many of their traditional responsibilities move to other roles or disappear altogether. How can functional managers continue to add value in an agile organization? Here are a few ideas… Read More

Coaching Surgeons, Cyclists, and Software Teams

Atul Gawande is a surgeon and author who has written some excellent books and New Yorker articles reflecting on the state of modern medicine. Recently, his writing has gone beyond medicine in interesting ways. As he looks for lessons for medicine from other disciplines, he ends up with things to teach both medical professionals and skilled knowledge workers more generally. His book The Checklist Manifesto manages to be a riveting 224 pages on what ought to be one of the least interesting topics possible: the checklist. So I was intrigued to see a link to a New Yorker article from Dr. Gawande on my own specialty, coaching. It's as good as I might have hoped. Read More

Cucumber Tip: IRB From Inside a Step Definition

Most Ruby programmers know about Ruby's interactive console, IRB. (If you don't, stop right here, open up a command window and run irb. Type some Ruby code. See how it returns the result of each line right away.) IRB is great for poking around with unfamiliar libraries. Suppose you're using Capybara with Cucumber for the first time. It would be nice to use IRB to experiment with what Capybara can do on a particular page. You could launch an IRB session and duplicate all the Capybara setup from your Cucumber support/env.rb file. But wouldn't it be nice if you could just fire up IRB in the context of a step definition so you know everything in your IRB session matches what you'd get in the step def? Turns out you can. Here's how... Read More

Building a Useful Task Board

The task board is a simple, yet powerful, tool for Scrum teams. As a coach, I can tell a lot about a team just by looking at their task board in the middle of a sprint. If your Scrum team is in the same location, I can't think of a good reason why you wouldn't want to build and use a task board. Here's how to build a basic task board, various ways to enhance it to convey more information, and some analysis of the many things you can learn from this simple tool. Read More