After 20 years and a global pandemic, we learned that ‘hybrid remote’ is precisely how software development teams were always meant to work. That is, sections working collaboratively across different locations, time zones, etc., and completing individual tasks asynchronously dependent upon one another.
Ever since the Agile Manifesto was published in 2001, software development has gone through some drastic changes. Most recent examples include adopting asynchronous communication tools (e.g., Slack & Teams), which created a new default communication style for businesses. The pandemic also forced work from home policies to change abruptly, and the need to hire remote developers and connect small teams increased dramatically.
Many developers and dev team leaders invited the idea of working remotely because it meant fewer interruptions and more time to focus on tasks at hand, right? Not so fast…
Just because individual productivity can go up doesn’t mean dev team efficiency follows in step. In fact, when the entire global dev community went remote at the same time, did businesses go through the exercise of redefining the ways of working remotely? If not, there’s a good chance the “in the office” mindset crept back in at some point, and interruptions remained.
Zoom meetings, impromptu daily status updates, and plenty of other distractions keep dev teams shackled away from their deep state of focus. The past year spotlighted the need to transform the hybrid remote reality into an opportunity and strengthen the team’s alignment and the business.
Hybrid remote development is not new, but 2020 accelerated the adoption of many practices already in place. As the small mixed methods are normalized globally, we also have to accept how we work, the processes, and the ceremonies have changed. This is how Asynchronous Development (Async Dev) was born.
What is Async Dev?
Async Dev builds on the foundation that Agile and DevOps put into place. It is an approach to software development grounded in asynchronous communication. It works for hybrid remote, fully remote, and any dev teams aiming to unlock the full creative power of their developers. To unleash this power, Async Dev presents five guiding tenets:
1. Asynchronous is the default form of communication: Asynchronous communication means using collaboration tools and mentions by default. It helps reduce context switching, avoids unnecessary interruptions, and increases productivity.
With asynchronous communication, it is vital to analyze your dev team’s metrics to understand exactly how this change affects the productivity and efficiency of the unit itself. For example, if more code is being written as devs work from home but pull requests and cycle times are increasing, you need to find out why.
Tip: Examine the function of the daily stand-up and figure out how to best use that time to suit your team. As a hybrid remote dev team, create a way to get a shared view of up-to-the-minute updates on issue statuses but use the stand-up time to connect personally and talk about blockers.
2. Git is the central element of your development process: Whether you use GitHub, GitLab, Bitbucket, Azure DevOps, or another flavor of Git, most of the stages of the dev cycle are either start or involve your Git system. The choices made to configure, deploy and utilize it has a significant impact on your dev process.
In addition, the most up-to-date status of work progress resides in the git system. Since Git was built on open-source principles, most phases (coding, review, merge) do not require mandatory synchronous communication. They can be executed in different places and at other times.
Tip: Master your configuration and choose your policies with hybrid remote dev teams in mind. Remember, the best data sets for understanding progress or where we are as a team working on a project are extracted from Git.
3. Use Project Management tools for planning, not status updates: Whether your team uses Jira, Trello, or something else, project management tools are excellent for iteration planning. Using them to enrich dozens of micro-decisions that dev teams are taking every day only slows down productivity.
Every work status update while in ‘building mode’ should be considered with dev first in mind. Make every update automatically reflect the status based on actual git activity and serve the people who build and ship the software.
Tip: Project management tools should not be used for software delivery predictability. The minute you switch from the planning stage to the building stage, you should use a different agency or approach.
4. Continuous improvement is a daily practice: Data should always be accessible to everyone on the team, not just data engineers. This information should also not just be reviewed in meetings by management or held by gatekeepers. Your culture is defined by the KPIs you set and how you decide to utilize them. The fundamental principles for data usage for Async Dev are:
- Team-based data over individual developer stack ranking
- Measure process instead of output
- Measure empirical data over subjective data
- Focus on leading indicators vs. lagging indicators
- Establish baseline data points and trends
- Make sure it’s actionable
Tip: Data should be used ethically and cannot replace good managers with good soft skills and human interactions. You can’t optimize what you can’t see, so leverage the above principles to frame how to measure and measure. Most importantly, just measure!
5. Dev teams are the core of the business: The best companies in the world today evolved from developers that were highly aligned with business and market needs. Dev-led companies empower developers to make the best decisions on behalf of customers and the business by enabling context instead of giving instructions.
Developers and the business should never be disjointed, and sometimes the most critical business decisions are hiding in the lines of code. A focus on pushing context to dev teams provides a way to create transparency into decision-making so everyone can participate in a refinement cycle.
This is probably the most challenging part of making Async Dev a reality because, as dev leaders, it is the element of least control and requires buy-in from throughout the business.
Tip: Make every developer a decision-maker. Create and nurture shared insight into development data to make business decisions transparent and daily collaboration across functions routine.
Hybrid remote can be a business advantage for companies embracing it, but only if we adapt our culture and process to align and make it a reality. Significant changes took place last year, and now is the best time to go through the exercise of redefining how you work. After my co-founder, Ori Keren, and I decided to start a full-time remote work policy for LinearB in March 2020, we did just that and created Asynchronous Development.
We view it as a dev methodology designed around asynchronous communication and purpose-built for hybrid remote teams. It’s our favorite part of Agile, a little bit of Scrum, and incorporates a lot of what Ori and I have learned over the years as engineering leaders. Async Dev creates a mindset for where we think the future of software development teamwork is headed.