There’s no denying that JavaScript is an excellent language for the web, especially the front-end of any web application. Without it, we can’t enjoy a user experience that challenges native applications.

However, I am not convinced that JavaScript is a language that is suitable for all parts of an application’s stack, all the time. There are benefits to using JavaScript depending on the requirements, but it feels like JavaScript is becoming the go-to language for everything.

Heydon Pickering’s post is an excellent read about this issue and full stack development and how this role is changing with the larger set of JavaScript tools and frameworks available, but it’s his point about separation of concerns that resonated with me:

We need to revisit the separation of concerns principle. We simple can’t afford for people to have to know everything just to do something. It’s good that we conceptualize designs in terms of self-contained components now, but that can be a mental model without being a technology-specific land-grab.

Reluctant Gatekeeping: The Problem With Full Stack by Heydon Pickering

It wasn’t that long ago when front-end developers and designers worked with back-end developers on applications. There was a separation of the two roles and their focus, and each side had the knowledge to carry out their role. Front-end developers would work on HTML, CSS and JavaScript, crafting functional yet beautiful user-interfaces. Back-end developers would work on business logic and background processing.

With the rise of JavaScript though, we’re seeing a convergence of tooling onto a single language, and the roles of front-end, back-end and full stack developers becoming less about knowing the respective field and more about knowing JavaScript.

The new world of web applications is moving to JavaScript, and that’s great for the web as a platform. We can now build applications that rival that of native apps using a single language.

However, when faced with programming language choices in the stack, should developers be quick to default to JavaScript?