The 4 Categories of Frontend JavaScript Projects

I separate JavaScript Projects into 4 categories. It's important for me to remember these categories when learning about projects so that I can optimize my time spent learning, building and tooling with JavaScript. Currently (2017), JavaScript churn is real and it is easy to be overwhelmed. I find that when I break down JavaScript projects into these categories, I'm able to invest my time appropriately and pick tools faster.

The Core 4

  • Plugins
  • Libraries
  • Frameworks
  • Services

Core 4 Definitions

Plugins: are a small usable functions. They should mainly do 1 thing and be usable across a wide spectrum of Frameworks, Libraries, and Services. If I can't make a plugin work within several minutes, then I move on.

Libraries: are groups of utilities. Examples of projects I consider libraries are jQuery and LoDash. Libraries create ways for their users to more easily do things like manipulate html. I find I change Libraries minimally so I tend to go for rock solid products that are stable and well documented.

Frameworks: are projects like Angular, Ember, and React. They establish patterns for writing entire systems of code. Frameworks are the cornerstone of products I build so when choosing a framework I build little apps and think about how that Framework's functionality will apply to the project I will be using it for. I invest a few days into understanding the basics of a Framework to make sure it's the right choice for a product.

Services: are things like compilers, task runners, or bundlers (Webpack or Babel). Services make it easier to build Frameworks, Libraries and Plugins. Services support the other 3 categories of JavaScript projects so time spent working on them is during configuration. I usually spend a few hours configuring Services for projects.

Summary

Separating JavaScript Projects into 4 categories gives my brain a digestible way to approach JavaScript projects. It's very easy to hop on Twitter and read about new awesome things and feel overwhelmed. When binging on new things, it's nice to bucket them into categories to manage time spent learning versus time spent building. 🚀

Update: Every single person that has read this post thinks that I am wrong and has valid strong opinions on why. Feel free to share your thoughts below.