Team Challenges
As a technical leader, the decisions you make will have a tremendous impact on the Friction, Toil, and Invisible work that your team has to live with as they go about their day-to-day work lives. These terms are all somewhat interconnected, and all relate to the drudgery of system administration and programming that has infected every development organization I have ever been a part of. We often spend too little time auditing our rituals. Instead, we do things the way we’ve always done them. As our new activities start we have no methods to green light them, nor do we have processes to end of life them when they no longer serve a purpose. I am amazed that well-intended development organizations haven’t culled their systems to empower teams to be as efficient as possible with their most precious resource, time. Instead, developers waste time with duplicative apps, like multiple chat systems or bug tracking systems. Combating Friction, Toil, and Invisible work has to be top of mind for every leader. Let’s break down some of the common items I’ve seen across organizations.
Friction
Friction often takes on 3 forms: Emotional, Cognitive, and Interaction as defined by Sachin Rekhi in a 2017 Medium article[1]. Emotional friction is the feelings your users have around developing your product or service. Often developers will use up a lot of cognition or brainpower when developing your offering. This leaves little energy for thinking about the end user. And ultimately can lead to a product that end users aren’t happy with. How many times have you heard your developers wish they had smarter users? Users aren’t going to get smarter, but developers can be given a more streamlined and productive environment in order to free up some cognitive space. Cognitive friction is overloading the brain beyond its capacity, and in modern software development, we often expect developers to have more capability than is possible. In all cases, our brains have not evolved at the pace of technology, and yet we expect engineers to keep up with this acceleration of technology change. Being vigilant against new technology being added to your stack for the sake of technology, is an easy win. Finally, Interaction friction has to do with the tools you provide for your teams. Is access hidden behind a ticketing system, or do you prevent teams from accessing the systems they need to complete a job? Do you provide the best tools for the jobs at hand? Making sure your developers experience as little friction as possible is a key to efficiency.
Toil
How many processes do you have that are burdensome to your users? In other words, are your deployments entirely manual and fraught with human-injected errors, consisting of significant hand jamming of configuration files? Have you made it easy to stand up local copies of development environments and the ability to set up a local copy that replicates the reality of a production system? Does testing occur automatically with each build, giving you the benefits and sanity that a recent update has not broken or regressed anything? Have you documented enough to ensure that others make changes to the system and understand your intent? Finally, are you willing to have a great naming convention that evolves with your system changes, so that wayfinding around your systems and deployment is easy.
Invisible Work
This is the work that isn’t easily tracked but is impacted and driven by many of the decisions made above.
Some examples of invisible work:
Mandating that passwords are updated every 30 days, and have to have numbers, letters, and special characters for access to internal systems. Much better to get with 2-factor and allow your humans to be human.
Requiring server installation and setup be done by hand, instead of having automation available to quickly stand up infrastructure for you.
Not using any number of SaaS services to give you baseline capabilities that allow you to quickly deliver.
Your custom development decisions should be driven entirely by what you are innovating in, and what can not be purchased off the shelf.
5 Tips:
Be deliberate with the Emotional, Cognitive, and Interaction Friction you inject into your team and the team’s processes.
Minimize the toil that your teams encounter and audit anything that gets created to be sure it’s absolutely necessary..
Track all the work you are injecting into your teams and have a process for managing the amount of invisible work they do..
Thank You
Jim ‘The Designatic’ Tyrrell
[1]
https://medium.com/@sachinrekhi/the-hierarchy-of-user-friction-e99113b77d78