In "The Power of the Context" (2004) you wrote:
...In programming there is a wide-spread 1st order
theory that one shouldn’t build one’s own tools,
languages, and especially operating systems. This is
true—an incredible amount of time and energy has gone
down these ratholes. On the 2nd hand, if you can build
your own tools, languages and operating systems, then
you absolutely should because the leverage that can be
obtained (and often the time not wasted in trying to
fix other people’s not quite right tools) can be
incredible.
I love this quote because it justifies a DIY attitude of experimentation and reverse engineering, etc., that generally I think we could use more of.However, more often than not, I find the sentiment paralyzing. There's so much that one could probably learn to build themselves, but as things become more and more complex, one has to be able to make a rational tradeoff between spending the time and energy in the rathole, or not. I can't spend all day rebuilding everything I can simply because I can.
My question is: how does one decide when to DIY, and when to use what's already been built?