Have you ever watched a professional barista at work? Every movement looks like an over-many-hours-trained choreography. But at the same time, it doesn’t look mechanic or inflexible! Instead, they adapt to the situation and can improvise in their craft. Yes, I know. Programming, or basically any job in front of a computer, is a lot less manual and sadly involves far less movement! Still, it makes sense to compare your own profession to others from time to time and see what you can learn from it.
So let’s grab that coffee your amazing barista just made for you and let’s talk about: Workflow.
The Barista analogy
There are a few things I want to point out when comparing our workflow with the barista example.
A clean workspace
There is absolutely no clutter! Everything that you see in the video has an immediate purpose. Now, look at your desktop, apps, browser tabs, and your open files in your IDE. What is immediately needed and what is clutter or worse: distraction?
Five steps to quickly improve:
- Clean up your desktop
- Group your Browser tabs and close unneeded tabs
- Close apps that you don’t need right now
- Close apps that pose a risk of distraction (yes, I mean your mail client and messengers!)
- Use Changelists, Contexts, Branches, etc. to switch between tasks in your IDE
Everything is prepared
Before starting the actual workflow, the barista makes sure that there are enough cups available, coffee in the grinders, milk in the cans, and that the portafilter machines preheated to the ideal working temperature.
What does that mean for you?
- You have enough supply of fresh air, water, coffee or tea, and battery life for the next 1-2 hours
- Do you take notes on paper? Where’s your pen? Where’s your notebook?
- Your laptop/computer finished booting
- You’re logged in to all needed accounts/platforms
- Your programming environment is ready (IDE started, Docker Containers booted, VPN connected, local database created, etc.)
When you decide to dive into a new task, you don’t want to be distracted by any of the above-mentioned points. These things will immediately destroy any chance of getting into the “flow state” (https://en.wikipedia.org/wiki/Flow_(psychology)).
Make a clear distinction between what is preparation and what is execution!
Everything has its place and is easy to reach
Cups on top of the machine, milk steamer left and right, grinders immediately next to the machine, tamper on its mat. Everything has exactly one place and is easily accessible. Only those things that are needed less often aren’t in direct vicinity.
As mentioned above: there is a time for preparation and there is a time for execution. Clicking through hundreds of directories to search for a file is not part of the execution! The same goes for asking a co-worker for that one link you simply can’t remember.
But it’s not just the obvious inefficiencies of our day-to-day computer work. How often have you watched people switching windows or tabs to get back to the thing they had opened one minute before? Or scrolling through multiple virtual desktops to get back to an application?
This is how you could improve:
- Pin your most-used tabs in your Browser. Access them via shortcut (Cmd/Ctrl + Number)
- Windows users: Same can be done for applications! Pin them to your taskbar and access them via a shortcut (Win + Number)
- If you’re using virtual desktops: Give each application a fixed desktop position/number (and access it via shortcut)
- Use additional tools/hardware to make your system more accessible (e.g. put your MacBook’s TouchBar on steroids)
- Know your tools. Maybe there are ways to work more efficiently with your day-to-day applications? (e.g. 15 Productivity Tips for PhpStorm)
- Use shortcuts everywhere! Everywhere!
Automate
To the home baristas among you: Have you noticed something in the video above? About the milk frothing? Usually, there are two phases you need to do manually while checking the temperature. Here’s a 30s summary of the process (4:26 – 4:56):
But instead, Dritan Alsela found his way to fully automate this process, so he can focus on pouring more shots until the milk is ready.
For developers, it’s fairly easy to automate certain tasks. Either you do it with Git Hooks, or your favorite CI/CD Tool (e.g. Github, Gitlab, Travis, CircleCI, etc.), or some other build automation you have configured. Similarly, you can automatically run your unit tests or FE build on every change, so you don’t need to manually trigger these.
But what else is there that could be automated, so it saves you time for more important tasks?
- E-Mails: Use smart labels or custom filters to pre-sort and order your emails. This way, you might have to handle 20 emails per day instead of 200.
- Proofread: Use apps like Grammarly, Hemingway or ProWritingAid to automatically proofread your texts and suggest writing improvements.
- Schedule meetings: Lots of tools like Outlook and GCal nowadays have features to automatically find time slots that are suitable for all (or the most) attendees of a meeting.
- There’s more: It really depends on your situation and the work that you do. But trust me, you can go a lot deeper. Whether you want to connect apps with something like IFTTT (https://ifttt.com/) or do your time tracking by rotating a cube (https://timeular.com/product/tracker/, https://timeflip.io/), or automate the whole time tracking by generating it from your calendar. The options are endless if you let your creativity loose!
Delegate
If you can’t automate certain processes, who says that you must do them? Maybe there’s a way that someone else could help you. Maybe someone else would learn a lot by doing the tasks that feel tedious to you. Maybe you can pay someone so you can have your mind focused on the important steps. That’s why you won’t see a barista in a busy café serving the coffee to everyone’s table.
Identify and focus on the most important tasks for you and see if you can get someone to help you with the rest.
Don’t think
There’s a time and place for analyzing and rethinking and there’s a time for execution. Don’t mix these up! You won’t find a sprinter who is analyzing his/her technique during a competition or a boxer overthink whether to give a right or left hook in a boxing match.
So ask yourself: Am I currently executing or practicing? Pure execution means you have a workflow in mind and know what to do next. Practicing would mean you are optimizing and rethinking or workflow steps. Just be aware of what phase you are currently in.
The “finish”
So the shot is poured, the milk is steamed. Time for probably the most aesthetic and Instagram-famous part of making coffee: Latte Art!
So you could simply throw the milk into the cup, splish, splash, coffee done, right? Yet, if you want quality you might want to take a bit more time for this final step! The same goes for the rest of your work. Don’t be stingy on the last few minutes of your task. Take the time to go through your (mental) checklist. Spend time communicating your final results to your team. This last step can really make the difference between astonished colleagues and them not even knowing about what you have accomplished.
Better analogy?
I’m pretty pleased with these few points comparing baristi with my day-to-day work. Even so, I acknowledge that they’re very different and there might be better comparisons. Did I miss something? Are there other points I haven’t mentioned?
Do you have any better analogies? Let me know! I’m looking forward to seeing more comparisons with different professions.