Last week I read an interesting article about humans replacing robots in Toyota’s factory. The thesis being that only humans are creative enough (right now at least) to develop new skills and processes to deal with production inefficiencies. This rings true - in order to improve a manufacturing system you need to understand the entire process, from the raw ingredients up to the way consumers end up using the product. It’s more difficult to do these days as products become more complicated with an increasing number of specialized components and I’m glad to see companies taking a longer term view and focusing on the value of human creativity rather than short term cost cutting.
Writing code is similar, it’s easy to take off the shelf libraries and use them in an application. This is a perfectly reasonable approach when starting out and you need to get something built quickly; in fact this is the prefered approach so you don’t fall into the trap of premature optimization. But as you scale the big improvements will only come when you understand both the high level goals of what you’re writing and the low level details of how they are achieved. Then you can focus on removing and rewriting extraneous code and improve the components that are the bottlenecks. Without this understanding it’s very easy to waste time optimizing the wrong components rather than figuring out where the big wins will come from.