Avoid tight coupling to dependencies

Going "all in" on a dependency can buy you great velocity, but at the cost of future flexibility. When evaluating dependencies, consider the tradeoffs of adding a dependency vs. the cost of creating and maintaining that functionality yourself.

Examples

  • You integrate a third-party email service but instead of using the SDK you create simple functions which make fetch requests to their REST API, which allows you to swap out the service easily in the future if your requirements change without needing to update your entire codebase.