If you’re part of a mobile team, you know that there are numerous tasks — reviewing pull requests, rebasing your branch, updating your tickets, running releases, dealing with app store rejections — that all compete for your attention daily. Each of these tasks demands some percentage of your team’s mental bandwidth – imposing some amount of cognitive load. Too much cognitive load can lead to burnout, human error, and an overall decline in productivity. Taking the time to manage your mobile team’s cognitive load is therefore a no-brainer, to keep your teammates productive and happy.
When it comes to reducing cognitive load, automation is often jumped at as a be-all and end-all solution. If you can automate away all high-load tasks, isn’t that all there is to it, problem solved? But what about tasks that either can’t be automated or are difficult (or expensive) to automate and simply aren’t worth the investment? What (if anything) can be done to alleviate the cognitive load of tasks that, for whatever reason, remain a part of everyday life in mobile development?
Luckily, research on cognitive load theory tells us that, by applying our understanding of how the human brain learns and processes information, we can effectively reduce the cognitive load associated with different kinds of tasks — ultimately helping to improve the productivity and efficiency of the entire team.
What is cognitive load theory?
The foundational premise of cognitive load theory is that the ability of the human brain to learn and process information is limited by the amount of working (short-term) memory the brain has available. Too much information presented in a suboptimal way leads to that feeling of cognitive overload, which actually impairs learning and reduces problem-solving capabilities — not outcomes you want on a productive and efficient mobile team.
To better capture how cognitive load manifests, cognitive load theory breaks it down into three different categories:
- Intrinsic load is the inherent difficulty of a given task. For example, consider the inherent difficulty in learning a new programming language irrespective of how intuitive the syntax is or how good the tutorials and documentation are. This type of cognitive load can be reduced by breaking down tasks into subtasks that can be learned in isolation and eventually induce learning of the task as a whole.
- Extraneous load is the additional load imposed by the presentation of information, such as poorly created, incomplete, or suboptimal instructions or documentation. This type of cognitive load can be reduced with improvements to how information is designed and presented. For example, think of how much more difficult it feels to navigate through a poorly documented REST API compared to one that is well-designed and documented!
- Germane load is the mental effort associated with constructing knowledge and skills, and integrating them into long-term memory. It’s the kind of cognitive load that is actually considered beneficial because it’s associated with learning. Running through a release checklist for the first time is an example of germane cognitive load — learning how to perform a task by running through a schematic process.
Cognitive load theory has been widely applied to everything from automotive interface design to instruction design in all kinds of educational contexts. There’s a lot we can take away and apply to how we think about managing the cognitive load of various tasks that are part of everyday life for mobile teams of all sizes.
Tips for managing cognitive load on mobile teams
Make inherently complex tasks more manageable with instructions and proper tooling
Tasks that carry a lot of intrinsic cognitive load due to their inherent difficulty can be broken down into simpler steps that can be learned independently. Having clear and accessible instructions readily available — and making sure those instructions break down what’s to be done into simpler steps — can greatly reduce the intrinsic cognitive load associated with these kinds of tasks. For example, every iOS development team is familiar with the yearly task of upgrading your project’s Xcode version — no matter how many times you’ve done an upgrade in the past, it always feels relatively difficult and painful. But having a process in place with clear instructions on how to work through the upgrade step by step can greatly reduce the cognitive load associated with the process — making it a bit more streamlined and pain-free, despite its inherently difficult nature.
Complex tasks can also be made easier to accomplish (thus reducing their intrinsic cognitive load) with the help of shortcuts that make them easier to remember, or tools that do most of the heavy lifting for you. For example, take the task of building and uploading your iOS app to the app store using xcodebuild and agvtool — command line tools that are esoteric and inherently difficult to master. fastlane is a command line tool that wraps xcodebuild and agvtool behind a more intuitive interface, surfacing easy actions that simplify iOS command line actions for building your app, running tests, and generating screenshots. Leveraging tools that have a lower intrinsic cognitive load (like fastlane) to help with tasks which carry higher intrinsic cognitive loads (like building and uploading iOS apps) is a great approach towards reducing the overall cognitive load of the team.
Some more examples of the types of tools that can help manage intrinsic cognitive load are:
- Tools that enforce code formatting rules, like [something], remove the overhead associated with ensuring new code is conforming to the team’s defined style guide
- Tools that generate boilerplate code snippets for common code patterns and structures help reduce the intrinsic load associated with getting basic files and object structures in place — and making sure those structures match the project’s conventions
- Command line shortcuts for long or hard-to-remember git commands
Avoid the “split-attention effect” by combining relevant information in a single place
The split-attention effect happens when sources of information pertaining to the same topic are separated by time or space, forcing the user to mentally combine information from multiple places, which creates additional mental burden and increases extraneous cognitive load. Whenever possible, make sure that all information necessary to perform a given task is centralized in a single place to minimize this kind of extraneous cognitive load. Being consistent about where instructional material and documentation is stored is a simple but effective approach to alleviate this issue, but for more complex tasks — like a release process which requires you to bring together information from a variety of different tools (GitHub, Jira, CI, App Store Connect, etc.) — bringing everything into one place can be more difficult. Investing in a single source of truth — like a Mobile DevOps platform or a tool like Runway — can have a significant impact on reducing the cognitive load that results from the split-attention effect during the course of day to day mobile development.
Consider the design and presentation of documentation
Extraneous cognitive load happens when information is inadequately presented. We already know the importance of having documentation for any recurring task, but to take it one step further: being thoughtful about how instructions are designed depending on the specific task at hand can significantly reduce the amount of effort required to process what’s being presented.
Consider for example: a new developer joins your team, and one of the first things they need to learn is the team’s branching conventions both during day-to-day development and during the biweekly release cadence. Branching — like many git-related flows — presents an example of information that is for many people more easily understood in a more visual, diagrammatic format. Investing in building out a simple branching diagram translates something intrinsically difficult into a format that resonates with developers of all experience levels, and reduces the extraneous cognitive load introduced by attempting to understand complex branching conventions from documentation that’s presented in a less intuitive format.
We also know that individual learning styles can come into play when it comes to information processing — some people are visual or auditory learners, and process information more easily from instructional videos or audio clips. Choosing to present information in a variety of forms to accommodate different individual learning styles can go a long way towards reducing extraneous cognitive load. For instance, consider the all-too-common written instructions that teams create to coach their team through necessary interactions with tools like App Store Connect or the Google Play Console. Picture the cognitive load associated with reading through a set of text-based instructions on how to update your app’s “What’s new” notes on App Store Connect (already a notoriously unfriendly platform from a UX perspective!). “Login”, “Then click to the apps navigation field on the top right”, “Then click on our app”, “Then click edit version”... etc etc. If that doesn’t scream cognitive overload, I’m not sure what does. If you find yourself writing out a sheet of instructions on how to interact with and perform a task on a tricky platform, consider instead creating a demo video that instead shows how to accomplish the task. You’ll likely find that this simple shift in how you document these kinds of tasks can have a meaningful impact on reducing the extraneous cognitive load imposed.
Another common technique for reducing extraneous cognitive load involves the creation of scaffolds, schemas or templates. Checklists are a popular way to capture tasks that are sequential in nature, and not only do they make a lot of sense for the documentation of certain workflows, but the checklist format can also help reduce cognitive load as a more intuitive format for processing certain kinds of information. The release process for mobile teams, for example, lends itself very well to schematic representation, with various steps and checkpoints which must be passed as part of the process — and one of the reasons that in Runway, you’ll find a clearly delineated release timeline for each release; a schema for the distinct steps that must be completed before, during and after submission. Representing the release sequence in this way greatly reduces the extraneous cognitive load associated with running through the release process for teams, and there are plenty other examples of mobile development tasks that can benefit from schema, template, and checklist creation as a strategy to reduce extraneous cognitive load.
Share examples of how things are done – and help your team learn by doing
In the world of cognitive load theory, one way to induce germane cognitive load (this is the “productive” kind of cognitive load which converts working memory into long-term memory) is by using worked examples – in other words, examples that show how problems are solved in a variety of ways.
For the kinds of tasks one might come across during the course of the mobile development cycle, consider including demo videos or detailed screenshots with instructions at each step to demonstrate examples of the task being performed. Once worked examples have been seen a few times, the next step to help with inducing long-term learning is to encourage regular practice of specific tasks, with the goal of minimizing the cognitive load associated with the task over time, as one is able to more easily pull from long-term memory to perform it.
Engineering on-call rotations are an example of this approach in practice: they help developers learn on-call procedures (including triaging and debugging issues, escalation processes, and post-mortem preparation) by regularly rotating responsibilities around the team. Having a buddy system in place for new team mates can serve as an analogue to worked examples — pairing up more experienced members of the team with first-timers during their first few rotations to provide step-by-step explanations and support through more complex situations. Maintaining robust audit trails during incidents can provide another source of examples that can be studied to understand how different unique situations were handled. Release rotations are another example of approach – they not only distribute the responsibility of managing regular mobile releases across the team, but when properly implemented (and with the right tools to support the process) provide another opportunity to for people to gain a deeper learning of the process by running through it regularly — reducing the cognitive load associated with running mobile releases each subsequent time.
Maintaining worked examples and regularly rotating frequently performed tasks across the team so they can be practiced, are two ways to encourage the kind of long-term learning that ultimately reduces the cognitive load of performing the task in the future.
Cognitive load can be successfully managed where automation isn’t possible
Mobile development will always to some degree include manual tasks that can’t (yet) be automated, and managing the mental tax imposed by these tasks on our mobile teams is critical.
We’ve seen how there’s a lot we can take from cognitive load theory to hack our processes to better fit with the way our brains work. By applying simple and effective strategies to reduce the cognitive load associated with tasks that we often come across during the course of everyday mobile development, we can meaningfully impact the productivity, efficiency, and overall happiness of our mobile teams.