Recreate the Library
Now, recreate the soup.., er library. You’ll have a lot to figure it out, but it can be worth the price.
In The Beginning
When we write code, we stand on the shoulders of those that went before us. We use their tools and artifacts to make something bigger and better. Sometimes, however, it might be worth peeling back some layers of abstractions and going to back to the beginning.
Your “beginning” depends on what you want to learn. If you want to learn how a library works, take it away and try to implement what it does by yourself.
If you start from the very beginning, all your learning is in front of you. Whatever pain that library author was trying to solve may also be in front of you. Brace for the impact of pain and learning.
Line By Line
When you start from the beginning, you get to make incremental steps forward. You have to blaze a trail because you have left the highway. This gives you many more swings of the machete and many more things to figure out. The going is slower, and you don’t get to skip a step.
In the end you may have cut a path that’s not a straight and not as smooth as those expert engineers that went before you, but you will have earned for yourself something valuable. You will have no gaps in your knowledge – it is contiguous. You have come to this new level of knowledge by coming every step of the way. You learned and invented your way through every problem at every stage.
When you’re done, you’re in a new place a bit unlike where anyone’s been before. You have built a new solution. It’s custom, and it fits you. Perhaps it’s even an improvement upon previous art. It’s something that you can likely share with others. You’ve created instead of just consumed.
And now you have the best of both worlds. You’ve dropped the use of something premade, like that library, and made a version for yourself. It works to your need, which might just be learning. You have importantly gained some insight into how that original library worked in the first place. You’re now ready to be a more savvy and adept user of that library. You have a better mental model of what’s happening when you use it. You’re more equipped to contribute to that project. You value that premade tool for all of the extra cases that it covers that you didn’t get to. You see more clearly.
It’s a potentially expensive choice to start from the beginning and do such a recreation. It can be worth it. There’s definitely value there. If you’ve gone the prefab library route for a while, you can always go back and build up some foundational knowledge in this way. Might it help you?
What libraries have you dropped in order to go figure something out on your own?