Summary
Many of the agile tools, principles and guidelines used by large IT enterprises can be used by small teams or individual engineers to improve efficiency and create more value.
In this article, I’d like to explore these concepts with you to help you level up your engineering practice.
The underlying agile principle I’ll explore is “Stop Starting. Start Finishing.” In other words, rather than constantly starting new work, concentrate on completing the work you are currently doing-transforming from a Starter to a Finisher.
When Starters think of a new idea, they drop what they are doing and start working on it while it’s fresh in their minds. Inevitably this leaves them with a trail of unfinished projects. Whereas Finishers complete the project they are working on before choosing their next project.
And this doesn’t just apply to building apps. If you learn to be a Finisher, you can apply this principle to all those To-Do tasks cluttering your mind.
Starter or Finisher?
Like most psychological traits, a Finisher mindset isn’t binary – it’s a continuum and it’s situational. But we all generally trend towards Starter or Finisher. Which are you?
To find out which way you trend, crack open your favorite editor and create two headings:
- Work I Started
- Work I Completed
Work I Started
Think back over the last 7 days. Jot down all the work you started. Take a few minutes to do this and be generous with your definition of work. It should include all the little chores you started.
Did you wash the car? Take the dog for a walk? File your taxes? Celebrate the sheer variety of all you do!
When you are finished with this list, congratulate yourself. You acted like a Finisher and completed a task.
Work I Completed
Now write down the work you fully completed. Be honest. Completed means fully completed to the standard you set when you set out to do it.
Results
Now for some simple data analysis. Count the number of tasks you started and the number you finished. Did you finish more than 80% of the tasks you started? If so – and this was a typical 7 day stretch for you – move right along! You are already a Finisher and you don’t need this article.
Still reading? Me too! Don’t beat yourself up. You are where almost all of us are. You tend towards being a Starter. But with a little change in attitude and by adopting a few tools you can become more of a Finisher.
By the way, if you looked at your lists and thought, “I could write simple Python app to analyze this data much more efficiently”, opened an IDE and started coding away, you have a brilliant engineering mindset, but you are not winning any contests for being a Finisher!
Are we wired like this?
The tendency to be distracted is rooted in the traits that kept us alive in ancient caves and jungles. A mind that focusses on a single thing and ignores new stimulus is not well suited to an environment where new opportunities like food sources or challenges like predators emerge constantly and unexpectedly.
When something new appears, we are hard-wired to drop what we are doing and concentrate on the new. But we can consciously overcome these instincts.
You too can be a finisher
Like most of you, I am a natural Starter, not a Finisher. As a scrum-master in engineering, I knew I had to change that. My journey involved adopting some brilliant ideas and awesome tools borrowed from agile ways of working that have proven themselves time and again.
Organize Your Work
Backlog (A better To-Do list)
The first engineering principle we can draw on will help us organize our work. Replace that nebulous, ever shifting To-Do list with a backlog. This is the way most agile teams organize their work to get the most out of limited resources.
A backlog is simply a list of tasks you want to do some time in the future. It can be housed on a notepad, a whiteboard or as physical cards in a pile, or it can be kept in a digital tool. I installed Trello on my phone. I use it because it goes wherever I go.
It’s the guidelines you set for yourself in managing your backlog that make it work. Backlog guidelines evolve to suit you but here are my ground rules as a starting point-
- When you get a new task, add it to the backlog. The initial entry can be brief (you don’t want to interrupt what you are doing) and it should describe the task just enough so you will understand it later.
- Organize your backlog regularly-on a fixed schedule if possible. If you can set aside time daily to do this, it helps. In agile we call this refinement and it includes:
- Fill in the tasks’ details so you always know what you wanted to do and why.
- Prune your backlog. Get rid of stale tasks that you will never get round to.
- Right size the tasks. Tasks that can be done in less than an hour are less daunting and more likely to get done.
- Reorder the tasks by priority. Are any of them time sensitive? Some are almost certainly more important than others. While you do this, you may find some aren’t important at all and you can delete them.
This does take a little work (less than it sounds), but once you have a backlog that you frequently refine you will have solved those issues with your unorganized To-Do list, and you have the first step of a workflow – which we’ll discuss now.
Workflow
Now we have a backlog, how does all the work get done?
Tasks move out of the backlog through one or more states until they end up in a column called Done.
While a workflow can be as elaborate as you like, I suggest starting with a very simple workflow. I have 3 states work can be in.
- Backlog: (I hope you know what this is now. You can call it To Do if that helps)
- In Progress: No longer in your backlog. You are working on it.
- Done: The state all tasks aspire to. Your job is to help them get there!
The workflow works because of a few more guidelines:
- New tasks are only added to the backlog. Try not to start work that isn’t in the backlog because the backlog is your refined, prioritized list. If you do need to add an emergency task, you can put it into In Progress but try to limit that. If you keep adding work In Progress you are probably still being a Starter.
- Try to take work from the top of the backlog first since you agreed with yourself that this is your most important work.
- Limit how many tasks are In Progress to a definite number (3 is the number that works for me). This is covered in the Limit Work In Progress (WIP) section below.
- Only work on the task as it is described. Ideas tend to grow more elaborate and complex if you let them. Don’t let that happen. If you think of improvements as you work on a task, add these improvements as new backlog items-don’t do them now.
- Don’t obsess. If something will only take 5 minutes, you don’t need a card.
- If you need to break one of these guidelines every so often, don’t sweat it. Even if ‘run away from the escaped lion’ isn’t an In Progress card, you should probably do it anyway. If you are constantly breaking the guidelines, think about why that is and work out how to fix it.
Limiting Work In Progress (WIP)
If there is one takeaway from this post that is the most likely to help you become a ‘Finisher’ it’s this one. Limit Work In Progress (WIP).
Starters like us do too much at once. We just have so much going on that we feel we have to make progress on multiple fronts at once. But more-at-once kills productivity and Finishing.
If we tackle too many tasks we have to frequently context switch, incurring ‘startup costs’. This cost of switching tasks is real and proven. We pay for distractions, and we pay for trying to work on 5 things at once.
The engineering principle we can use to counteract the ‘too many things at once’ principle is limiting our Work In Progress (WIP) – a contract we make with ourselves. We choose a WIP limit and under normal circumstances we stick to it. This limit is the number of tasks we allow to be In Progress at once. This is so central to the way agile teams build software some of the work management tools like Jira allow you to set a WIP limit on each workflow column. If the team exceeds this number, the column goes scary red.
Just to be clear, a WIP of 3 does NOT mean I can work on an article, a Bite exercise and a project for my portfolio all at the same time, using 3 computers. I still only work on 1 task at once. The WIP is the number of tasks I have on my current list of tasks in progress. If I get stuck on one, I can switch to another.
NOTE: A WIP limit is a maximum but we don’t need to fill the maximum. Try to limit your actual number of tasks in progress to 1 even if you set a higher WIP limit. When you move a task to Done (look at you –being a Finisher) before you automatically move a task to In Progress from the backlog and start work, is there a task already In Progress you can finish first?
Other useful tools and techniques
Now, since the tasks we are working on are right sized and small (thank you, backlog refinement) we can use a couple of tools to help us focus and work on them to completion (thus becoming a Finisher).
My favorites are Pomodoro and micro-habits. Let’s see how they work together!
Pomodoro
Pomodoro focuses your attention on one In Progress task at a time. Coupled with backlog Management and your WIP limit, it is a powerful productivity tool. It consists of these steps:
- Decide on the task to be done (using the tools and techniques you now know about).
- Set the pomodoro timer (typically for 25 minutes, related Pybites tool).
- Work on the task. The discipline here is to focus on that single task. Avoid distractions. You may decide to turn off social media notifications and you could choose a work area without distractions.
- End work when the timer rings and take a short break (typically 5–10 minutes). You may want to ‘just finish this task’ and postpone the break knowing you are only 5 minutes away from completion. But try to avoid that mindset. You are often not as near to done as you think, and there is solid science behind the cycle of work and breaks and the length of each.
- If you have finished fewer than three pomodoros, go back to Step 2 and repeat until you go through all three pomodoros.
- After three pomodoros are done, take the fourth pomodoro and then take a long break (typically 20 to 30 minutes). Once the long break is finished, return to step 2.
Since many software engineers have embraced Pomodoro and love to write fun and useful software, there are many online Pomodoro timers you can install / run online for free. You could even create your own.
What? Build it right now? NO! Break it down into tasks in your Backlog 😄
Micro Habits
Another concept to help you be a Finisher is that of micro habits. These train us to make our habits (which I relate to tasks) achievable in a short time. We will really accelerate our journey to Finishing by breaking tasks into small chunks – something we are likely to achieve in a single Pomodoro session. Micro habits become a self-fulfilling prophecy. We Finish frequently, so we expect to Finish, and this propels us to Finish more. Also, with smaller tasks we have less inertia to overcome when we think about starting a new one.
As a concrete example, let’s go back to those Pomodoro tracker programs we love to build. Could you write the entire tracker as a single Backlog item, move it to In Progress and finish it in a single Pomodoro session? I know I couldn’t. Using the micro habit principle, break this daunting task into smaller chunks, each of which you could likely achieve in a single session. Maybe the first task is to research and learn what a Pomodoro timer is? Or write code that just runs for 25 minutes and alerts you in some way? I think I could knock out a Python script that sleeps for 25 minutes and writes a line to output in a single Pomodoro session, so why don’t I define that as my first task and be a Finisher?
Minimum Viable Product (MVP)
The Minimum Viable Product (MVP) is another engineering principle that we can use to finish more work. The concept of an MVP is to build the absolute minimum product to satisfy your requirements. You can improve on it in later tasks. This mindset keeps you from adding scope to the work you are doing until it becomes a never-ending task, and each task you finish lets you get feedback on the next improvement.
As an example, if I want to create a means of getting from my home to a park, instead of working on a helicopter rotor blade, could I start with the task of buying a bus pass? On the first rainy day where the bus is late, I will have feedback what to do next. Buy an umbrella? I may end up with that helicopter, but I will incrementally improve my experience in a way that 10 years of construction in my garage will not.
By the way, many of us in the software delivery world now refer to the Minimum Lovable Product (MLP) as an evolution from MVP. There are many MLP’s in production!
Inspect And Adapt
Another essential agile principle is Inspect and Adapt. Frequently look at WHAT you produced and HOW you produced it to see if you can make small improvements in the way you work that build over time.
Are you Finishing more? Learn from the work you didn’t finish. Be honest with what went wrong. Was the task small enough? Did you let it grow larger as you worked on? Were you distracted or did you start to do other work?
As you look into the reasons you were temporarily a Starter, not a Finisher, please be gentle on yourself. Yes, you want to learn what went awry so you can course correct, but this is not an opportunity to beat yourself up. You wouldn’t have stumbled if you hadn’t tried to walk.
Accountability partners / circles
Let’s face it. We stay more disciplined when we have to discuss our progress with a friend or group. Accountability works well if you regularly report on what you intend to do in the next 7 days and then discuss whether you accomplished that goal a week later. Please remember – you and your accountability partners should be cheerleaders for each other. Yay! I found an accountability partner on the Pybites slack channel. It’s a great place to start.
Related Pybites podcast episode.
Celebrate the wins
As you start to finish more, it’s important we celebrate those wins. Treat yourself for your successes. Try to make this a regular part of your relationship with your accountability partner or circle. If you celebrate winning and allow yourself to fail without consequence, you will create a virtuous circle where success leads to more success.
Conclusion
As humans, we are alike in many respects. We are hard wired to concentrate on new shiny objects because they could be new food sources or dangers.
Translating this to the modern world, even when we fully committed to completing a task, we are likely to think of several other ideas that seem important enough to supersede what we are currently working on. But this context switching is stressful and inefficient. It’s better to Finish what we Started first, then decide what to work on next.
We explored this subtle attitude shift along with a few tried-and-tested agile tools and techniques to improve the amount of work we Finish.
On a personal note, I thought of the idea for this article a while back and created the outline. Before I finished writing it, I started a couple of fun new projects and the article lay here on my PC, unfinished. Undelivered. Wasted.
So I added this article to my backlog, concentrated on finishing my In Progress tasks and when the time was right (today) I committed to completing the article. I stayed focused and finished the initial draft.
Next, I will respond to feedback until it’s ready to publish. I just moved closer to being a Finisher, not a Starter. And you can too!