The Future Work and Robotics Organizations
Introduction
The last year has been an unprecedented experiment in distributed teams and remote work. The initial transition to remote work was especially difficult for most people as there was little time to prepare or create processes to set everyone up for success. Despite the initial challenges, many teams have made significant progress on their projects and have shown that it is possible to be productive outside the office.
Companies such as Facebook and Twitter have already moved to a remote workforce. The difficulty of creating that environment is higher for products that involve hardware, such as robotics. These systems require the integration of software and hardware to solve complex problems - frequently with unexpected interactions between the various components and modules. Estimating the quality of these integrated systems is a hands-on, tactile experience.
Given the way in which the transition was conducted, every organization would benefit from a deliberate effort to learn from the situation. With the positive experiences and advantages of remote work, it seems unlikely that most organizations will simply return to the office once the majority of people are vaccinated. This post attempts to explore the benefits and challenges of remote work, including some potential approaches that might enable the ‘good’ and mitigate the ‘bad’.
Benefits of Remote Work
There are many advantages for people working from home, including opportunities for better focus, time saved from commuting, and better work/life balance. The improved individual productivity combined with higher employee satisfaction and better recruitment presents an opportunity for organizations that can construct an environment that enables some amount of remote work.
Improved personal productivity
There were a number of articles and blog posts describing the benefits to productivity from concentration and focus prior to the mass shift to remote work. Initially, many people did not have a good workspace or an environment conducive to ‘maker time’. As they became more established in working from home, most created a quiet space that allowed them to focus. This (combined with larger blocks of uninterrupted time) has boosted productivity enough to offset some of the downsides and allowed goals or projects to remain on schedule.
Improved Job Satisfaction and Work/Life Balance
A recent survey found that the average worker spent >23min each way commuting. That time savings and the ability to take care of household tasks or be home when kids return from school has led to a number of stories about how much more family time many people have. As a result, many people are motivated to ensure they are getting more work done to show that they are effective and productive.
Improved Hiring and Recruiting
Many organizations have difficulty recruiting top engineers, resulting in substantial effort and months of time to fill highly-skilled positions. Having the ability to hire people anywhere they are located would improve the situation. It’s also likely that as more big companies move to remote work, it will be more challenging for companies to hire if they expect everyone to relocate and be in the office continually.
Challenges from Remote Work
Limited Access to Systems and Hardware
It is certainly possible to develop a cloud application or web service from anywhere in the world. There are no special requirements for developers (apart from an internet connection I suppose), so they can readily replicate the environment anywhere. For robotics and other integrated hardware/software systems, engineers need access to the devices at several points in the development process. Simulation can improve productivity and cover some scenarios but will never achieve the level of fidelity required to have full confidence in the final result.
In the early days of Canvas, it was easy to ensure plenty of direct interactions by the developers with the robots. We were around them all the time, even regularly developing while sittong on them while they drove around. It worked well to be notified when something strange was happening, though I will admit not enjoying the motion sickness feeling.
As the size of the team grows, creating those interactions and getting developers to experience the system becomes more problematic (even with everyone in the office). The test space becomes noisy and including the whole development team would quickly be crowded.
Coordination and Planning
Virtual interactions make it more challenging to conduct traditional planning and status reporting. Meetings and personal interactions have fewer non-verbal queues available - even when everyone is on video. They are also more subject to technical difficulties such as glitches, drops, etc. Many teams have struggled with meetings as a result, especially when those meetings would involve larger groups. One-on-one interactions can be replicated with minimal loss (though I still miss whiteboarding), but larger groups require more deliberate mediation and can be much slower.
Onboarding and New Hires
The irony of easier hiring is that it is more challenging to on-board new engineers. Particularly for junior engineers that need regular check-ins and more mentoring time, the loss of constant interactions has a bigger impact. Remote work may be able to sustain a culture or relationships but it is more challenging to build them over video calls.
Approaches and Tools that Improve Remote Work
Decentralized Leadership
Largely from the additional challenges communicating (especially in large groups), many organizations that rely on rigid hierarchies, cascaded plans, and status reporting struggle more to work remotely than decentralized ones. In those organizations, developers are more empowered to make decisions and require less tight coordination. Enabling this approach requires a clear communication of priorities and goals, but by allowing the individuals to make some key choices they are more engaged and suffer less from any communication difficulties. It’s overall a powerful form of leadership that has many other advantages but remote work highlights its strengths.
Remote Access and Feedback
There are several techniques that can facilitate the developers understanding how the system performs. One of the best of these came from my coworker Nils. He would send time-lapse videos of the carts running, providing a wide-area view and replicating much of the experience of visiting a customer site. The site visits remained important but the videos allowed much more frequent check-ins and ensured the entire team was able to participate.
One benefit of remote developers is a good opportunity for dog-fooding the remote upgrade and support tools. Robotics systems need intervention mechanisms that enable a remote operator to analyze failures and resolve them. Embedded systems require tools to conduct and schedule remote software upgrades. Both types of tools can be a key factor in a team’s ability to scale. By investing in them early, they also enable remote developers to use systems and the developers will improve the overall quality of the product by ensuring they work well.
These tools do not replace hands-on access to the systems but allow developers to remain productive even when they are not in direct contact with the systems.
‘Ride Alongs’
One of the best tools for conveying the current state of the integrated system is to spend time with the QA and support organizations. Many of these teams have substaintial experience of how the system typically behaves. They frequently have questions about how to troubleshoot and work-around different types of issues. Developer ‘ride-alongs’ allow information sharing in both directions - “how well are things working?” and “what do different signals mean?”
Simulation Tools and Log Libraries
A good collection of relevant logs and robust simulation tools provide a number of advantages to the team. They improve overall developer productivity, enable working from anywhere, and can be used in CI pipelines to catch bugs early when they are easier to triage and resolve. These provide a number of benefits in addition to enabling developers to work remotely and they are especially important in efforts to ‘move quality upstream’.
Documents to Convey Designs and Plans
Though spoken communication is more difficult, distributed teams have advantages sharing documents and other written communication. Using documents as a central focus for discussions can improve communication while serving as a record for decisions and providing a way to share information to the wider audience.
Periodic Planning Sessions
Most organizations conduct regular planning meetings, with the frequency determined by the size of the organization and the maturity of the products. Early in the development cycle these plans may occur quarterly, shifting to semi-annual or annual plans as products become mature and slowly evolving. Conducting these sessions in person improves the effectiveness of the process and provides opportunities for team and relationship building.
On-Site Integration for Milestone Builds
Many of the best quarterly or semi-annual goals result in functionality running on an integrated system. This may be a new platform revision, an expanded feature set, or a new operating environment. The effort to ensure all components of the system work well together greatly benefits from having the entire team at the same place. At the same time, they provide good opportunities for teamwork and collaboration.
Distributed Hub Cities
A smaller version of remote offices, the idea of ‘co-work spaces’ would provide a local facility where a group of developers could share resources and expand the test capability of the team. In larger companies, remote offices tend to focus on specific functionality and have dedicated teams. In this model however, the teams remain distributed but a group in the same area can share hardware and space. If built in the hiring process, this could even provide opportunities for cross-functional collaboration and knowledge sharing.
Putting it into Practice
Like many things, there are a wide variety of potential ways to approach this situation depending on your goals. Many of the ideas described in this post solve problems for local teams in addition to remote or distributed ones. They have the potential to enable a new work environment and adapt to a changing workplace and evolving expectations from the workforce.
A Few Days Per Week
Even if an organization has a local team, chances are pretty good that they will open up the possibility for developers to work remotely occasionally to a few days per week. In this model, the team can almost adopt the ‘no meeting’ days to reduce the communication burdens. This is likely to boost productivity from long blocks of focus time so long as the engineers can effectively achieve concentration tasks from home. This approach places an emphasis on remote tools, logs, or simulation resources to enable highest levels of productivity.
Distributed Teams
With the right set of tools and practices in place, teams may find that they are able to interact effectively remotely. The ability to use distributed communication tools allows the organization to gain the hiring and recruiting benefits from a larger number of sites earlier than would typically be possible. These distributed teams would likely still come together on a regular basis for planning or integration sessions but would able to accomplish most of their work in a number of different cities.
Truly Remote Teams
While a large number of cloud and web organizations are moving to completely remote teams, this still seems problematic for most systems that involve hardware. There may be an opportunity for companies that work on consumer devices or smaller embedded systems to put a completely remote workforce in place. Depending on how much the shift to remote work at these larger companies such as Google, Facebook, Twitter, etc. changes the landscape, there may be increasing pressure to move other industries in that direction. While some of the ideas on this list may help in that case, additional creativity and adaptation will likely be needed for many robotics companies to get to that point.
John, thanks for sharing!
Nice article, and I agree with a lot of your points. The software vs hardware distinction of engineering work is important to note. I personally prefer the term "distributed" vs "remote" work, as explained https://www.garudax.id/pulse/future-work-tim-stelzer/?trackingId=SiRytU11RRO6JMp7RD3zYw%3D%3D
Great article!