Even if you remain a front end developer, it helps to learn some server side language and concepts. The API's you will build will need to connect with a server with AJAX and such. So you need to understand REST, have a clue about HTTP, vulnerabilities and such. Even if you will not be an expert on the backend, is important to have an understanding of it. It will make you a better front end dev. When you develop an app, you will need a common language with the team that builds the backend API's. At least, you need to be able to catch the obvious mistakes. The easiest is to learn something like PHP. Knowing javascript, you may be tempted to think that node is a better choice, but it helps if you learn PHP because is so much similar with Java, and on the long run, most meaningful books will assume you know some Java. And if you know PHP, you will understand enough Java to understand those books, but without actually learning any Java. You could go for Java directly... but it is a bit more complex. If you are to expand your knowledge, it is better to choose the easiest thing you can learn, but the thing that will give the greatest benefit on the long run. I excluded Python because it is strange compared with all the other languages, tabs are part of syntax and it can make it really hard to adjust coming from Javascript. But Python or Ruby would also be great choices. I would still go for PHP.
When u do more work,u can find your work environment is too slow and so ugly. So u want change it, so u start learn ReactJs or Angular , so u start config your work desktop, like vim, like webpack , like gulp or grunt , when servers config so trouble, u start learn docker, git , even Jenkins .
So this is a crossroad right? A lot could be said about this but the truth is the following. On the one hand front end is a beast whose evolution is lightning fast. It is really hard to master all these techniques, concepts, frameworks, new JS syntax and standards, web components and it goes on and on.
On the other hand it is extremely important if you can understand fast and accurately what the rest of the team needs from you. I mean do you know what a RESTful API is or what are the most important HTTP response status codes apart from 404 or 500? What it is CORS or maybe how you can update your views using sockets and asynchronous events? All these demand the cooperation of the 2 worlds, backend and front end. That kind of knowledge doesn't make you a full stack developer but it does make you a better / stronger team member and more efficient front end developer of course. Great projects depend on great teams, that's certain.
I 've met some great developers and i could barely cooperate with them because of their arrogance and their stupidity. You know sth like i have some years experience with RoR or Django so you should find a way to work with whatever i am sending with the API endpoints i create. No this attitude is awful. We are engineers, smarter by far to end up like this right?
To be honest i am extremely confident in doing front end job because of my experience with backend etc. I have created so many APIs so now i know exactly what my views need or how we could make sth better / faster etc. This knowledge is so important for my team's decisions and cooperation. It really helps a lot.
What i recommend then? Study hard JS since you want to make a living out of it but you should definitely get your hands dirty with backend coding to understand even better how some things work. Create a small Blog or a Portfolio and force yourself to write down a small API. There are so many great tools out there for every language like RoR, Django and Laravel. Just go for it!!
It really matters what you want to achieve and what you want to become. Front End development can be summarized as a combination of several technologies - HTML5, CSS3, JavaScript/ECMAScript 6, and Responsive Design Practices.
The first question you should ask yourself is "What do I really like to do"? Do you like working with JavaScript frameworks like ReactJS, Angular, Vue.js? Do you love crafting advanced user interfaces using different UX techniques? Do things like web performance, accessibility matter to you? Do the new CSS specs excite you? Do you hate it when you see a sloppy CSS animation?
If most of your answers are yes, then stick to front-end development and do continue learning it.
The other path you can take is the "Full-Stack Developer". It's a much broader, and in some parts more difficult than Front-End development. Technologies like Node.js, Electron and React Native narrow the differences between front-end, back-end, mobile, and desktop developers, but there are still major differences between the technologies used. Full stack developers can work on the whole system without additional supervision, meaning your tasks and problems will be a bit more challenging and diverse. Another important thing is that the information you need to consume is much larger.
So, to summarize everything I said - look for what you love to do and use; and start/continue doing it!
Well, if you're not planning on getting into full stack dev or getting closer to be one then there's no point in getting into back-end instead of improving yourself on the front end side.
J
Thing do'er
To be short and sweet: You should focus on what's best for your clients. No client will ever say to you "Oh that react app is much cooler than that Vue.js app, thank you for choosing that!" simply because all they want is a working product.
You should focus on what you do best for your clients, and on the side learn stuff to stay up-to-date in your field. With focus comes quality, otherwise you might risk ending up as a jack of all trades, master of nothing.
After 13 years I still know nothing about 'backend stuff', simply because it's not my thing. I can't get my head around a huge code base and are much stronger on the visual side of things so that's my jam and I utilize the skills of other people to create the things envisioned by my clients.