What are some useful tactics to efficiently search for and evaluate whether a tool/library is right for the job, compare alternatives or decide to build a solution from scratch?
What I find tricky is that differences between alternatives only become clear when the software becomes complex (which is often too late to go back) and that edge cases are unexpected and show up late once the tool is too entangled with your code.
What I have tried is:
I guess more broadly the question is how to approach decision making when testing alternatives is too expensive/time consuming and where prototyping is not very effective.
Those are great questions to ask. As a starting point, if you're at a startup, the default choice should be to buy, not build. In some cases, it’s not even “buy” because you can use an open source solution.
The reason off-the-shelf is a good default choice is because code is a burden. More code equals more bugs — you want to reduce the surface area of bugs on a product you’re working on.
In addition, at the vast majority of startups, you are not doing anything novel technologically that would merit you needing to build something very unique. So off the shelf solutions are probably sufficient.
Thanks for the answer Rahul. My knee jerk reaction has often been to building from scratch, I even tried to build an RPC library in one experimental project, before realizing that tRPC was the exact thing that I was looking for. I learned some tricks but I do not think it was worth time, not to mention that the project probably failed because of that.
building your own version of something can be extremely valuable for learning! but if the goal is to move your company forward as quickly as possible, then taking existing libraries or technologies is almost always preferred