Your programs shouldn&#x27;t do things you do not understand. You do not have to be an <i>expert</i> in cryptography, memory allocation or b-trees, etc, but if this is what your app requires, then you should take the time to read up on it and carefully research what is out there if you suspect it is beyond your abilities to implement.<p>If you take the time to do your research, the choice between rolling your own, copying or adding a dependency will become clear. If it&#x27;s not becoming clear, then you haven&#x27;t finished your homework. Learning is a good thing, yes it takes time, but it&#x27;s time well spent, and it&#x27;s <i>fun</i> above all.<p>You may discover that this thing that you thought was hard and needed a dependency is really a few lines of code (a good example is a graph implementation). It might even change your career path. At least that&#x27;s been my experience in the nearly two decades of writing software.