While the pros of learning front end development out-weight the cons (in my opinion), there are still some very real cons to front end development. These may mean that front end development is not for you.
Here are some of the cons:
- Design skills are encouraged
- Tons of things to learn
- Solid front end development is extremely difficult.
And here they are in more detail.
Design skills are encouraged
I would consider this a very minor con... depending on the job. However some people may actually consider it a positive thing. It depends on what you're into.
Some jobs require a mixture between design skills and development skills, however many jobs only require development skills without any design.
Nevertheless, a "design eye" can be very helpful. Designers are not developers, therefore some of the designs they give you may be difficult and / or not worth implementing because of how long they would take.
I.e. it may take multiple weeks to implement something, and the product manager may not be happy with that.
If communication in your job between the product manager and designers is nice and quick, it's not a problem. You can give feedback quickly and the designers can tweak the design if needed.
However if communication is very slow, it may fall on you to tweak the design and code something feasible in the allocated time.
Tons of things to learn
Learning for front end never stops, and as a beginner you'll probably be playing "catch-up" for multiple years.
There is far too much to learn.
- Webpack / other module bundlers
- Stylelint (CSS linting)
- Frameworks and other technologies:
- React / Vue / Angular / Svelte / tons of others
- Redux / MobX
- TypeScript / Flow
- Web APIs
- Node (basics)
- Tons of NPM packages for various things
- Security & authentication
- Cross-browser development
- Basics of HTTP
- Browser basics
- Server-side rendering and pre-rendering
General software engineering knowledge:
- Integration testing
- End to end testing
- Design patterns
- Functional programming
- Object oriented programming
- Multi-threading (e.g. web workers and such)
- Databases (e.g. IndexedDB)
The reason for all this stuff is because with modern web applications a lot of what was traditionally back end work is appearing in front end, along with everything else that is exclusively front end.
The good news is that you don't have to learn everything before you start developing something. You can start with very little. All the rest can be considered enhancements rather than requirements.
Nevertheless, you'll be playing catch-up for a while.
Solid front end development is very difficult
I'm not saying it's more difficult than other types of programming, just that it's very difficult.
- Every website / applications is unique.
- Constantly changing design.
- Accessibility needs to be considered from day 1.
- CSS is very quirky and counter-intuitive. Sometimes it's very difficult getting the styling you want.
The good news is that it's not necessarily harder than any other type of programming, there are just different problems. However, opinions on this may vary.
These were some of the cons to front end development.
If I missed any please comment about them below.
This is a series of posts on whether or not you should learn front end development