The Guerilla's Workflow
The Agile Zone is brought to you in partnership with JetBrains. Learn how Agile Boards in YouTrack are designed to help teams plan, visualize and manage their work in an efficient manner, with support for both Scrum and Kanban processes.
We're now four episodes in to The Agile Guerilla series. The focus of this series of articles is to to help you introduce change, specifically moving to agility, into your organization from the grassroots level.
In our first episode, we defined guerilla warfare and looked at why using guerilla-like tactics can be an incredibly effective way to spur on an agile transformation from the bottom up. Then, in episode two, we zeroed in on the two fundamental tactics employed by the agile guerilla. Episode three's focus was on how to get started. We examined four different ways that we can turn inward and address our own flaws as a developer and as a person.
In this episode we're going to look at four different tactics for improving your personal workflow - how you get things done. Even if you can't optimize your team's workflow tomorrow, you can get started optimizing your own. We'll start simply and work our way up. These tactics can and will build upon one another. Additionally, they can also scale. This means that you have an excellent chance of influencing your team to adopt some or all of them after observing your increased effectiveness.
Jared Richardson, my fellow Agile Zone Leader, introduced the concept of "Working from The List" in his book Ship It! The List is a prioritized and estimated listing of every task that you currently have in progress or pending. As you complete items, record the actual time taken and check them off!
It seems simple, and it is, but it's also extremely powerful. Just the act of writing your work down and keeping it in front of you will help you stay focused. It will prevent you from working on the wrong things, as all of your work's priority levels will always be visible. It can also help your collaboration with your teammates and your manager - especially if you keep it visible on a whiteboard or wiki page. It also helps you solidify vague tasks. You can't prioritize, estimate, and "check-off" something that you haven't broken down until it's completely measurable.
These benefits alone will make you more effective, helping you to work on the right thing at the right time and get it done!
Getting Things Done
Speaking of getting it done, no article about personal workflow would be complete without a nod to David Allen's Getting Things Done (GTD). GTD can be boiled down to three essential concepts:
- The Trusted System - the trusted system is where you keep everything that you dump out of your brain so that you can totally focus on the task at hand. It consists first of your collection of inboxes (email inbox, Moleskine notebook, tray on your desk, etc.), which is where you collect everything and then process all of it into the rest of the system. Second is a collection of lists that you manage: projects, next actions, incubators, and delegations. Third is your calendar - your hard landscape of things which must be done at a certain time or on a certain day. Fourth is your reference system, consisting of folders in drawers or on your computer, to contain those things which aren't actionable but are valuable for later use.
- The Workflow - the workflow is how you move things out of your inboxes and into their proper place. First you determine if something is actionable. If so, you determine how many actions it will take. If more than one, you add it to your project list. Then you consider what the next action will be. If it will take less than two minutes, you JUST DO IT. If not, you either list it, delegate it, or defer it. If something isn't actionable, then it heads either to the trash, the incubator list for later consideration (maybe it isn't actionable RIGHT NOW), or your reference system.
- The Weekly Review - the weekly review is what ties everything together. It's a time to clean up and "get back to ZERO." You empty your inboxes and tidy up your system. You follow up on delegations. You review projects and make sure a clearly defined next action is identified for each. You review your incubator list and see if you want to make any new commitments. You reevaluate ALL of your commitments and see if they are still things that you want/need to do. If so, great. If not, you renegotiate or drop the commitment.
GTD can be applied to your work as a developer as well as anything else in your life. It is a holistic approach to "life management" that will make you more agile in any walk of life.
Personal Kanban (PK) is a system for visualizing and controlling your personal workflow. It was popularized by Jim Benson, CEO of the Agile/Lean/Kanban coaching consultancy Modus Cooperandi. It is based upon the same principles that undergird all kanban systems, including those used by software development teams:
Visualize your work
Just as "The List" helps you visualize the tasks that you have in front of you, PK helps you visualize the flow you'll use to accomplish those tasks. The typical PK board is quite simple:
Here you see three possible states:
- Backlog - the work we haven't gotten to yet
- Doing - the work we have in progress
- Done - the work we've completed
This is the simplest "value stream" with which to start. Over time you'll come to understand your value stream more. Bottlenecks will manifest themselves visually and waste will rear its ugly head. You'll then make changes to your Personal Kanban system to reflect that increased understanding.
Limit your work-in-progress (WIP)
Don't forget, you're still human. Humans can only juggle so many things at a time, and the more you add, the more likely it is that you'll drop something. We often think of "free time" as extra capacity to get things done. But think about the expressway at rush hour vs. off-peak hours. When do things move the most slowly? It's the same with us. Limiting the amount of WIP helps you to create a continuous flow of value rather than a continuous struggle through quicksand.
The nice thing about PK is that if you keep it out in the open (again, whiteboard!), you can't miss it. Folks are going to ask questions, and you'll be able to explain how using the principles of Kanban has increased your personal agility. Who knows? You just might have a team Kanban system around the corner!
The Pomodoro Technique
Switching gears a bit, The Pomodoro Technique is a time management technique invented by Francesco Cirillo. Here are the basics:
- Choose a task to accomplish
- Set a timer for 25 minutes
- Work on the task until the timer rings, then put a check on a sheet of paper.
- Take a short break (~5 minutes)
- Every 4 "Pomodoros" take a longer break
The Pomodoro Technique has been called "iteration in the small," and has a great deal of synergy with "the Developer Iteration" that I wrote about earlier this week. The idea is to focus - truly FOCUS - on the task that you've chosen for the entire length of the Pomodoro. By doing this, you'll usually get more done, and by following the Pomodoro Technique's recommendations on dealing with interruptions, you'll get better at focusing over time, thus making your use of time more effective. I've used the Pomodoro Technique for coding, writing, building slide decks, and other miscellaneous tasks, and I can tell you that the benefits are real. Not only that, you'll often learn a lot about your own effectiveness. Take a look at this blog entry for some of my early experiences.
I hope you'll be able to take something out of this article and add it to your toolkit for personal agility. Hyperlinks to more detail are scattered throughout, so be sure to dig deeper where you need to. Whatever you do, remember to keep it visual and share your results. Chances are good that your efforts at increasing your personal agility may rub off on others as they see you heading home at 5 o'clock with a smile on your face while they're still struggling to keep up.
That's all for this episode of the Agile Guerilla. Next time we'll take a look at the technical practice of Test-Driven Development (TDD) and how you can apply it even when the rest of your team hasn't gotten on board. Until next time!