Let’s imagine you are paid to write emails.
The company you work for has a policy that all public emails from an executive should be written by someone with a clear head and proper training. That someone is you.
It works like this:
The whole process takes about half an hour up to several hours.
This seems OK. It might even be kind of fun, right?
The only difference is that you’re not sure when you’ll get feedback or approval. It might be right away, or it might take several weeks.
Since you don’t know how long it’ll take, you start working on the next task. Instead of having 1 email “in progress,” you might have 20, 30 or a whole lot more.
This the exact same job, with the same input, but it seems much more cumbersome and a lot less fun, or not?
In this example, we’re assuming there is no middleman (PM, analyst…) through whom all communication passes, introducing his or her own ideas, obfuscating the message in the process.
As a developer, I have often found it very frustrating when it takes ages to get feedback or answers.
You start working on something. You get stuck, you need feedback. Because you don’t know when you’ll get answers, you put the task on hold and start working on the next one.
Yes, I’ve been there: for several years, I worked on the other side, steering contractors/freelancers to develop custom software for our organization.
It is just as annoying to give extensive feedback to a developer, only to get additional questions 2 weeks later. These questions are usually ones that could have easily been answered if asked right away, but 2 weeks later, I can hardly remember what it was all about!
Surely, there are better ways to waste my time!
Let’s use a tool to manage all this “work in progress”, with statuses, flags, due dates, source integration, custom fields, assigned persons, reports, milestones and all that jazz.
This is an often unnecessary over-complication that is regarded as standard practice.
“That’s how it’s done!”
There are indeed situations that demand this way of working.
But, most of the software projects out there are actually quite straightforward and don’t benefit from these “solutions.”
The root cause is still there: it takes too long to receive feedback. As humans, we can’t temporarily store our built-up understanding—our “grasp”—somewhere until we need it again.
We are all busy and we can’t just drop what we’re working on whenever someone demands our attention. But what if we could?
What if we could work on 2-3 tasks at the same time?
What if we didn’t need tools (except for a basic to-do list) to manage the progress of all our tasks?
What if we could work intensely with the client on a few tasks from beginning to end? And not start a new task until these were actually completely finished?
Why? Because it would save time, money and frustration!
This is one of the core elements of several task/project management frameworks that suggest focusing on a limited number of tasks during so-called “sprints,” or that impose a limit on the “work in progress” (a WIP limit).
Often advocated. Seldom practiced.
And really, no one is asking you to drop everything at every question; just don’t let things slide forever.
There was a study, conducted at Palm in California, the makers of the first PDAs. This study measured how much longer it takes a developer to fix a bug detected 3 weeks later instead of on the same day.
Now, how much longer do you think it takes?
About twenty-four times as much, no matter if the task is big or small.
Did you also fall off your chair? My initial guess was 5-10 times, which should be enough to inspire anyone to give this some additional thought.
It’s also:
Well, it’s not that hard… to write about! :-) 🙂
Here are my suggestions, which should work no matter what role you’re in:
And if your role allows:
I think it’s always better to have direct communication lines because it improves the possibility of learning from each other.
You’re not demanding immediate attention; you’re asking not to wait for ages to get a reply.
I know this is not the standard way of working for a lot of developers: being proactive instead of reactive, reaching out instead of tackling that next user story or bug. I don’t mean to be condescending. I speak from my own practice, from the mistakes I’ve made, from experiences with failed as well as successful projects.
This might be one step (of many) to becoming a “10x engineer” and to show that you’re on top of things and care about the project.
There’s nothing wrong with steering and educating them on how to optimize the process and save time and money. Who could be against that? (Unless, of course, your time is billed by the hour 😉 )
… And what if you get feedback from multiple sources, contradicting each other, even contradicting your own opinion?
Tackling “Design by Committee” is another story though.
Sign up here and stay informed.