Taro Logo
1

Choosing an off the shelf solution v. building from scratch

Profile picture
Mid-Level Software Engineer at Pharmacie centrale des hopitaux2 months ago

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:

  1. Ask AI (obvious), works well for suggesting alternatives, but pretty terrible at helping you pick the right one (not a big fan of relying on AI for things that can not be tested immediatly as it is really good at sounding knowledgeable even when it is not).
  2. Architect the software as to make the choice reversible (if possible at all will still involve much rewriting)
  3. I thought about trying to implement edge cases first but this assumes you already have exprience with whatever it is your are building.

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.

35
3

Discussion

(3 comments)
  • 1
    Profile picture
    Tech Lead/Manager at Meta, Pinterest, Kosei
    a month ago

    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.

    • 1
      Profile picture
      Mid-Level Software Engineer [OP]
      Pharmacie centrale des hopitaux
      a month ago

      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.

    • 1
      Profile picture
      Tech Lead/Manager at Meta, Pinterest, Kosei
      a month ago

      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