DEV Community

Christian Heilmann
Christian Heilmann

Posted on • Originally published at christianheilmann.com

The ongoing defence of frontend as a full-time job

I am currently looking for a new job. One thing that keeps happening is that people get my CV, are impressed but then ask me that I seem to be focused on the front end a lot and what my experiences with backend and full stack development are. It seems to me that we've come full circle back to when I started as a web developer and had to sell and explain the notion of a front end expert as a real, full-time job, 21 years ago:

Article explaining what a front end developer does, written in 2002

Here's the deal: a frontend developer isn't a mediocre coder that only dabbles in "easy" languages like HTML, CSS and JavaScript. A frontend developer is someone who made a conscious choice to build interfaces for the unknown with a laser sharp focus on the end user's experience.

Jennifer Lawrence as the shapeshifter mystique in X-Men first class, originally saying 'Mutant and proud' in a mocking manner, here with the caption 'frontend and proud?'

The web isn't just another compilation target. It's a platform that allows the user full control over the look and feel. It's also the only platform resilient enough to weather any change you throw at it. The web works on desktop, android and iOS. And it can do that with one codebase. If you have dedicated developers who know what they are doing and don't just expect to find a plugin or extension that will magically make your product accessible to all and perform well.

Here's the not so dirty secret: no matter what platform you choose, what language you write your code in or what framework or library you use - the final thing that arrives on your web users devices is HTML, CSS and JavaScript.

Each (with HTML to a small degree) can cause performance problems, cross-browser functionality issues and become a barrier for users on sub-par connections and platforms or with different abilities. Slow performance is known to lose you end users and being inaccessible is a legal and compliance issue that can get you sued.

I've worked on the biggest web sites on this web (yahoo.com, bing, Microsoft…) and on the Firefox and Microsoft Edge (Chromium) browser. Browser makers want one thing: not being blamed for being slow or showing things "wrong". So we work with lots of internal and external partners to see why their products are misbehaving. This could be extension providers, framework creators or development teams. In these "performance clubs" both in Mozilla and Microsoft we kept running into the same issue: web products with tons of senseless HTML, mostly unused CSS and an absolute avalanche of JavaScript sent to the end users with no benefit to them. All the benefits were for the convenience of the developers and the flexibility to build whatever with a framework that promised optimised output.

The move to full stack development caused us to build a bloated web that loses you customers and costs you a lot of traffic that simply isn't necessary.

There is of course another reason why our web products don't deliver: componentisation without big picture planning.

Web products these days aren't build as documents, sites or even includes. They are built as independent components, each flexible enough to be applicable in many different contexts. That's grand, until people assemble them nilly-willy and as many as they want to. At times we found 20 different, highly customisable button components that did the same thing.

Here's where a frontend developer would smell that something is amiss immediately and could trace the waste.

Frontend developers are:

  • Browser performance experts
  • Cross platform development experts
  • Accessibility experts
  • Compliance knowledgeable
  • Design and Test department connected
  • Fiercely dedicated to the end user

We truly are the shape shifters of the market. So to say that someone who is "just" a frontend developer isn't flexible enough means first and foremost that most people still don't know all the things this job requires.

The argument that CSS and client side JavaScript isn't real coding is nonsense, too. It's especially ironic that people who claim that also don't want to touch CSS as it is "too hard and strange". CSS isn't about colours and padding any more, with grid, subgrid and flexbox it's a fully fledged layout system. And it does animation and responsive rendering. With media and container queries you have amazing flexibility and with cascade layers you even have control over how browsers should composite the current design.

It is your choice. You can hire frontend developers to build your product, or make it happen somehow and later on hire performance and accessibility consultants to fix what doesn’t work properly. Bear in mind though that the further down the production you are, the harder it will get to optimise and fix a product as you will also clash with new feature work.

When people ask me why I am “just doing frontend”, I can happily explain these things and proclaim that I am proud to be a frontend engineer.

Jennifer Lawrence as the shapeshifter mystique in X-Men first class, originally saying 'Mutant and proud' here with the caption 'frontend and proud!'

The defence RESTs, POSTs and GETs your feedback.

Addendum: This is also applicable to all the other jobs we have in the market. A good database engineer can save you seconds of loading time, a great cloud engineer can lower your bills and a great backend engineer make sure your servers only do the job they should and not run optimisation pipelines for a huge pile of unused frontend code. And with all the big players right now trying desperately and shortsightedly to please stockholders in times of inflation by laying people off rightsizing, the market is awash with talent. And maybe you can afford three experts for the price of one 10x full stack ninja rockstar who lives in a city where 80% of their income is their rent.

Top comments (41)

Collapse
 
syeo66 profile image
Red Ochsenbein (he/him)

Ironically I had multiple occurrences of backend devs more or less just slapping a REST interface on top of the database (hey, newsflash, there are databases that can do that for you already) and let "the frontend figure it out".

Collapse
 
sgpinkus profile image
sgpinkus

there are databases that can do that for you already

Like which? Are you thinking about GraphQL here?

Collapse
 
keiver profile image
Keiver

Great read

Collapse
 
syndrom95 profile image
Ismet Bibic

I believe you can't be considered a good frontend developer if you didn't have experience with the backend development. I'm not saying that has to be experience with writing code, but understanding of various high level concepts is needed. Let's face it, most work where frontend developer is needed is building application interfaces. A developer who doesn't understand relational databases, orm, erd, web protocols, network requests, etc. wouldn't be able to debug his own code. You need the experience so you're not a weight holding back your team and to build interfaces on a solid foundation.
That's just my opinion, I don't disagree with your points.

Collapse
 
codepo8 profile image
Christian Heilmann

A developer who doesn't understand relational databases, orm, erd, web protocols, network requests, etc. wouldn't be able to debug his own code.

Can you enlighten me how that relates to the frontend? I mean, sure, REST basics and being able to use the Network tool in the browser is a mist, but orm, erd, databases?

Collapse
 
syndrom95 profile image
Ismet Bibic

Yeah, enlighten a messiah so he can tell me I'm wrong ? Sure, let me give it a try.

Understanding ORM, ERD, and relational databases concepts can be beneficial for frontend developers:

Efficient Collaboration: A frontend developer who understands ORM, ERD, and relational databases can communicate effectively with backend developers.

Seamless Integration: With knowledge of relational databases and ERD, frontend developers can design their application's UI to seamlessly integrate with the backend. They can ensure that UI components align with the schema and properly display and interact with the data. ERDs act as a common language for communication between frontend developers, backend developers, and database administrators. They provide a clear overview of the database structure, facilitating collaboration and ensuring everyone involved understands the data model.

Object-Oriented Approach: With ORM understanding, database tables and records can be mapped to object-oriented models and classes. This enables developers to work with data in a familiar object-oriented manner, making it easier to manipulate and use data in frontend applications. This helps ensure the integrity of data in the database, reducing the chance of errors or inconsistencies in the frontend application.

Data Modeling: ERD helps in visualizing the relationships between different entities in a system. By grasping this concept, frontend developers can actively participate in the data modeling process. They can contribute to defining relationships, constraints, and data types, leading to a well-structured and efficient design. This understanding helps frontend developers design API requests and handle the responses efficiently, ensuring they can retrieve the required data without making excessive requests or fetching unnecessary data.

Debugging and Troubleshooting: When frontend developers encounter issues related to data retrieval or manipulation, having a good understanding of relational databases allows them to diagnose and troubleshoot problems more effectively.

Scalability and Performance: By understanding how ORM interacts with the underlying database, frontend developers can make informed decisions when it comes to application scalability and performance. They can design UI components and API requests that align with retreival of data efficiently, ultimately improving the performance of the application.

Now you can tell me why I'm wrong and how writing pretty and semantic HTML is all that the frontend developer needs to know.

Thread Thread
 
codepo8 profile image
Christian Heilmann

All these are for sure beneficial, but to me more the job of the development lead rather than the individual developers. So, you are right, but you'll need a frontend dev with a lot of time on their hands to also deep dive on that. Where you are absolutely correct is that knowledge sharing amongst the teams especially how their different technologies impact the others is a very important thing. And maybe only letting those who know or want to learn to do the specific jobs. Most terrible CSS is because someone had to do it, not because they wanted to. Same with databases and APIs that used presets instead of optimised settings.

Thread Thread
 
jackmellis profile image
Jack

Now you can tell me why I'm wrong and how writing pretty and semantic HTML is all that the frontend developer needs to know.

This condescending remark dropped in at the end completely negated all of the other points, shame.

Thread Thread
 
syndrom95 profile image
Ismet Bibic

@codepo8 That's what I'm saying, I never implied that frontend developer should be contributing to the backend, but that these concepts will make you more independent as a developer and will create less blockers in a team, which is what I believe companies are looking for.

@jackmellis Yeah I can't disagree with that. I took a look at his profile then his website and the impression I got is 'of course I have to enlighten "him"'. Obviously I was wrong and the conversation didn't go as I was expecting.

Thread Thread
 
viorelmocanu profile image
Viorel Mocanu

The front end is much more a technical expression of the nuances of user interface design, user experience and product management than it should be of ORM and ERD. By all concrete accounts of major product companies and how they operate, the business end of the spectrum (meaning: product management, reflected in design and flows) should be the deciding factor in architecting both the back end and the front end, not the other way around.

Sure, @syndrom95 intercommunication is ideally made with the same set of data and technical restrictions at hand for all the people involved in decision making, but that also means the best back end developers know how good front end is architected as well, not just the other way around. And that means usability, accessibility, web standards, responsive design, SEO, structured data, interaction design, user psychology and the list goes on and on. I don't see that many back end developers crazy to find out more about such nuanced lenses of looking at a final product.

Which leads me to the point I'm trying to make: each of us, whether we're more biased to the front end or to the back end, should be a "T shaped" professional who knows at least the minimum about all other related fields that guide the quality and content of their work so they don't negatively affect relationships and workflows with other contributors in a team, and this is of course the ideal. But if I were a manager in a product team and all other roles are adequately filled, I would much rather have a VERY good front end developer biased towards knowing a bit more psychology, design and UX rigors than one biased towards mastering back end expertise, because the responsibility of the front end developer's end result (which is HTML, CSS and JavaScript) is correlated much more with UI and UX than with how databases work. And to be clear, I'm talking about the "front of the front end" here.

Collapse
 
syeo66 profile image
Red Ochsenbein (he/him)

Well, I'd argue the opposite would be more important. Backend devs need to understand the frontend. The backend API should be built with the frontend (and the user) in mind, and not the other way round. If I have to care about the backend architecture while building the frontend, the backend probably messed up.

Collapse
 
syndrom95 profile image
Ismet Bibic

I wouldn't argue one is more important than the other one, it's not mutually exclusive. Backend developer should understand how frontend works as well. Though well built and documented API isn't concerned if the consumer is browser or not.

Collapse
 
jackmellis profile image
Jack

I agree that frontend developers need (and are often missing) an understanding of fundamental software engineering principals, but do they need to understand ORMs or relational databases? Absolutely not.
The segregation of frontend and backend means a frontend dev doesn't need to know about the underlying backend technology. Just like I wouldn't expect a backend dev to have to know React in order to send me some data.
If a backend developer told me I needed to look at the database schema to understand their API response, that'd be a red flag for me.
All that matters is the domain models and endpoints are agreed upon by both sides. The implementation detail is just a black box.

Collapse
 
syndrom95 profile image
Ismet Bibic

but do they need to understand ORMs or relational databases? Absolutely not.

Certainly, frontend developer does not have to understand these concepts, a good developer does understand.

All that matters is the domain models and endpoints are agreed upon by both sides. The implementation detail is just a black box.

Yes, in a perfect world, existing in the realm of imagination that's true.
In a real world that is a practice applied in minority of companies so it's not worth debating on.

Thread Thread
 
jackmellis profile image
Jack

Okay I guess this isn’t going to be a constructive discussion.

And that minority of companies is 100% of the places I’ve worked at so I feel it’s not only worth debating, but worth pursuing actively.

Thread Thread
 
syndrom95 profile image
Ismet Bibic

Absolutely not

Collapse
 
geni94 profile image
geni94

one of the most useless discussions I've encountered online for a VERY long time. 🍿🍿🍿

Collapse
 
hlexnc profile image
HlexNC

@codepo8 Can we just call a front-end dev a ✨DESIGNER✨.

Also I think CSS is easy. I have done it back in the day, and the use of hover, onclick and flexbox's was pretty simple and straightforward to me. I cannot imagine people saying it is hard, but that it is not for them instead. 😅

Collapse
 
viorelmocanu profile image
Viorel Mocanu

A designer is something else entirely. :) UI and UX designers, not to mention graphic designers will of course disagree with your statement. And they are all involved in the creative process of making a website come to life.

The old term of "web designer" might still hold some significance in that sense, but it's a bit too vague, I think.

"UI developer" might be a better name for the job. But even that has its limitations.

And CSS is not easy. It's easy to learn, but difficult to master. If you don't believe me, try reproducing with pixel-perfect accuracy any sort of complex interface you find on Behance or Dribbble, and you'll hit several edge cases and conundrums you need experience to fix. And most of the times, not even StackOverflow can help, since you won't often describe a visual context the same way as someone else. :)

Collapse
 
hlexnc profile image
HlexNC

CSS and HTML are not a tools needed to be mastered, because it is not a programming language, but markup and style languages. But, they are essential to know.

Thread Thread
 
codepo8 profile image
Christian Heilmann

CSS is turing complete by now. Please stop belittling it as "not a programming language". Using dozens of npm packages without knowing what they do isn't programming either.

Thread Thread
 
hlexnc profile image
HlexNC

Sorry, I don't know how one can use "dozens of npm packages". I am a Software Developer, not a Web Developer and if I AM DOING Web Dev, I usually uninstall things I don't need 😅.

Thread Thread
 
hlexnc profile image
HlexNC

Sorry for maybe comming out mean, but I am just stating the fact that creating a UI design and implementating it becomes really easy once you get used to it.

Collapse
 
hlexnc profile image
HlexNC • Edited

However, if by "mastering it" you meant being able to do anything with it, then I agree with you. 😅

Collapse
 
jackmellis profile image
Jack

I categorically object to this as an experienced frontend dev who couldn't design a site if his life depended on it.

Collapse
 
hlexnc profile image
HlexNC

Wow, I used to just go onto Pinterest, write down in my notebook the relative percentage of each section and where it would convert to the mobile design. Didn't know you guys had such a hard time. Also prob I selected simple designs, which were quick and easy to implement. 😅

Collapse
 
hlexnc profile image
HlexNC

I also used to just go to colormagic.app for color patterns.... Btw there are a ton of tools to simplify css coding, if u need I can send you links 😆

Collapse
 
syeo66 profile image
Red Ochsenbein (he/him)

onclick in CSS?

Collapse
 
hlexnc profile image
HlexNC

:active or :target 😅

Thread Thread
 
codepo8 profile image
Christian Heilmann

Focus-inside

Collapse
 
russellbateman profile image
Russell Bateman

And then recruiters invented "full-stack" as if back-end were a challenge and a skill-set and front-end was only an afterthought with technologies a back-end developer could cobble together some late Saturday afternoon. Companies then jumped at the opportunity to get 2-for-1.

Collapse
 
alvarolorentedev profile image
Alvaro

So while I might agree the need on an expertise, I fully disagree in silos inside a team (Silos = liabilities).
I would not hire a frontender, a backender, an infra, a dber,...If not as you can see it becomes absurd to run a single project if everyone is on their silo. If we would do so we are going backwards and having horinzontal slicing and not vertical slicing that improves team independance. It also has some other side effects as explained in team topologies.
That is why from my perspective people need to be T shapped, meaining "great, you have an expertise or prefference and you can help others improve on that knowledge, nevertheless you are open to learn and do other things".
Why? Its the team systems, we evolve it as a whole and we expect the input of everyone in discussion and understanding of the product. Silos also affects flow of value as people require more sync (A does the FE, B the BE, C the infra...). Also the same time for teams with devops mentality it does not work, if you only have the knowledge of part A of the system because when something fails people are unable to see the entire picture.
I could go on with the issue of team of experts, but I think i made the point.
my 2 cents, tp anyone that gets here, get something that motivates you and dig as deep as you want, but dont dig deep enough that you dont see anything else.

Collapse
 
cloutierjo profile image
cloutierjo

A bit late after the party.

But I totally agree with your post. I used to call myself full stack until a few year back roughly when flexbox and react took over the web. Then I got more deeply into the backend side. The main reason is that I enjoy way more designing db schema and optimising data process than working through the nightmare (for me!) of browser compatibility and user event. So yes hats down for specialised frontend dev there is a place for you and it's really worth it.

Small note following @kanekotic comment about team structure. While I agree that you need transverse ability in a team so that the work isn't fully segmented, I believe you need at least one specialised/experienced dev in front-end, backend and ops (and maybe mobile if apply). Hopefully those three people knowledge overlap and are not restricted to there speciality and the remaining part of the team should be more versatile "full stack". That way you get the benefit of all the domain expert with the flexibility to move forward with the feature.

And if some day you need more front end work, the specialized backend dev can take twice the time to do his first frontend pr in years and help the team move forward.

Collapse
 
dakkafex profile image
Bas • Edited

Wait... companies are cheaping out on frontend by stuffing them into full-stack or design roles? Well that's one way to burn through your VC money I guess.
I'd argue just taking the money and run, or getting a findom if they are masochistic, but apparently they are going for the long con.

frontend =/= full-stack =/= UI/UX designer

Collapse
 
hackape profile image
hackape

“UI is basically form filling”, says backend dev. True, if you don’t care about UX. But if you do, then frontend is a thing. Modern frontend is so complicated because modern web app’s UX requirement is high, which pushes frontend so hard that it grows into this conglomerate.

Collapse
 
faraib profile image
Farai Bvuma

I've seen a lot of job descriptions looking for frontend developers with loads of fullstack experience.

Collapse
 
cjsmocjsmo profile image
Charlie J Smotherman

lol wasm will eat the world, and be the compile target for everyone! :)

Collapse
 
syeo66 profile image
Red Ochsenbein (he/him)

On a more serious note: I don't think it has anything to do with the technologies used in the frontend. No matter if you are using Blazor, Yew or Leptos, React or Vanilla HTML/CSS/Javascript. The main challenge will still be to build the accessible, multi-device-capable (i.E. responsive), fast and nice looking interface for the users... it's simply a whole set of skills which should not just be an 'afterthought'.

Collapse
 
syeo66 profile image
Red Ochsenbein (he/him)

Mh, CSS-in-Rust will be a joy....

Collapse
 
vladimir_dev profile image
vladimir.dev

LOL who considered JavaScript "easy"?? 😂

Collapse
 
axel_nieminen_072275fab50 profile image
niemax

A really good read - thanks!

Some comments have been hidden by the post's author - find out more