Nothing. That’s right. I’ll bet that long before many of us suffered the waterfall model we first suffered from the lack of any process at all. As a maker of things, having no defined process can feel wonderful and free at first. In hindsight, many have called this cowboy coding but it’s actually worse than that. Cowboy coding sounds romantic. A man or woman on their horse, acting on any whim that strikes them, as hedonistic as they want to be. In reality, having no process, no schedule, and basically no rules leads to nothing more than horse shit. No maker wants that.
For longer than I’ve been alive, it was thought that big software systems required big processes. They come in many flavors and are each as painful as the others. There are plenty of horror stories on why heavyweight processes are bad models for building systems so I wont bother recounting them. There are common themes that emerge from systems build with heavyweight processes though. They take a long time. There is little customer interaction for months or years. Worse still, the system delivered is rarely ever the one that is actually needed. I was never satisfied with a project I developed using these models, and unfortunately, our business partners weren’t completely satisfied either.
In 1999, I was lucky enough to be working with Todd Jonker, who attended OOPSLA ’99 where everyone was buzzing about two things. First was Kent Beck’s new book, Extreme Programming Explained. The second was this “editable website” idea by Ward Cunningham, that he called a wiki. Todd’s enthusiasm was hard to resist and soon enough we started taking baby steps in the direction of extreme programming.
Unfortunately XP was like a bright shiny object to our relatively fresh-faced team and we failed to really grasp what a fundamental change this would be for our company, our clients and even our team culture. In some ways, I think we’re all still trying to grasp the essence of XP. The rules of extreme programming set a new model for how software was built, what the teams looked like and how they interact.
In fact, I’ve had entire projects change drastically for the better, just by focusing on one single XP rule. In ’97 I worked for a consultancy in New York City developing “multimedia applications”, back when we shipped CD-ROMs frequently and only occasionally got to drop a Perl script in cgi-bin. We worked for some large clients, usually working with one of their project managers for client interaction. A few days before our gold master was due, the president of the company stopped by to check in. It was awful. The game of telephone between their sales team, their project manager and our office was showing through. With the president deciding to take the afternoon off, we suddenly had an on site customer In the next few hours, we got an incredible amount of work done, and the best part of course, is that it was exactly what they wanted. Weeks had been wasted and everybody knew it. From that point on, we always arranged for frequent customer interaction including all-day sessions which always paid off.
Fast forward ten years and “Agile” had become a major buzzword not just in software development communities, but in business communities as well. Promises of better, cheaper, and faster were impossible to resist and “agile coaches” popped up everywhere. From San Francisco startups to century-old corporate enterprises, everyone was “agile”. Beyond the buzzword, though, nobody could agree on what being agile really meant.
At RailsConf 2008, Kent Beck spoke about Extreme Programming and “Agile” development. In his keynote, he points out how so many are missing the essence of what extreme programming was all about: transparency, responsibility and accountability. You can’t go wrong focusing on that. Kent was a great speaker, and his refocusing on those three tenets was really encouraging.
My first experience with scrum) was in the context of a fairly large development organization within a major financial institution. I was really impressed with how much work the various development teams could accomplish, given the fairly bureaucratic environment they were working in. Scrum brings some fairly specific and rigorous processes to agile development that appeals to the sensibilities of project managers. For developers used to working in waterfall or similar processes, this can be blast of fresh air.
After a few years of working in a scrum environment, it started to feel too formal. I had the feeling that we were fulfilling the ceremony of scrum, while missing the essence of extreme programming. Iteration planning meetings, retrospectives and even some story jams felt not only like work, but work that wasn’t immediately benefiting our customers. The payoff of some of this effort was there, but each iteration still contained a lot of “process work” within each team, for each project. When every developer essentially throws away any productivity every other Monday to deal with the process of how you deliver customer value, “wasteful” is an understatement. In defense of scrum practitioners in large enterprise environments, however, scrum provides enough busy work for project managers that it can be legitimized, where other less-formal processes may not be.
My first exposure to “lean” software development was in the book Lean Software Development: An Agile Toolkit by Mary Poppendieck. In this book, Mary introduces common lean manufacturing practices like The Toyota Way and draws similarities to how we could develop software in a similar manner. Her ideas were inspiring and it was hard for me to see strict scrum processes as anything but a little wasteful. While the concept of lean software development was alive and well, unfortunately I didn’t feel like I had an idea of how to implement it.
Earlier this year I had a great conversation with Joe Arnold, Director of Engineering at Engine Yard about their software development team and process. While rambling on about the potential wastefulness of scrum and how I had been looking for practices that could lead to real-world lean software development, Joe mentioned Kanban. After a ten-second introduction leaving me with “you should check it out”, I was hooked.
The lean software engineering blog by Corey Ladas was and still is an incredible resource, both as an introduction to Kanban in general as well as specific adaptations to help serve software development teams. If you’re curious, this is a great comparison of Kanban vs. Scrum, and for a more lighthearted comparison, Scrum vs. Kanban: FIGHT!
Not long after I started reading up on Kanban, Corey Ladas released Scrumban – Essays on Kanban Systems for Lean Software Development. This book is awesome. Corey illustrates the key points of Kanban, from a quick review of queue theory to a variety of specific workflows. While Corey doesn’t prescribe a specific workflow, he leaves you with a deep appreciation for Kanban practices and you’ll quickly be able to identify the right workflow for your team or project.
As luck would have it, as soon as I discovered Kanban, I was also starting a new job. In no time at all, I found myself with a great team, eager to experiment with new processes and workflows, and strong management support. With post-it notes in hand, we quickly built our first Kanban board:

Our approach:
After several months of using this approach we all felt like we needed to make some improvements. After all, even XP recommends Fixing XP when it breaks.
Some things were working well:
Some things needed to be improved:
After we identified our problem spots, I set off to find an online tool to replace our beloved physical Kanban board. Pivotal Tracker came immediately to mind. I had used it in a work scenario before as well as on a personal project. After catching up with the current state of Tracker, it hit me that this tool had an problem we were unlikely to overcome. Pivotal Tracker is a very sophisticated tool, enabling a dizzying array of process refinements. What it isn’t is Simple and Simple is what we needed. More than just a developer tool, we needed a virtual Kanban board that our development team and business partners could use.
A small startup from Ohio called Enkari has a product aptly called Zen and it’s exactly what we were looking for. Zen is an online Kanban board that provides just enough features to be extremely useful without being prescriptive on how you use it. Take the tour of Zen to see what it’s all about.
Now that we’re using Zen for our virtual Kanban board, we’re seeing even more improvement:
While we have loved using Zen so far, there are a few areas we already see that the tool could be improved:
Steven Covey talked about sharpening the saw in his book The 7 Habits of Highly Effective People. It’s great to develop a process and workflow that seems to work for you and your team, but that’s not enough. You are not the only customer of your software development process. How do your business partners feel your delivering? How often are you reflecting on the effectiveness of your processes and your tools? How often do you sharpen your saw? Developing software systems requires many different disciplines and no two projects or teams are the same. Spending time focusing on how you deliver value can dramatically increase your effectiveness and reduce unnecessary work, which reduces frustration. No matter where you end up, you’ll likely be happier than where you are now.
Brian Doll is a business-focused technologist who has been building things on the web for over 13 years. He has extensive experience in retail, media and financial service industries in both start-up and large enterprise environments.
He enjoys speaking on lean engineering, web application performance and systems architecture. Having been inspired by Ruby and reinvigorated by Rails, Brian has been an avid contributor in the Ruby/Rails community since early 2007.
Additionally, he is a husband, father, thought worker, tree-hugging, music-loving, punk, atheist, non-conformist, optimist, Quality seeker. Phew! Here you'll find a mix of thoughts on fitness (Crossfit, Paleo foods), philosophy and programming (Ruby, Rails and other goodies).