I think the main issue is that Frontend is much more time consuming than backend.
By contrast, backend can seem much more organized and structured. Features, as well as bugs, can be resolved much quicker due to a proven system that's been around for a while.
Meanwhile the Frontend has to constantly keep up with changes and iterations on the UI and UX, worry about structure and styling, logic that ensure a smooth user experience but can give way to buggy scenarios in different browsers and devices.
In the end it's not a matter of which is easier or harder. To me Frontend seems easy compared to Backend, but to a veteran Backend developer the Frontend can be very difficult because they lack an attention to detail, an appreciation for asthetics, or the patience to obsess over every single pixel on screen.
Yes, a front end dev needs to focus much more on structuring the event-driven data or "real-time recording". The backend dev will take that JSON and build SQL queries or feed it into memory, which they can take their time for the most part, unless it is an API or something. Building data relationships within a browser is super tricky and deals a lot with immutability and templating view plus middleware type development.
A front end dev needs to know design patterns and follow them to a tee or their project could go up in smokes. React itself has Shards, PureComponents, HOC's, or building a ComponentFactory. I mean you can say that backend could be harder but after wrestling with React and libraries like Redux, I quickly realized that Front end devs are not just playing around with for loops to make scrolling menus. Front end devs are the new Mad Scientists.
The nature of the challenges in backend and frontend development are different to an extend that the measurement of the level of difficulty one might come up with become rather pointless.
The expectations on the user interfaces of many products have undeniably grown a lot. I find it very interesting to notice, that web frontend development seems to be used synonymously with frontend development per se, ignoring the applications with user interfaces for desktop and native mobile devices.
A lot of user interfaces in enterprise systems still are little more than glorified database table editors. Thinking about the non technical human being that ends up actually editing those tables (aka the user) is a task which has been and partly still is neglected. And in many cases only for the reason, that it is easier for a developer to coerce their users to satisfy the applications needs (as perceived from the devs point of view). Now, it has been and still is more than overdue, for this to change on a broad scale, for that kind of design is very much the proverbial tail wagging the dog.
To conclude with regard to the original questing, I think frontend development has simply emancipated from being a negligible by-product of a system to be an engineering subdiscipline in its own right, which comes with hard problems to solve and a technological ecosystem which is adjusting to that.
Bachelor's and Master's in CS from MIT. Previously, worked @ Microsoft & Zynga. Currently Co-Founder of Moesif (moesif.com), the most advanced API analytics platform.
If you are building a website that are mostly on complex user interactions, the front end will be more difficult. Especially if you use one of the BaaS platforms that takes care some of the logistics for you. (until perhaps you are getting so many users that you really need to figure how to scale, try to fix the architectural problems).
But if you are more hardcore tech product, say a big data system that need to process tons of data, but don't have much UI. Then backend is much harder.
I think some of today's difficulties in the area are
the introduction of too much unnecessary complexity (Extreme example: React.js for a Blog) due to hype
too much new stuff coming out (JS-Fatigue)
people without formal software-engineering-training struggling to adopt to the increased requirements for their jobs
Personally I don't feel like I'm struggling to keep up, but as a designer turned developer around 2011, I'm pretty sure I'd have a much harder time getting into the field today.
(Which is sad, I think a frontend-dev needs strong design/typography-skills)
Frontend development, as a standalone, takes the larger chunk of the time and even mental effort.
Visually, the small things take a lot of time to get right with minimal CSS.
Handling state in a large application is its own mountain of code in many instances.
Then, there's the User Experience part that demands offline caching, graceful recoveries, persisting data on the client without compromising security, code splitting, server rendering, to mention a few.
But as has been said, developing org level standards or 'templates' for doing things significantly reduced the engineering involved for everyone.
Totally. Most backend hard parts are already solved, you can pick the exact versions of everything your app is going to use (any dependency, framework, etc.) and even the hardware to be sure your app runs as expected, and you can even use backend as a service to avoid backend code.
Meanwhile, in the Frontend Web Application (not simple websites) world you need to learn three languages, most probably a framework or ecosystem of tools, you don't know where your app is going to run, it can be latest Chrome, two versions old iOS Safari in a tiny phone or whatever. You know nothing about the hardware, still your app is expected to work fine.
And never forget your UI should be unique so except for prototypes or internal tools you will need to do a lot of custom work all the time.
And don't forget Frontend can be desktop, mobile, etc. basically any client-side app is Frontend so you can know about Web Frontend, Desktop Frontend or Mobile Frontend, each one with it's own specific knowledge.
I think it certainly depends on what are your expectations for Frontend development.
Has creating presentation websites become more difficult ? Definitely no, it's still easy to create css only websites, or to just add sass. You won't need complex JavaScript interactions and with modern JS you can even get around using jQuery even.
Regarding SPA's, I'd say it depends. Definitely the learning curve for modern SPA's is high, but long term maintainability of your code is going to be easier once you understand the ecosystem.
Latest comments (15)
I think the main issue is that Frontend is much more time consuming than backend.
By contrast, backend can seem much more organized and structured. Features, as well as bugs, can be resolved much quicker due to a proven system that's been around for a while.
Meanwhile the Frontend has to constantly keep up with changes and iterations on the UI and UX, worry about structure and styling, logic that ensure a smooth user experience but can give way to buggy scenarios in different browsers and devices.
In the end it's not a matter of which is easier or harder. To me Frontend seems easy compared to Backend, but to a veteran Backend developer the Frontend can be very difficult because they lack an attention to detail, an appreciation for asthetics, or the patience to obsess over every single pixel on screen.
Yes, a front end dev needs to focus much more on structuring the event-driven data or "real-time recording". The backend dev will take that JSON and build SQL queries or feed it into memory, which they can take their time for the most part, unless it is an API or something. Building data relationships within a browser is super tricky and deals a lot with immutability and templating view plus middleware type development.
A front end dev needs to know design patterns and follow them to a tee or their project could go up in smokes. React itself has Shards, PureComponents, HOC's, or building a ComponentFactory. I mean you can say that backend could be harder but after wrestling with React and libraries like Redux, I quickly realized that Front end devs are not just playing around with for loops to make scrolling menus. Front end devs are the new Mad Scientists.
Apples to Oranges. But in this case we're talking about unripe fruit. They're both hard when first picked and take forever to ripen.
The nature of the challenges in backend and frontend development are different to an extend that the measurement of the level of difficulty one might come up with become rather pointless.
The expectations on the user interfaces of many products have undeniably grown a lot. I find it very interesting to notice, that web frontend development seems to be used synonymously with frontend development per se, ignoring the applications with user interfaces for desktop and native mobile devices.
You might have stumbled across this cartoon (at least six years old, but still very much to the point): usabilitycounts.com/2012/01/31/sim...
A lot of user interfaces in enterprise systems still are little more than glorified database table editors. Thinking about the non technical human being that ends up actually editing those tables (aka the user) is a task which has been and partly still is neglected. And in many cases only for the reason, that it is easier for a developer to coerce their users to satisfy the applications needs (as perceived from the devs point of view). Now, it has been and still is more than overdue, for this to change on a broad scale, for that kind of design is very much the proverbial tail wagging the dog.
To conclude with regard to the original questing, I think frontend development has simply emancipated from being a negligible by-product of a system to be an engineering subdiscipline in its own right, which comes with hard problems to solve and a technological ecosystem which is adjusting to that.
Mainly because of css and responsive design.
They are sitebuilders. :)
I think totally depends on your Application.
If you are building a website that are mostly on complex user interactions, the front end will be more difficult. Especially if you use one of the BaaS platforms that takes care some of the logistics for you. (until perhaps you are getting so many users that you really need to figure how to scale, try to fix the architectural problems).
But if you are more hardcore tech product, say a big data system that need to process tons of data, but don't have much UI. Then backend is much harder.
I think some of today's difficulties in the area are
Personally I don't feel like I'm struggling to keep up, but as a designer turned developer around 2011, I'm pretty sure I'd have a much harder time getting into the field today.
(Which is sad, I think a frontend-dev needs strong design/typography-skills)
Frontend development, as a standalone, takes the larger chunk of the time and even mental effort.
Visually, the small things take a lot of time to get right with minimal CSS.
Handling state in a large application is its own mountain of code in many instances.
Then, there's the User Experience part that demands offline caching, graceful recoveries, persisting data on the client without compromising security, code splitting, server rendering, to mention a few.
But as has been said, developing org level standards or 'templates' for doing things significantly reduced the engineering involved for everyone.
Totally. Most backend hard parts are already solved, you can pick the exact versions of everything your app is going to use (any dependency, framework, etc.) and even the hardware to be sure your app runs as expected, and you can even use backend as a service to avoid backend code.
Meanwhile, in the Frontend Web Application (not simple websites) world you need to learn three languages, most probably a framework or ecosystem of tools, you don't know where your app is going to run, it can be latest Chrome, two versions old iOS Safari in a tiny phone or whatever. You know nothing about the hardware, still your app is expected to work fine.
And never forget your UI should be unique so except for prototypes or internal tools you will need to do a lot of custom work all the time.
And don't forget Frontend can be desktop, mobile, etc. basically any client-side app is Frontend so you can know about Web Frontend, Desktop Frontend or Mobile Frontend, each one with it's own specific knowledge.
I think it certainly depends on what are your expectations for Frontend development.
Has creating presentation websites become more difficult ? Definitely no, it's still easy to create css only websites, or to just add sass. You won't need complex JavaScript interactions and with modern JS you can even get around using jQuery even.
Regarding SPA's, I'd say it depends. Definitely the learning curve for modern SPA's is high, but long term maintainability of your code is going to be easier once you understand the ecosystem.