Don't make me think (too much)
Making agile work for everyone 🤘
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
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.
— Project Manager
— Designer
— Back-end Developer
— Front-end Developer
— 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
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