JavaScript has come a long way since it was first introduced as a client-side scripting language for the web. With the introduction of Node.js in 2009, JavaScript has become a popular language for server-side programming as well. While JavaScript on the server has come a long way in the last decade, there are still several issues that need to be addressed.

Firstly, the performance of JavaScript on the server can be a concern, especially for applications that require heavy computation. JavaScript is an interpreted language, which means that it can be slower than compiled languages like Java or C++. However, recent advances in just-in-time (JIT) compilation and other optimizations have improved the performance of JavaScript significantly.

Another issue with JavaScript on the server is its asynchronous and event-driven programming model. While this model can provide better performance and scalability for web applications, it can be difficult for developers to understand and maintain. The use of callbacks and promises can lead to callback hell and make code difficult to read and debug. However, the introduction of async/await in ES2017 has made asynchronous programming in JavaScript more manageable and easier to read.

Security is also a concern when it comes to JavaScript on the server. Unlike client-side JavaScript, which is run in a sandboxed environment in the user’s browser, server-side JavaScript has access to sensitive information and resources. Therefore, it is essential to ensure that the code is written securely and to follow best practices to prevent security vulnerabilities.

Lastly, the lack of a strong type system in JavaScript can make it difficult to write large, complex applications. TypeScript, a superset of JavaScript that adds optional static typing and other features, can help alleviate this problem, but it requires additional tooling and learning curve.

In conclusion, JavaScript on the server has come a long way, and its popularity shows no sign of slowing down. However, developers need to be aware of its limitations and challenges, such as performance, asynchronous programming, security, and the lack of a strong type system. With the right tools and best practices, JavaScript can be a powerful language for server-side development.

These are all cursory details of JS using something like Node on the backend. All of which are factually accurate sure, but don’t really tell a complete story. None of these I would list as concerns when starting a new backend project in JS. Things like cohesion, interoperability with the data layer and other services, and real testability are the real struggles with using JS on the backend. These are the things that developers are going to run into. The obstacles that will slow them down, cause errors/bugs, and require a lot more attention than they really need to. What isn’t really possible in JS as a backend server is:

rails new project
rails g scaffold DataType
rails db:migrate
rails server

And that’s gonna cost you and the other developers a lot of time and effort on maintenance and away from your core business logic. Not really a good trade off.