Image for post
Image for post
A good wrapper hides the tastiest implementation details

How Wrapping Your Dependencies Will Save You From Future Suffering

A few months back, I was talking with one of the other developers on our team and somehow we got onto the topic of what I thought my biggest learning in the past couple years was at our company. I’d been working as a software developer for the past 6 years and at Resource for just over 2 years.

“Wrap your dependencies,” I told my coworker with the sort of gaunt stare you expect to see from a grizzled war veteran.

Despite the fact that I’ve been writing software for over half a decade, I didn’t learn this lesson until more recently. Prior to working at Resource, I worked at a company doing full stack work with Vue.js on the frontend and a Django backend. During my time there, I primarily dealt with dependencies from PyPI and occasionally dealt with the npm ecosystem for adding a component library or a small utility library. This all changed once I started working at Resource. When I initially joined, the code base was written using MeteorJS. Shortly after I began, we migrated to a React/Node stack. It didn’t take long for me to realize that a lot of what I’d been told by friends and colleagues about the quality of npm packages was true: a lot of packages are just shit. …

Image for post
Image for post
= potential pitfall

Hand-holding Honeymoon

The first time I used Netlify to deploy a single page app, I was pleasantly surprised. Before then, I’d usually used Heroku to deploy applications, which meant serving my index.html file from Heroku, and configuring my Heroku build process to upload my compiled assets to a CDN. …

Image for post
Image for post
Not that sort of blessed.

Throughout my time as a software developer, I’ve noticed a pattern with the language and framework ecosystems that I tend to enjoy working with most; they generally operate as “blessed” ecosystems.

What is Blessed?

When I say “blessed”, I’m referring to two properties that these ecosystems possess:

  • The components are explicitly designed to work together.
  • The components are designed so that they can be swapped out for alternatives.

In essence, the creators of the primary component(s) of these ecosystems have explicitly “blessed” other components as being a good default choice.

Examples of Blessed Ecosystems

My favorite example of a blessed ecosystem is the Django Project. The project consists of a web framework that is meant to handle everything, including: database access, templating, authentication, and administrative tools. And while many of the components you need to build a web application are “batteries included”, you can often swap them out if they aren’t suiting your needs. …


James Pulec

Early Stage Engineer. Free Thinker. Beer Drinker.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store