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. …
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. …
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.
When I say “blessed”, I’m referring to two properties that these ecosystems possess:
In essence, the creators of the primary component(s) of these ecosystems have explicitly “blessed” other components as being a good default choice.
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. …