At one point I entertained the quixotic and, retrospectively, stupid idea of requiring every employee at Fog Creek to be a programmer...
The converse (and less stupid) idea is to require every employee at your software startup to do sales/marketing/customer service. There are a bunch of great examples of this, but what comes to mind is how the employees at Wufoo rotate the customer service position daily (mentioned here: http://mixergy.com/wufoo-kevin-hale/).
Expect to lose staff if you do this suddenly. I've been at a place where this was implemented... and in a few months a bunch of people had left. Many developers at companies just want to do development... and not sales and support. As usual, changing a culture of a place should be done in consultation with everyone there.
If you make it clear it's formal part of everyone's responsibility during the interview process you will likely get a self-selection for the development team that you are looking for.
What Joel should argue, in addition to "don't outsource programming", is that one could augment sales and marketing. A sales and marketing team in a major region like China or Russia could multiply good coding done at home.
If code is the analogue to manufacturing in the digital age, why would one outsource the manufacturing of the new industrial revolution? It would be like Henry Ford contracting with Mexico instead of building factories in Michigan.
US software companies can’t expect to get sustainable advantage by offshoring software development to cheaper countries. If a developer in Russia, India, or China costs 50% as much as a developer in Seattle, San Francisco, or Boston, but software development is only 10% of your costs, you can only get a 5% advantage from offshoring development.
I assume he's talking about some specific class of company. Anyone know what it is?
For whatever class of company, I am puzzled why is it wrong to assume marketing and sales cannot be outsourced. Marketing allows work to be done in flexible timings, for sales and support one will require employees to be awake at odd hours, specific to their customer's time zone.
And, I have personally seen it being done successfully - not in an outsouring company, but in an India-based product company.
I believe that as long as there is going to be considerable cost arbitrage to be taken advantage of, there will be outsourcing. Development / sales / marketing - anything that does not require direct visit to customer premises.
For marketing to be really effective it needs specialist knowledge of both field and geographic ___location. There are countless examples of marketing failures where people simply assume that what works in country A will work just as well in country B. I wouldn't trust a marketing firm halfway round the world to know what works and what doesn't in my home market.
All else equal, you're right. But this is far from that.
Outsourcing software (or anything) is not free. Usually there is a big quality cost. Sometimes it's other things. If you are saving 40% of your costs, you might want to "pay" these alternative costs.
If (for example) Microsoft wanted to outsource their development for 5% savings, they would (presumably) end up paying a price in buggier software, poorer design, slower releases or whatever that amounts to more than 5% of costs.
Similar could be said about customer service. If customer service is only 10% of your costs and has a substantial effect on how much your customers like you and you outsource at the expense of quality to save some small percent of your total costs, you are very likely to regret it.
Microsoft does outsource (more precisely, offshores) development to reduce cost, it has large dev centers in both China and India (and few small in bunch of other places). Once I heard that product groups that were moving development to India were getting x2 headcount over positions closed in Redmond.
The converse (and less stupid) idea is to require every employee at your software startup to do sales/marketing/customer service. There are a bunch of great examples of this, but what comes to mind is how the employees at Wufoo rotate the customer service position daily (mentioned here: http://mixergy.com/wufoo-kevin-hale/).