Don't make me think (too much)

Making agile work for everyone 🤘

Don't make me think (too much)
That title is familiar — Everyone familiar with Steve Krug

Yes, I may have slightly ripped off the title of Steve Krug’s book Don’t Make Me Think: A Common Sense Approach to Web Usability, but I think the title is paramount to what I’ll be talking about.


TLDR;

  • Provide an efficient workflow to pass knowledge down to team members that need it
  • Reduce cognitive load by ensuring that members of the team have what they need to get the job done
  • Provide a communication gateway for external communication to reduce distractions in the team
Photo by Robert Bye on Unsplash

What is Agile?

Agile is a methodology that aids in getting products delivered quickly. Much faster than the traditional Waterfall model. This is due to the combination of cross-functional teams and a constant feedback loop from the customer. Now you don’t have to follow Agile to the letter, but the manifesto does outline a few values to get you started:

  • Individuals and Interactions over Processes and Tools
  • Working Software over comprehensive documentation
  • Customer Collaboration over contract negotiation
  • Responding to Change by following a plan

You can tailor these to meet your needs. For example, you may have a customer who is very strict on documentation. To respond with “that is not part of the Agile Manifesto” would probably not go down well 😅

Making Agile Work

Utilizing cross-functional teams

Part of what makes agile so amazing is the fact that you don’t have each profession bundled together in its own separate team. Having them part of a cross-functional team ensures the following:

  • You can interact with that team member directly
  • That team member is dedicated to your project
  • That team member can better prioritize their work based on feedback from the rest of the team

Having to communicate outside of the team often ends up being the bottleneck in projects. We’ve all had times where we have had to turn off our Slack notifications in order to focus on a task, which is fine…but sometimes we can forget to turn them back on and then we are flooded with lots of messages. Communication inside the team should be fast and efficient. And any communication outside of the team should be handled by someone who has the time to prioritize and relay messages in and out of the team. The idea is not to minimize communication but to provide an efficient way to communicate across teams.

Create an efficient workflow

Making sure that the team knows what they are doing is essential to getting features delivered quickly. When team members start doubting their own decisions then that eventually leads to messy code, failing acceptance criteria, and indicates an incorrect assumption over what the feature is.

Making sure that knowledge is passed to members of the team ensures that they have the information they need to get that feature delivered. A workflow I find to work really well is:

  • The project manager speaks to the customer to get a high-level overview of the project
  • The designer takes each concept of that high-level overview and creates designs
  • The developer uses those designs to implement back-end systems and decide what resources are required
  • DevOps works with the developer to build a deployment strategy

An advantage of using this top-down approach is that it reduces the cognitive load on the team. Each member of the team only has one key area to focus on.

🙋
I care about what the product does

— Project Manager
🙋‍♂️
I care about how the user will interact with the product

— Designer
🙋‍♀️
I care about how to create data structures and APIs from the designs

— Back-end Developer
🙋🏼‍♂️
I care about how I will use the endpoints and designs supplied to display the data

— Front-end Developer
🙋🏻
I care about how I am going to deploy and provision resources required for the product

— DevOps

Communication through Project Managers

This concept ensures that the team does not get distracted by external factors. Having this single point of contact also enables the project manager to divert resources if there is something of urgency across another team that needs a specific team member's expertise. It also enables a filter for information that may not be useful or relevant at the moment. The information that is passed may also be more of an idea than an actual thing, so having the PM hold onto it stops the developers from working around a thing that may not be a thing…

Knowledge Sharing Boundaries

A way we can visualize this fact is that we have layers in a model that pass some of their knowledge down the chain. The main advantage of this is that the designer can pass on their designs to the developers, who can then start implementing the design of the underlying system. Without the design, the developers will be creating a system based entirely on assumptions.

I can understand things better when I can see them

Defining communication boundaries between each team

Passing knowledge down to the team member that needs it

Summary

Agile is good. Process is good. Distractions are distractions.

Defining a process is something that every organization should be doing. The process outlined above is simple, but I feel that it is one that maximizes the efficiency of the team. The separation of knowledge transfer feels organic. It feels sensible.

The more you can think about your own task, the better. The less you have to think about external factors, the better. Taking this approach ensures that you are maximizing your team's effectiveness by allowing them to focus on what they are good at. Ultimately giving you a better product, faster! 😎


This article has also been published on the Dootrix blog