A few weeks ago, Bloomberg published an article implying the failures of Boeing’s 737 Max software could be tied to their decision to outsource the coding overseas at a low, $9-an-hour rate not often synonymous with safety. Given the unfortunate disasters the 737 Max has been involved in, the article is worth a read.
However, I think there is substantial value in examining the issue from a different perspective. As someone in a team who has managed software products with organizations small and large, I've come to recognize the subtle, root issue underlying these software failures. It’s not the fault of outsourcing: it’s Boeing’s organizational culture and how their decisions and behaviors permeated throughout their senior talent and into their outsourced partners.
For example, the article highlights:
“The typical jetliner has millions of parts -- and millions of lines of code -- and Boeing has long turned over large portions of the work to suppliers who follow its detailed design blueprints.”
And:
“...design violated basic principles of redundancy for generations of Boeing engineers, and the company apparently never tested to see how the software would respond...”
When you pair these insights with:
“Rabin, the former software engineer, recalled one manager saying at an all-hands meeting that Boeing didn’t need senior engineers because its products were mature. “I was shocked that in a room full of a couple hundred mostly senior engineers we were being told that we weren’t needed,” said Rabin, who was laid off in 2015.”
...a clear picture of Boeing’s disregard towards software culture begins to take shape.
For a significant undertaking, like engineering the software for a plane based on a prior model, staffing senior engineers is critically important. In this example, the software being developed is what is called a “brownfield project,” that is, it’s based on existing code which comes with its own, unique set of challenges and benefits. Being able to navigate and exploit the challenges and benefits this approach has is something senior engineers are well-equipped to handle.
Senior engineers, in this case, also come with the value of understanding team history and how decisions were and are made. When navigating a complex software project that should also have a large emphasis on testing, senior engineers may be able to speed up awareness of key areas to test, maximizing efficiency and effectiveness.
Reading through the article, respect towards key players is not the only culture issue. There are other themes such as:
- Software management had a disregard for the importance of testing software in an effort to keep costs low.
- The decision to outsource specifically to Indian software firms was incentivized by sales agreements, in India.
- Language and examples used throughout highlight a potentially very valuable globally distributed team that is undercut by a non-collaborative, “fixed” mindset.
- Engineering is viewed as a commodity and not a collaborative partner who can work through solving inevitable challenges.
All of these challenges can be solved, but the solutions must be led by Boeing’s management. The problem isn’t necessarily in using outsourced engineers — it’s in Boeing’s approach towards software development and collaboration.
Outsourcing can work incredibly well. Approached from a partnership mindset, it can even be a value-add, helping your team find and think through challenges you may be unaware of. When you engage with a technology partner, you have the opportunity to lead as an industry expert, while your partner collaborates with you on a regular basis to elevate your pursuits throughout development.
Trust and collaboration are foundational. In this example of Boeing, it would seem those foundations weren’t there. Software development has its challenges, but more often than not when failure is at play, culture is the culprit.