According to Bloomberg , Boeing outsourced software to India. They go on to say that was a concerted effort by Boeing to reduce costs, laying off experienced engineers among other things as they went on a cost cutting exercise. Over the last two decades we have seen businesses outsource to India to reduce costs. The trend for cost-cutting is squashing suppliers everywhere and the dangers are visible, but largely ignored. In a world where profit margins are king, we are bound to see suffering at other parts of the business. In the case of Boeing, it was livelihoods, job satisfaction and the case that 346 people died in crashes. As a software engineer, I have turned down many jobs, for all sorts of reasons, and often its due to the business owners not understanding the fundamentals of what Simon Sinek calls the Infinite Game.
As the founder of a software company, I am confronted daily by pressures from cost-cutting clients, zero-sum mentality and the like. We often have to explain why our price is 20% more than India, or needs to increase by 2.5% next year. I am often dragged into fierce situations, where this demand for cost-cutting and profit margin is king, with little regard to the effects of the decisions they want.
Have you ever considered why a cold drinks firm hasn't simply changed their bottle caps removing the need for that plastic ring that kills wildlife around the world? It would be a relatively simple and inexpensive problem to solve.
In software terms, here is what hiring a $9 per hour software company really means.
Reduced critical thinking
We often solve problems our client's have no idea existed, because we actively consider our work. We are experts, you would expect us to be and we have Liability Insurance.
Hiring at $9, means
- You don't want good decisions made on your behalf
- You don't avoid or resolve issues along the journey
- You don't want any changes to be made to your specification
- You don't want to know about problems in your specification
- You don't want the hassle of knowing
- You don't need someone in the trenches revealing issues
Buying a loss
Although it's not always true, it does happen often. The code you are buying is like a use once cardboard phone. It's like buying paper plates and cups. You can't wash it and reuse it.
- You don't care about the future maintenance of the software
- You don't care about those who may be tasked with trying to change the code later
- You don't care about building something you can reuse
- You don't care about the costs to repair bugs
- You don't care about the costs to upgrade dependencies
- You believe you will simply buy another project at a loss in the future
Disregard for your customers
Your customers are important. They buy your products. If your software affects them in any way, you are using a very risky business model.
- You don't care about quality
- You don't care about customer satisfaction
- You don't care about customer complaints
- You don't want a good product for your customers
- You don't mind lying or deceiving your customers
Disregard for your staff
Your staff are out on the floor every day, fighting for your brand, your business and your respect. They are the backbone of your business.
- You don't care about their tasks or needs
- You don't care about the mess they inherit
- You think of them as cost
- You don't want their input
- You underestimate their part of the job
You are naive
You lack the basic business sense that it will cost you more in the long run.
- You don't understand what code quality is
- You don't understand source code economics
- You are measuring success with the wrong measuring stick
- You don't understand that bad code has a long-tail cost
- You don't understand why engineers want to rewrite your code
- You don't understand why customers are leaving
- You don't understand the software business (and every business is a software business)
I am not attacking outsourcing or India. I am addressing the mindset surrounding the cost-cutting outsourcing mentality. If your business or startup is trying to succeed, the last thing you need is throw-away, loss making, low quality code. You want a partner, to address your short-comings and assist in the development of your idea. You need a good cost-to-reward ratio. You need an MVP, a brand, quality, good decisions and a quality codebase with a good cost-to-change ratio. Customers smell bad quality, software engineers hate low quality, and it's bad for long-term costs and business development.
I leave you with the headlines and the link to full article on 16 tips for selecting the right development team
- Implicit Requirements
- Technology Decisions
- Cost of Ownership
- Minimal Viable Product
- Feedback Loop
- Mirrored Mindset
- Freelancer or Company
- Technology Bias
- Life-cycle experience
- Zero-Sum game
- Software Design Experience