Perhaps a dumb question, but do companies tend to have an accurate picture of what their core competencies are?
This is an interesting question! The world is certainly full of stories of outsourcing gone awry, which is some evidence that companies don’t always have an accurate picture. But I don’t know rigorous statistics on this.
Just following the example from the post: did CEA ever try to outsource some product-related tasks? Are there any circumstances in which it would it make sense for you to do so even if it’s a core competency?
Yep, for example we have a contract software engineer who works on effectivealtruism.org. I think this works because we can have a relatively ”complete contract”: we can hand them a design specification and say “turn this into code please”. EA.org is a relatively straightforward static website, which makes it easier for the design specification to be complete.
The things that are harder to outsource are when the design is harder to define. As the design becomes more complex, a complete specification often ends up just becoming code (“if the user is on mobile and logged in and has at least 1000 karma do this, if they are on mobile and logged in and have 50-100 karma do that,… Oh actually we have to consider this race condition which you basically need to be a programmer to have thought of...”).
This is an interesting question! The world is certainly full of stories of outsourcing gone awry, which is some evidence that companies don’t always have an accurate picture. But I don’t know rigorous statistics on this.
Yep, for example we have a contract software engineer who works on effectivealtruism.org. I think this works because we can have a relatively ”complete contract”: we can hand them a design specification and say “turn this into code please”. EA.org is a relatively straightforward static website, which makes it easier for the design specification to be complete.
The things that are harder to outsource are when the design is harder to define. As the design becomes more complex, a complete specification often ends up just becoming code (“if the user is on mobile and logged in and has at least 1000 karma do this, if they are on mobile and logged in and have 50-100 karma do that,… Oh actually we have to consider this race condition which you basically need to be a programmer to have thought of...”).