Overall I'm going to say "no". There's no fundamental reason why the front-end should be any more complicated than the back-end. It's all a matter of tools and structuring.
A few caveats however. Modern front-end has to deal with a lot of device compatibility, which is a different requirement than most backend coding has. It requires a different kind of pipeline and a different testing strategy. If you attempt to adapt one workflow to fit both front-and-backend this aspect will become a problem.
The second caveat is perhaps workforce. Front-end has become easy enough that you have a lot of non-programmers contributing there. This is great, but it means you have a higher burden teaching and spreading proper practice on the team.
I think front end development can get away from you easy because you'll usually be working with a framework and your own Javascript code as well as HTML and CSS. The trick is to find some kind of organizational method so that you won't end up in a messy train wreck of code.
The biggest problem I've seen is maintaining good separation of concerns and single responsibility. There is a temptation to move code from the back end to the front end or to blend HTML and Javascript elements that shouldn't be blended. It's easy to fall into this trap with certain frameworks.
I think the hard parts are maintenance, patterns and code organization. On the backend tools are usually better and practices have been established for longer time.
Another issue I have is wading through tools and frameworks. Having a lot of different choices and less experience (talking about me here) means that sometimes I make the wrong choice.
Today for example I rewrote the forms validations in a Vue app because when I started I used the wrong library to help me do that :D
Tomorrow I'm going to dive more into how to lessen code duplication because I have so much of it (in the form of HTML and Javascript) between different sections of the app and I hate that.
So, to answer your question: yes frontend development can be harder than backend development :D
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 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)
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.
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.
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.
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.
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.
No. I think the border might have blurred a little bit, but not having to deal with (too much) server side languages makes quite a difference.
I do think front-end has become 'broader', which is well visible by the popularity of frameworks. They're so popular because structuring our front-end has become more important than ever. With pulling and pushing data from and to different API's and SPA's, having a well thought out structure is essential.
And that's quite a difference with instantly making things happen on screen!
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.
Overall I'm going to say "no". There's no fundamental reason why the front-end should be any more complicated than the back-end. It's all a matter of tools and structuring.
A few caveats however. Modern front-end has to deal with a lot of device compatibility, which is a different requirement than most backend coding has. It requires a different kind of pipeline and a different testing strategy. If you attempt to adapt one workflow to fit both front-and-backend this aspect will become a problem.
The second caveat is perhaps workforce. Front-end has become easy enough that you have a lot of non-programmers contributing there. This is great, but it means you have a higher burden teaching and spreading proper practice on the team.
Maybe.
I think front end development can get away from you easy because you'll usually be working with a framework and your own Javascript code as well as HTML and CSS. The trick is to find some kind of organizational method so that you won't end up in a messy train wreck of code.
The biggest problem I've seen is maintaining good separation of concerns and single responsibility. There is a temptation to move code from the back end to the front end or to blend HTML and Javascript elements that shouldn't be blended. It's easy to fall into this trap with certain frameworks.
I think the hard parts are maintenance, patterns and code organization. On the backend tools are usually better and practices have been established for longer time.
Another issue I have is wading through tools and frameworks. Having a lot of different choices and less experience (talking about me here) means that sometimes I make the wrong choice.
Today for example I rewrote the forms validations in a Vue app because when I started I used the wrong library to help me do that :D
Tomorrow I'm going to dive more into how to lessen code duplication because I have so much of it (in the form of HTML and Javascript) between different sections of the app and I hate that.
So, to answer your question: yes frontend development can be harder than backend development :D
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 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)
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.
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.
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.
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.
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.
No. I think the border might have blurred a little bit, but not having to deal with (too much) server side languages makes quite a difference.
I do think front-end has become 'broader', which is well visible by the popularity of frameworks. They're so popular because structuring our front-end has become more important than ever. With pulling and pushing data from and to different API's and SPA's, having a well thought out structure is essential.
And that's quite a difference with instantly making things happen on screen!
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. :)
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.