Which Web Developer role or Stack is higher in demand, Front-End, Back-End or Full-Stack? Why?
This question intrigues me since I've believed that back-end has always had a higher barrier to entry to the mathematics behind it, and front-end being for those who have a knack for design, making front-end usually more popular, however, with varying responses on the internet I'm slightly confused. Any professional input to clear the confusion regarding this would be appreciated. #technology #career #web-development #computer #computer-science
Instead, I'd recommend that you try out a lot of different things, and see what you actually enjoy. There is a fair range of different sorts of frontend jobs, and a _huge_ amount of variation in backend! Some backend roles do require a lot of mathematics -- if you're building a distributed database from scratch or handling extremely high volumes of traffic, for example, some mathematical background is going to be very helpful. Others really don't! If you're designing service architectures and APIs for services that only see modest traffic, or integrating existing services and products to work together, for example, you'll do fine with arithmetic and maybe a little basic algebra.
The experience of working on all these things can be very different, so try as many different things as you can and see what you like. If you find something you really enjoy doing, you'll probably learn it better and faster, and that enthusiasm will come through as you're interviewing, too. Plus, you'll have a job doing something you enjoy!
I'm going to directly answer some of the questions & assumptions you have in your question and then answer generally with some advice.
"I've believed that back-end has always had a higher barrier to entry to the mathematics behind it"
In my experience, the barrier to entry for frontend development is lower than backend. There's a bunch of reasons why this is but I won't go into that in my first take at answering your question. I believe full-stack development is a similar or higher barrier to entry because it requires working knowledge of both backend and frontend.
Since the barrier to entry for frontend development is lower there are more folks competing for those entry-level frontend development positions at companies.
As I have experienced in my career, learning programming in any domain (backend development, frontend development, data layer, etc) is helpful.
I'd suggest start where you are comfortable and eager to learn and go from there. Starting in one area (ex: frontend) doesn't block you from learning another area of the stack (backend or data).
Honestly, I think it's valuable for most working professionals to have a foundational understanding of programming. I know folks that aren't "professional programmers" that use their knowledge of programming to help enhance their day-to-day jobs (ex: gathering and summarizing data for a report or creating prototypes to enhance a workflow or aspect of their job.
Here's a few, free, high-quality resources if you're looking for learning some foundations:
- Frontend foundations I'd recommend Khan Academy's Intro to HTML/CSS (https://www.khanacademy.org/computing/computer-programming/html-css).
- Programming foundations I'd recommend Khan Academy's Intro to JS: Drawing & Animation (https://www.khanacademy.org/computing/computer-programming/programming). This is a good first step for backend development and introduction to programming in general.
Feel free to ask any followup questions. Best wishes on your programming journey Aun!
Everyone's answers so far have been spot on so there isn't much to add on that front.
I would like to add that when getting into the field theres I also was worried that I might be learning something that isn't relevant or won't be in demand. One resource I found helpful was taking a look at the Stack Overflow Developer Survey, they do it every year and it can be a good snapshot of what Software Engineering looks like right now.
It may be information overload but I think there is a lot of great information around what technologies are currently being used, and what being a developer looks like today.
It's a common misconception to think that only front-end engineers need to think about the usability of the things they build. It should be at the forefront of your mind even as back-end engineer. Working on the backend, you'll be building APIs that others consume. APIs have ergonomic characteristics, much in the same way that a UI does. Equally so even if for classes that you write that other programmers will have to interact with.
My advice is to start with whatever you enjoy the most. Learn it deeply, and know that if you later need to work on a different section of the stack you'll discover that most of the same principles apply.
On the front end React based solutions are very popular.
In the past - for mobile development - you would dedicate your self to a single platform (Apple/Android) - and become an expert at the native tools.
Now their are "combined" frameworks, like Flutter - that allow you to develop for multiple platforms at once.
On the back end Node JS is seeing a resurgence.
It also is helpful to have a sound understanding of back-end databases SQL, MySQL are core - and an understanding of how to structure them and distribute them for high availability.
However - specific technology knowledge is secondary - you need to be able to analyze and solve problems - understand root causes and create clean, modular, re-usable code in any area. That is priceless.
Full Stack is good for people who need fast prototypes, proof of concepts, demonstrate ideas. In the case of the Boot Camp, four students work together to develop a quick 6-month prototype.
Front-end is good for people who are designers, graphic artists, and people good at "User Experience". In larger efforts, there are often tams that focus on the front-end.
Back-end is good for people who are focused on performance and efficiency, high availability, resiliency, compliance with government regulations and so on. This is a behind-the-scenes job that does not involve working with end-users and is more focused on understanding the underlying technologies of the hardware and systems platforms.
Plenty of jobs in all of these area, but different personalities will prevail in different areas.
For example platform work gets you experienced with particular frameworks and that depth is something you may not see as much with backend development.
You truly state that for becoming a front end engineer, you should have an aptitude of aesthetics part of things and have a little bit artistic approach, but on the top of that you should have a good hands-on knowledge of UI stack.
UI engineer some time plays are a very vital role in an organization as they get a chance to kick off new products from - concept to marketing to Development skeleton to actual product. They often work closely with - product team and have very good cross-team visibility, which you often missed with back-end roles.
But again, as a backend engineer, you develop the soul of the product. You are someone who gives life to the product.
You write very complex, highly optimized solution to the problem. You may or may not get much publicity, unlike the UI engineer. Often you stick with your own product. But once you grow and become more senior you can give cross-product consultancy.
What I believe backend engineer needs little more on the technical, mathematical than the UI side.
Overall both are very exciting areas of work.