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
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 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.
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.
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 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)
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.
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.
Oldest comments (15)
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
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 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.
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.
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 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 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.
Mainly because of css and responsive design.
They are sitebuilders. :)
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.