A user made a topic recently asking about whether they should focus more on frontend or backend development. It turns out that this user was actually a spammer that created multiple accounts so we deleted and blocked all their accounts. Since we had to delete all their posts in order to do this, we are moving the replies to this new topic instead. Feel free to continue the discussion here
Front end, creative user facing. Very people focused and a deep understanding of user interaction and feedback collection, support etc.
BackEnd - Generally more maths and fine tuning of algorithms etc. The engine in the car that nobody sees but everyone needs.
This only applies to very large projects really and generally of backend libraries exist you would jump on them and use them. So for us we have a ton of backend work to do. It is hard and very much less in the face of people. Generally front and backend will be the same thing. You just grab a human interface library (CLI or GUI etc.) and code behind that to provide your “backend” and code up the user interface and UX in general.
So if you are fascinated by how computers work in detail (cpu, memory etc.) as well as algorithms such as AI, Networking, Cryptography etc. and cannot create beauty for typical people to interface with then you are more backend.
If you want to just grab what is available and use that in very creative ways to provide functionality that is useable by typical people then frontend is for you.
Backend is slower to develop and can be thankless really with no real obvious output. Frontend is faster, more creative and easier to prototype and let folk test out.
Both are as important as the other though and few can work on both sides or want to. I think ideally you want to do both for at least a while and see how you go.
I’d add, I agree that in many areas (SAFE certainly) front and backend will tend to merge although they will be separate for most applications/employment opportunities for some time to come and there will always be some of that.
So I don’t think you need worry from a career opportunity point of view. I always found the most important factor was what interested me. The motivation that provides always overcame the difficulty of any direction it took me, and made sure I’ve always enjoyed my work. Whenever that stopped I just went elsewhere (only happened a couple of times in my career).
Many of the skills you learn in either area will be transferable, not so much the tools (languages and libraries) but how to think, understand a problem, imagine and test out ideas, how to design, structure and manage code etc. And most of all how to teach yourself when you enter an area you don’t understand, and how to solve problems.
So I suggest you start with some simple ideas, see what interests you, try things out, go with the flow and don’t choose to soon unless the feeling is strong. Enjoy your explorations! I’m still doing that after fifty years of tinkering and building, and I never had a clear idea of what area I ‘should’ work in.
Good luck and feel free to ask more questions.
I’d add a comment perhaps from a different angle to the traditional definition of FE vs BE, but which I think is important as a skill to develop.
For everything you develop/create there will be a user, different type of users depending of what you are creating. Let’s say you are creating just a
Class in an object oriented programming language, there will be a developer using that class and its methods, this user could be even you if it’s an internal/private class, or any other developer helping in the development of the software, or perhaps any developer if this Class is part of an SDK you would be making available, in any case, the experience for those users when trying to instantiate your Class and call its methods needs to be good, just as good as the experience the end user should have several layers up in your software stack. I think many engineers/developers think this is not the case and you end up with code which is really hard and error prone to maintain.
So my point is, it doesn’t matter if your are creating software on a BE, FE, a bit here or a bit there, one important thing is you need to think in terms of the user of the component you are creating, and to be able to do a good job, you’ll need to develop the same skill you’d need to for creating a GUI.