MEAN stands for…

MongoDB, Express.js, Angular, and Node.js — a complete stack for building a web application in Javascript. And the MERN stack is the same thing, but with React instead of Angular.

But what if you use a relational database instead of MongoDB? Or Hapi or Koa instead of Express? Or Backbone or Vue on the Frontend? Those acronyms certainly don’t roll off the tongue.

If the above sounds silly, it is. A little bit, anyway. But now that I’ve got your attention, I’d like to make the following observations:

  1. Software stacks are only top level descriptors of the technologies involved. Are you using anything else, like Redux? Sockets? Mongoose?I’ve used some of these technologies in critical parts of my applications, but you wouldn’t know it from a simple acronym.
  2. Technology stacks are not discrete, indivisible units of software. They are combinations of individual frameworks, each of which has alternatives (and Javascript in particular has a lot of frameworks). You can add things, take things out, or substitute things depending on the context. There is great freedom in this.
  3. The big draw of the tech stacks I’ve discussed is that you can write whole applications, end-to-end, in Javascipt. This is empowering, particularly if you’re developing something from scratch solo, or as part of a small team. But you don’t always have this freedom of action. You may be working with established/legacy codebases, or Javascript may not be the right tool for the job.

These points are in part a caution to the novice Javascript and/or web developer, and to nontechnical folks who deal with software — don’t get too wrapped up in acronyms. However, the unconscious use of these terms poses a subtle conceptual danger, even for experienced developers; it may curtail thought about the technological choices and possibilities that underlie these software stacks. Perhaps I’m not giving people enough credit.

Anyway, I realize it’s been a while since I’ve posted anything. I’m job searching, and that has to take priority. I am working on a post about the renewed life of standalone, ‘native’ desktop applications, and what this revival can tell us about the lifecycle of technologies. That post is taking me a lot longer than I thought.