Using Agile principles ​ to improve your productivity​ | by Juan Antonio Vicaria...

 2 years ago
source link: https://engineering.thetrainline.com/using-agile-principles-to-improve-your-productivity-b2312523552b
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Using Agile principles ​
to improve your productivity​

Image for post
Image for post


Many times when I talk to people, they raise a common issue, lack of time:

I am stretched…

I don’t have time to do all the things that I’m asked to do.

It takes me back to 2015 when I was promoted to Technical Lead. Up to that point, as a Senior developer, my responsibilities were quite clear: coding, reviews, technical designs…

In my new role, some things were a bit more confusing. I was getting random requests from random people, all wanting very urgent and important things: What should I do next? What is more important? Am I responsible for that?
Very quickly tasks started piling up, I wasn’t able to satisfy everyone that needed my help.

The same way I learned how to be a better developer, I decided to take action and learn how to improve my time management.

Very quickly something appeared in the literature again and again: Lean Thinking.
In this post, I want to share what I learned and has helped me in my career ever since.

Lean Thinking

Lean Thinking was developed by Toyota and it put the company in the top spot in the world. The goal is to maximize customer value while minimizing waste. It does that by focusing on the following:

  • Reducing waste:
    Waste translates to lost time doing activities that don’t give customer value. There are different types of waste defined in Lean thinking.
  • Flow:
    Traditional work is done in “batch-and-queue” fashion. A number of items are produced in one department and sent to another department. Lean advocates for a different model where items flow seamlessly from one part to another. The goal to deliver the minimum required at any point in time to maximize customer value.
  • Visualization:
    By inspecting your value delivery process, you can inspect problems in the process so we can optimize it.
  • Kaizen, improve:
    The Japanese word for improvement. Change for the better. Continuous improvement. Fail fast. Iterate and learn.

Lean has been used in manufacturing for many years and it has inspired the way we build software. But it can be used for many aspects, even in your personal work. I will explain how we can use these elements of Lean Thinking to maximize your productivity.

What’s your work?

Let’s go back to 2015, my first job as a Technical Lead. One of my biggest issues was that I didn’t even know what my work was. I could either wait months and months and perhaps figure out at the end what my work was, or, I could reflect on what the essence of my work was.
In order to do that I decided to identify my customers and what they expected from me. I achieved that by creating a Customer-Value map. Let’s create one from scratch.
In the center, I add myself and around me, I add my “customers”, people who expect something from me.

Image for post
Image for post
What my team expects from me

I have started with my Team. Just below it, I write the things that they expect from me. For example, they expect to have a Healthy backlog so that there is no stop and wait. Also, they expect that I help them unblocking issues, and they want to continuously improve.
Let’s add another example:

Image for post
Image for post
Another one of my customers, a colleague that I line manage.

A colleague that I line-manage needs my help to: progress in their career; networking, so that they meet people that will help in the future; and admin work, like approving their holidays.

Image for post
Image for post

Let’s add more customers, including my manager and the Product owner of my team.

One of the key factors is that I didn’t put specific tasks that I need to perform with my customers, I just added the value that they expect from me.

This representation helped a lot to make really clear who I was serving and what they required from me.

Prioritizing your work

Now that we know what value we need to deliver, the next big thing to deal with is prioritizing the different tasks that will lead to that value.

If you ever feel like you don’t know what to do next, don’t feel bad… Prioritizing is hard. We always want to do everything at the same time, everything looks important.

Let’s look at different ways that we use to prioritize our work.

Value vs Effort

Every time I get a task to be done a visualize my backlog in a graph like this:

Image for post
Image for post

We want to work on the highest value and lowest effort first. From time to time, you will have to pick a high value and high effort task, but be mindful about always working on complicated things, there may be an easier way to solve that problem...

One thing about high effort work: use the divide and conquer technique, break down complex work in smaller chunks so they are no longer complicated.

Important vs Urgent

Another way to prioritize work is based on Importance vs Urgency.
The Importance of something is related to how valuable something is, the more Important a task is the more valuable it is.
The Urgency of something relates to when it needs to be done, so it is related to time, the more urgent a task is the sooner it needs to be done.
There are two issues here:

  • Many people confuse them and mix them up. They think that only urgent tasks are important.
  • Many people thrive working only in urgent tasks. I don’t know if it is the adrenaline that our body generates or the sense of being a hero.

I don’t enjoy working only on urgent things:

Image for post
Image for post

If you work only on the Urgent things, you don’t have time to get ready so it leads to low quality and poor execution. I always try to move away from Urgent tasks and try to focus on the Important things that are not urgent.
Let’s see an example:

Image for post
Image for post

There has been an alert, some machine is running with high CPU. This has led to some downtime of an application.
It is really urgent and important to stop the alert and we can quickly do that by increasing the number of servers running the application.
Going forward something perhaps more important is to look into the process and see where the performance of the app is degrading. It is not as urgent but it will stop further urgent problems creeping up.

Visualizing your work

If we rely on our memory to remember things, I can guarantee that some important things won’t get done. Also, the cognitive effort to keep things in short term memory makes it really hard on us.
Some people overcome this by using post-its in their desks, placing to-do list next to them…
I do write many things on my hand so that I can remember to do it. We even keep loads of tabs opened so that we can remember to do something.

There is a saying: out of sight, out of mind. We think that if we see it all the time we won’t forget it. Ironically the things that you pile up around you eventually become invisible. Check some of the post-its that you have next to you right now, I bet they are not relevant anymore.
The key to effective visualization is to create a system that makes your work easily visible so that you can see at a glance what needs to be done.

Personal Kanban

One of the techniques that we use to manage work in teams is Kanban.
Why not use it for your personal work?

Kanban is based on two principles:

  • Limit the work in progress.
  • Visualize your flow.

Like many people, I use Trello boards to organize my work. This is how my current Trello Board looks like:

Image for post
Image for post
My Kanban board
  1. Inbox:
    When I have a new idea on how to deliver value or some of my customers asks me for something, I add a Trello task with as much information as I have at that time and put it in the Inbox column.
  2. Priority:
    From time to time I pull something from Inbox and add it to the Priority column. This is the equivalent of a sprint backlog. Work in there needs to be refined and ready to be worked on. The work there needs to be prioritized properly. I also limit this column to 10 items so that I can refine just enough work.
  3. In progress:
    I limit my work in progress to 2 items.
  4. Need feedback:
    It is important that you are able to visualize your flow. As part of my role, many times I don’t do tasks myself but I may have to delegate some work. I may also have to create a report and wait for someone to review. I will move a task to the Need feedback column when I need to validate with someone.
    I also limit the number of items here to 10. That way I force myself to do something about it. Otherwise, things will pile up here and I won’t make enough effort to complete things. There is a mantra that sticks in my mind:

Start finishing, stop starting.

5. To Retro:
Retro is my equivalent to the “Done” column. There is a key difference though, something is not done until we take a look at what we learned from it. Every time we do something we need to understand if we could have done something better or actually we tried something and it worked great. That’s what Kaizen is about. If we do things the same way all the time, we’d never get better.

6. Archive:
When I’m finally done with something I move it to Archive.


If you want to take one idea from this blog, please keep this:

If you manage your time carefully…

…you can achieve whatever you want.

About Joyk

Aggregate valuable and interesting links.
Joyk means Joy of geeK