5 Easy Ways to Improve your Software Development Process
Apr 26, 2016
Everyone gets pleasure from ticking tasks off of the todo-list, right? At least, I do. But it’s no longer fun when you feel like you’re drowning in work with too many things to do, or feel like you’re trying to juggle too many balls at once. That’s what kills motivation and creates unhappy employees. But it doesn’t have to be that way – more often than not, situations like this can be avoided! In this post, I will introduce five simple things that can bring a bit of happiness into your workday, while also helping your product development process to become more efficient, and your team to get more things done.
Improving your work process doesn’t have to be a huge operation if you start with small, incremental improvements. These don’t require everyone in your team to read a textbook about a new methodology, or even learn new skills. These are quick improvements, which you can implement right away.
1 – Create a workflow
This may sound straightforward, even trivial, but I’ve seen so many teams who haven’t really thought out their basic workflow. In the most general terms, a workflow is the process that a company uses to get things done. The life and state of a task is often more complicated than simply done or not done. Usually, your tasks go through multiple stages before being completed and, in software development, there are typically phases such as planning, doing, reviewing, and deployment.
Regardless of the context of your workflow, it should be clear and explicit. Most tools allow you to customize your workflow so that, for example, If you want each new feature to be code reviewed, you can make it a mandatory step. It then becomes a habit, kind like brushing your teeth – you don’t need to force yourself (or someone else in your team) to do it every time.
But how do you know that your workflow is working for you? Once you’ve made your workflow explicit, you can start looking at inefficiencies and bottlenecks in your process. Here are few things you might want to start paying attention to if you feel that your work is not flowing optimally through your process:
Are some stages in your workflow painstakingly slow, or is work piling up for a certain user or activity?
Are some tasks repeatedly re-opened after they’ve been marked as done?
Are there lots of “dead tasks”, ie. tasks that were killed before reaching done?
You won’t get your workflow right first time, and that’s okay. Taking your process through the loop a few times can reveal insights that might help you to improve and streamline your workflow. For example, you might find out that the review step takes the majority of the time on a task’s journey to completion. Perhaps the Product Owner is not devoting enough time for the project and, as consequence, become a bottleneck without even knowing it? The more transparent your process is, the easier it is to spot these kinds of anomalies and actively deal with them.
The more transparent your process is, the easier it is to spot anomalies and actively deal with them
2 – Clean up your backlog
Filling up your backlog is easy – it’s always easier to come up with new ideas than to actually implement them, but your backlog won’t serve a purpose unless you are actively shaping it. A well-refined product backlog helps you to focus on what’s most important right now, while not ignoring other, less critical ideas or pieces of work that have come from all manner of channels.
Chances are that your backlog contains a large amount of tasks that will never see daylight. A good practice is to split your backlog into the work that you have committed to doing in the near future, and work that you may do someday. If you use something like Trello for managing your backlog, keep these as separate lists. In fact, since you don’t want low priority work to keep you distracted, I recommend having them on separate board altogether!
The someday list consists of tasks that you may want to promote to your backlog at some point of future, if you get more detail or you start to explore a broader set of feature possibilities. It is a home for all those interesting ideas and low-priority features that you want to keep, but which do not require your immediate attention.
But don’t let it become a junk yard of tasks that never get implemented! Instead, prune it periodically by deleting the tasks that no longer seem relevant or feasible. Your someday list should be somewhat stable in size, not ever expanding. When properly maintained, it can be an invaluable resource to have when choosing what to do next for your product.
If you have a task that’s been on the backlog for more than a couple of sprints, consider moving it to someday list. Or just delete it if it doesn’t seem relevant any more. Don’t worry so much about accidentally deleting something important – if it’s important, it will be suggested again. If not, then perhaps it was meant to go. The phrase ‘less is more’ definitely applies to backlog management.
Don’t worry about accidentally deleting something important from your backlog – if it’s important, it will come back
3 – Have a clear definition of ‘done’
Definition of Done, or DoD, is the acceptance criteria that ensures that the tasks, once completed, are truly done, not only in terms of functionality but in terms of quality as well. Definition of Done is stated as a set of rules like:
Feature is implemented
Unit tests are passing
Documentation is up-to-date
Feature is reviewed by QA
Code is in master branch
Code is deployed to production
The Definition of Done ensures everyone on the team knows exactly what it means when something is ‘done’, and it removes the ambiguity from the question “are you done with this feature?” Without DoD in place, you wouldn’t know whether the developer has just done the core programming part of the work, or if the feature is ready to be released for users. We’ve all heard someone saying “but it works on my computer…” – that’s not ‘Done’!
An explicit completion criteria can also reduce the ping-pong effect, which happens when QA has to repeatedly re-open the already completed task due to some unmet criteria (see step 1 above – define and refine your workflow). It’s always faster to spend a little extra time and complete a task once, rather than having to revisit it several times to make fixes.
Once you’ve agreed on your DoD, have it prominently displayed somewhere in the team room where everyone can see it. Preferably somewhere close to the visualisation of your workflow.
Having a DoD doesn’t only force you to structure your working habits and processes to minimise your work in progress (see below) and ‘rework’ of older tasks. It also forces you to think through what you’re trying to achieve, and articulate the value your team is adding to the business value in terms of outcomes. These are all valuable things to know!
It’s always faster to spend a little extra time and complete a task once, than having to revisit it several times.
4 – Control your Work In Progress (WIP)
Multitasking kills efficiency. When you overload any system, total output will go down. When you overload people with work, throughput slows and the number of defects increases. The more you multitask, the longer it takes to complete any individual task – it’s a mathematical fact.
But how do you fight the creep of multitasking? To start with, you can reduce your cycle times by having fewer tasks in progress at the same time. Consider setting WIP limits to your workflow. If you’re using a kanban board, you can specify the maximum number of tasks allowed on each column. For example, you can make a rule that there can’t be more than two tasks in progress per developer.
It can feel counter-intuitive at first but soon you’ll realise that better focus with less context switching actually leads you to complete your tasks quicker overall. In addition, you will feel better as there’s less hassle and task juggling in your workday. happy workers do better quality work. it’s a win-win!
Setting WIP limits doesn’t mean that you can never start a new task before you’ve completed your current ones. They should be taken as guidelines and warning signs rather than absolute rules. However, if you do end up going over the WIP limit, you should try to understand how / why you’ve ended up in such a situation, and how it could be avoided in the future. Similarly, you might find that, if tasks regularly get stuck as WIP, you’re task size is too large. Consider breaking tasks down to a size where there is a constant and steady flow of work across your board.
If you end up going over the WIP limit, you should try to understand why you’ve ended up in such a situation
5 – Make your progress visible
Do all of your stakeholders know the current status of the project you’re working on? By “stakeholders”, I don’t just mean your team members but also your upper management, sales people, and even the customer themselves. Is it clear to all of them which features are already completed and which ones you’re currently working on? Will you be releasing on time?
A key principle of processes like kanban is to visualise your work. With a physical board on the wall (or some other so-called ‘information radiator’), you walk into the room and you can immediately see what is going on. No need to distract the team by asking for status updates.
The concept of visual management dates back to the 80’s when it was used by companies like Toyota for designing new car models. One room was dedicated for the design team and it’s walls were covered with plans, design mockups, schedules, project progress charts – anything that people were supposed to pay attention to.
Electronic tools like Jira or Trello, while great for tracking your work, are hidden away, and you generally have to go looking for them. But they do come with good APIs that enable you to pull data out for displaying on big public monitors. Some of these tools even come with a built-in TV-mode. Ideally, such an information radiator provides information from multiple perspectives. For example, you can show a burndown chart of your current sprint and a list of tasks that are blocked. A cumulative flow chart is a good visualisation to detect bottlenecks. Pick the data and visualisations that are most relevant to your situation and your team’s goals!
The human brain is literally designed to process visual information rapidly at at a high bandwidth. The team that takes advantage of this and uses information radiators knows the status of their work at all times, just by glancing up. A good information radiator is visible, attention-grabbing, and only displays essential key information to avoid clutter. However, the biggest benefit of it should be it’s ability to spark conversations – when problems are addressed early on, there will be fewer unpleasant surprises further down the road.
The term process has picked up a negative connotation due to so many tedious and useless activities that have been associated with it. Admittedly, you can easily get too bureaucratic and top-down in its implementation, but the fact is that without some processes in place, your company will struggle as soon as you grow bigger than few employees.
Now think about the process you’re using. Is it helping you to get better results? Which activities are useful, from this perspective? Are there some things that are just plain counter-productive, or that are noticeably painful and slow?
I hope you found these tips useful, let us know in the comments if you did, or if there are things you disagreed with! I’d also love to hear what other simple steps could be added to the list – what are your own tips for improving process?