THE PRODUCT PROBLEM
In the competitive landscape of autonomous systems, ensuring software robustness is critical. The business needed a solution that not only provided memory safety but also facilitated the development of software that was inherently more reliable and less prone to developer errors. Existing languages like C++ were leading to frequent complaints about the complexity and error-prone nature of the code, which could potentially lead to costly failures in autonomous systems. The challenge was to adopt a programming language that could enhance code correctness and reduce the likelihood of failures, thereby maintaining a competitive edge in delivering reliable autonomous solutions.
THE DECISION
The decision to transition to Rust was a strategic tradeoff, balancing the steep learning curve against the long-term benefits of increased software robustness and developer satisfaction. This required alignment across product management, engineering, and operations teams, as it involved a significant shift in development practices and retraining of personnel. Initially, there was resistance, particularly from engineers accustomed to C++, but the decision was justified by the eventual increase in code correctness and the reduction in easy-to-make mistakes. In hindsight, while the transition period was challenging, the tradeoff proved beneficial as it led to a more reliable product and a happier development team.
THE LESSON
This experience highlights the importance of patience and persistence in PM/engineering collaboration when adopting new technologies. A PM advice blog might not emphasize the emotional journey of engineers transitioning to a new language, but this case shows that initial resistance can transform into advocacy with the right support and time. It underscores the value of investing in developer experience and the long-term gains of embracing a language that aligns with the product's need for robustness, even if it means enduring short-term discomfort. Such strategic decisions require PMs to not only manage technical transitions but also to support and motivate their teams through the change.