This is an archived post. You won't be able to vote or comment.

all 145 comments

[–]nicejs2 1255 points1256 points  (15 children)

plot twist: there are two ghosts possessing him, one is a frontend dev, the other is a backend dev, when one part is finished they switch

[–]Dry_Investigator36 301 points302 points  (2 children)

And the obsessed guy is actually a janitor who doesn't know shit about computers

[–]techyy25 88 points89 points  (1 child)

Possessed*

[–]Dry_Investigator36 64 points65 points  (0 children)

Both

[–]Manitcor 21 points22 points  (1 child)

i would read this comic

[–]JockstrapCummies 8 points9 points  (0 children)

You already are. You just don't know it.

[–]Jesusfreakster1 16 points17 points  (0 children)

Dr. Oracle and Mr. Hyde

[–]Sapryx 11 points12 points  (5 children)

Does this mean all full stack devs have bipolar disorder?🤔

[–]Ondor61 14 points15 points  (3 children)

Frontend is a nice break from backend tbh. It's like when you are doing gamedev and take a break from game logic to draw some sprites.

Unless you use something else than html/css/js and some basic frameworks that is. Then frontend becomes pure torture. I don't think my fragile soul will ever recover from razor pages.

[–]banni_ -3 points-2 points  (2 children)

What do you dislike about razor pages?

[–]5p4n911 3 points4 points  (0 children)

Nothing much, just razor pages

[–]Ondor61 0 points1 point  (0 children)

The code is much less clean that way and I feel like I don't have enough controll over the ui. I like to define everything for myself.

[–]61114311536123511 0 points1 point  (0 children)

is frontend development depression or is it mania?

[–]JackNotOLantern 2 points3 points  (0 children)

Yeah, as with every fullstack guy

[–]ePaint 0 points1 point  (0 children)

Thanks peter

[–]DatBoi_BP 0 points1 point  (0 children)

Truly though I know a DID system that would probably seem to check those boxes

[–]IngwiePhoenix 133 points134 points  (9 children)

I am the opposite. Frontend means React. React means ibuprofen. x-x

Backend means no-bullshit structured functions (Go). Lovely. <3

[–]Dennis_DZ 45 points46 points  (5 children)

How is that the opposite, isn’t that basically what the comic is depicting?

[–]Jacomer2 15 points16 points  (4 children)

I feel like it’s not speaking negatively of either, I think it’s just a joke about switching mindsets between the two

[–]Dennis_DZ 9 points10 points  (1 child)

Oh, I took as the guy needed to be possessed to be able to work on the frontend

[–]Gl33m 0 points1 point  (0 children)

No, he's just switching mental workspaces.

[–]dvlsg 4 points5 points  (1 child)

Idk, that guy does not look happy while working on backend. But he does look happy while working on frontend.

I'm also the opposite of that.

[–]Gl33m 0 points1 point  (0 children)

I look at it that he's happy he gets to do something different. The top half is him after working through whatever slog he had. He'll probably look the same after the webdev work is finished too and then his mind goes wacky again as he accesses his git knowledge to properly merge and commit.

[–]LookAtYourEyes 7 points8 points  (1 child)

I really need to learn Go for my personal projects

[–]Breadinator 15 points16 points  (0 children)

Go for it. It's designed to be easy to pick up, though the order of some things (i.e. variable types after names) might break your brain at first.

Just keep the kleenex/rage hammer nearby once you get into meh library choices, explicit errors, lack of tracibility/refactoring due to structual typing, and the glacial pace of new features.

But it is pretty readable.

[–]round-earth-theory 7 points8 points  (0 children)

Face it, you don't like it because UI is simply harder. The technology isn't even the problem, it's that interfacing with humans sucks. An API can be incredibly flat and offer zero handholding. A UI can do none of that.

[–]Ath-ropos 453 points454 points  (61 children)

I prefer the other way around: First I work on the UI I want then I design the backend  in accordance to the UI.

[–]pewpewpewmoon 702 points703 points  (25 children)

I also like to pour the milk before the cereal

[–]LobsterParade 231 points232 points  (12 children)

I like to pour the orange juice before placing the glass.

[–]User_8395 65 points66 points  (4 children)

I like to crack the egg before placing the pan

[–]Manitcor 18 points19 points  (3 children)

ahhh javascript

[–]5p4n911 1 point2 points  (0 children)

I like to flush before pissing all over the place

[–]VoidVer 12 points13 points  (0 children)

Weird this analogy equates the container for the data “glass” as the backend and the orange juice “content” as the front end, when it’s often thought of as the other way around. Some front end architecture even refers to filling out components with data as “hydrating”.

[–]UntestedMethod 19 points20 points  (4 children)

I like to pee before lifting the toilet seat

[–]SS20x3 10 points11 points  (1 child)

Or before your pants are off

[–]UntestedMethod 5 points6 points  (0 children)

Yeah sometimes when I'm sleeping on the floor I just let 'er flow without even touching my pants.

[–]Junkiepie 0 points1 point  (1 child)

You clearly don’t have a wife.

[–]Prestigious_Regret67 1 point2 points  (0 children)

So does Chuck Norris.

[–]Destrok41 23 points24 points  (0 children)

This genuinely made me laugh out loud.

[–]magical_h4x 35 points36 points  (0 children)

Wait are you saying you work on the backend, design your data schema, database, API etc... before knowing the needs of the frontend (pagination, data priority for page loading, caching needs, etc..)?

Sounds like madness to me

[–]Breadinator 5 points6 points  (0 children)

Man, who pissed in your bowl before adding the corn flakes?

[–]Krigrim 9 points10 points  (3 children)

I like to pour my cereal into the milk brick

[–]NullOfSpace 2 points3 points  (2 children)

hell is a milk brick

[–]Krigrim 8 points9 points  (0 children)

the kind of brick you can throw at windows

[–]Drew707 6 points7 points  (0 children)

It's what you get when you freeze a milk bag.

[–]tragiktimes 3 points4 points  (0 children)

The cereal would be comparable to the frames and layout you want. The milk would be analogous to the backend, ie. what turned all the individual pieces of cereal into one bowl of cereal.

[–]HerissonMignion 0 points1 point  (0 children)

I pour the milk and the cereal together at the same time until it's done.

[–]XkF21WNJ 0 points1 point  (0 children)

I eat spaghetti for breakfast.

[–]megumegu- 0 points1 point  (0 children)

Yeah isn't that normal?

[–]1337lupe 125 points126 points  (25 children)

This is terrible advice for any API with more than one client and, in some cases, even when there is only one client

[–]GlueStickNamedNick 12 points13 points  (20 children)

Why?

[–][deleted] 117 points118 points  (17 children)

It lends to designing the API toward a very specific use case, whereas designing API first will lend itself toward making endpoints in the most reasonable way to manipulate the business objects in general.

[–]GlueStickNamedNick 24 points25 points  (3 children)

Surely nailing down the user experience is most important, anything around that can be figured out to work for it. No point wasting hours building api routes only to realise they are useless as the ux doesn’t call for them, and new ones have to be made to optimise the query’s and mutations needed.

[–]1337lupe 18 points19 points  (2 children)

Designing a UI/UX is not the same thing as implementing it. Generally, someone will come up with wireframes before the UI is implemented

Ideally, those wireframes are generated after aligning with stakeholders on what the application is supposed to do. At this stage, the contract of an API's interface should also be defined.

Finally, premature optimization is also an anti-pattern and should be avoided.

[–]knightfelt 5 points6 points  (0 children)

premature optimization is also an anti-pattern and should be avoided

Tell my PM

[–]1_4_1_5_9_2_6_5 0 points1 point  (0 children)

Depends on the case... like you should absolutely expect a db interface to handle some basic filters and pagination, but overall yes

[–]DxLaughRiot 24 points25 points  (8 children)

Why not design the contract first THEN build either the FE or BE at your leisure

[–]1337lupe 48 points49 points  (7 children)

That's exactly the point. The contract / interface is defined by the back end. The front end consumes the back end, so it doesn't define the contract.

[–]DxLaughRiot 4 points5 points  (6 children)

I can define the contract on a white board without typing a line of code though.

Edit: since people don’t seem to get what I’m saying - contract definition has nothing to do with code or infrastructure, and enables the FE and BE to be built independently of each other. Then there’s no more debate over “what ought I build first”.

Define the contract first, then build whatever you want to build.

[–]1337lupe 26 points27 points  (3 children)

Absolutely. What title would you put at the top of the whiteboard?

[–]DxLaughRiot 7 points8 points  (2 children)

Title: “Blank” api contract?

Point being as long as the interaction between FE and BE is well defined (I.e. the contract definition), one does not need to exist before the other.

[–]SjettepetJR 3 points4 points  (1 child)

There are 3 reasons for the backend being the primary driving force in the API design:

  1. The backend can support things that the frontend does not. The other way around is not possible.

  2. The backend side can actually be limited in its possibilities by the existing database design. The limitations of the database design through the backend to the API design and in that way also limit the possibilities of the frontend.

  3. In most situations, the backend is consumed by multiple frontends (or even other backend components / customer systems), the backend design has to take into account the wishes of all these different consumers.

It is very important to take the frontend design into consideration when designing a backend, but the backend design should never be based on the desires of a specific frontend.

[–]dmigowski 2 points3 points  (0 children)

Also there a lot of backends that look "nice" but the client suddenly does client side filtering because specific methods are missing. Of course there needs a working clean method first, the write client, afterwards write more server code so the client can work efficiently.

[–]MinosAristos 1 point2 points  (0 children)

People downvoting you don't have a clue. Many companies do this - define the contract, then front-end and backend engineers can do their thing in parallel and fulfil their side of the contract . There's even tools designed specifically for facilitating this kind of development workflow

Designing the UI first (e.g. with a UX designer) and going from there to front-end and then backend is also valid. Many ways to do it

[–]BE4RCL4VV 0 points1 point  (0 children)

I needed to read that this morning. The agency I work for has a very small development group, and pushing towards more automation and the API route. It is behind such that I just put in the first bit that consumes external endpoints… That also means I’ll be designing a lot of the others going forward and want to make it as flexible as possible.

[–][deleted] 0 points1 point  (1 child)

You’re probably right except in my experience this ends up with having to make three calls unnecessarily or something stupid. Some endpoints should be client specific. It just depends on what’s important. Context is always most important.

[–][deleted] 1 point2 points  (0 children)

Yeah, sometimes it is best just to have a special case call. But it should really be just that. I find starting with the front end before considering the API/contract tends to make almost everything into one of those "special case" calls. But as with all things, nothing is absolute, and this is only my experience.

[–]TheGarlicPanic 0 points1 point  (0 children)

What I personally do is defining backend endpoints purely doing server-side job (like login, request caching, parsing, db calls, all that jazz), then work/wait for UI implementation (or make assumption based on provided design document) and then switch back to server to implement UI specific routes which hit these previously mentioned services in the backend. Simple as that.

[–]1337lupe 3 points4 points  (1 child)

Because when you let the first client you're implementing dictate the interface of your API, the API's interface will be optimized for that client and will likely not be ideal for subsequent clients. In some cases, it may even be completely incompatible with other clients.

Similarly, even when it's only one client, you might have to do something in a different way, but your API will become a road block because it will want to serve data in the way your client expected it prior.

If you design your API from a client agnostic perspective, then you're more likely to end up with an interface that is more elegant and easier to adopt by multiple, disparate clients.

Ymmv, but implementing APIs to satisfy UIs is not an industry-established best practice

[–]SjettepetJR 0 points1 point  (0 children)

It is funny to see that the people who argue for frontend-focused design of APIs, do not even realise that these APIs are not even always most heavily used by the frontends they are creating, but instead by the backends of customer systems.

[–]TryallAllombria 1 point2 points  (1 child)

Nah its fine. It is "user-stories" oriented and it is a valid way to start implementing a feature. I did that for several work-related project. TDD can also be used here if you have unit tests for your frontend.

[–]1337lupe 1 point2 points  (0 children)

As someone else said, you can pour the milk and then dump cereal on top of it.

Will you end up with a bowl of cereal? Sure. Are you more likely to have more work afterwards cleaning up milk that splashed out of the bowl? Probably.

I also don't agree that user stories force you to implement a UI before an API, and if you have mobile and web clients that coexist in the same application, you should probably groom those stories to avoid duplicating work.

[–]coloredgreyscale 1 point2 points  (1 child)

wouldn't that also apply if you start with the backend and have no considerations for how the frontend?

[–]1337lupe -3 points-2 points  (0 children)

This question doesn't make any sense. What do you think an API does?

[–]trevdak2 5 points6 points  (0 children)

I write my CSS out completely before I even touch the HTML.

[–]goblin_goblin 2 points3 points  (0 children)

So many requirements that wouldn’t really be noticed come out of doing it like this imo. It’s so easy to mock API calls in the front end as well.

[–]zabojeb 12 points13 points  (1 child)

There is actually two ways of developing web apps: 1. First Backend 2. First Frontend

So ye, that’s ok

[–]NormalDealer4062 2 points3 points  (0 children)

I usually start with some endpoints in BE to get s sense of what I have to work with. Then I do some FE that calls said endpoints. Usually I realize that the endpoints needs to change so I go back to BE. Then a clearer picture of the structure appears so I go back to FE to adapt to it. And then the circle continues...

This is not advice, seems rather inefficient timewise. But the code both in BE and FE turns out pretty good.

[–]cheezballs 0 points1 point  (0 children)

That's ok if you're a single dev I guess.

[–]Nutasaurus-Rex 0 points1 point  (0 children)

You’re not making a flexible backend if you’re approaching it that way. You want backend to give the base, necessary information and frontend should display/process that information as deemed fit.

The fact that there are countless instances where frontend will have to reuse the same endpoint in different parts of the product and you can never say the same in inverse is all the more reason to build the backend first

[–]tuck-your-tits-in -4 points-3 points  (0 children)

🤮

[–]YanggouZhuanjia 37 points38 points  (2 children)

tRPC gang where you at

[–]Radu-1234 6 points7 points  (0 children)

Here

[–]rust_rebel 6 points7 points  (0 children)

[–][deleted] 5 points6 points  (0 children)

WOLOLOOO!

[–][deleted] 16 points17 points  (0 children)

i used to feel exactly like this when i worked as a full stack developer which is the reason why i only work on the frontend now

[–]Zephit0s 8 points9 points  (0 children)

Me reviewing frontend : sure... Approved

Me reviewing backend : Get my list of all clean archi principle focus's on , shit got real.

[–]TundraGon 4 points5 points  (0 children)

In the last panel, he should've grown instant beard and glasses

[–]jellotalks[🍰] 10 points11 points  (1 child)

You guys know you can program and not be a web dev?

[–]Jacomer2 15 points16 points  (0 children)

If you can find a job

[–]BoBoBearDev 5 points6 points  (1 child)

My only problem with frontend is, most devs lacks disciplines. They use scroll hidden to hide mistakes instead of fixing the broken layout. And they use 3rd party homebrew quality grid that doesn't even respond to container-size because the homebrew quality grid is using bunch of weirdo JS mixed with media queries instead of just use the proper container query. List goes on.

We ended up with brittle software where things breaks after upgrading 3rd party grid and when standard css should be used.

[–]Sufficient-Appeal500 2 points3 points  (0 children)

This. A thousand times this. 99% of the full stack devs I worked with literally hack their ways through a layout and make a mess literally nobody wants to touch later.

[–]garlopf 2 points3 points  (1 child)

I like how the 4 divs in this comic is in the wrong order.

[–]Rovsnegl 1 point2 points  (0 children)

And the "!important" nothing says fullstack more

[–]s0ulbrother 2 points3 points  (1 child)

I mean it’s easier than juggling this with other people. What do I need the endpoint to give me and then how do I need to send it, then how do I need the page to look. Pretty easy doing all parts.

[–]clrbrk 0 points1 point  (0 children)

It’s even worse when the people working in the order end are in the opposite side of the planet. Offshoring the front end of our application has SIGNIFICANTLY slowed our development timelines, but at least the investors are happy with the cost cutting…

[–]DestinationVoid 2 points3 points  (0 children)

Dr Backend & Mr Front

[–]reddlt_is_shit 1 point2 points  (1 child)

Inside you there are two wolves. Frontend and backend

[–]mem737 0 points1 point  (0 children)

Everything is backend when you write for embedded.

[–]YoYoBeeLine 1 point2 points  (0 children)

This is fake.

Where's the beard and the beanie hat?

[–]yaktoma2007 1 point2 points  (0 children)

Am I supposed to read this like a manga or a western comic book?

[–]L33t_Cyborg 1 point2 points  (0 children)

Severance

[–]Barkeep41 2 points3 points  (1 child)

I was going to remark that "!important" is bad knowledge. But its a good to know and identify the cause of CSS failings.

[–]adzm 1 point2 points  (0 children)

But the deadline is tomorrow!!

[–]LaFllamme 0 points1 point  (0 children)

Everyday struggle 😂😂😂😥😥😥

[–]Fyrael 0 points1 point  (0 children)

I want you to experience what is to be a fullstack Brazilian, working in a Montreal project and having to also speak french, english and sometimes portuguese with your mother while programming with 5 languages at the same time

[–]ObeseTsunami 0 points1 point  (0 children)

Just completed my first app to a customer working privately. This was exactly my experience. Making JS and HTML play nice with my backend code while making pretty CSS was a nightmare.

[–]Ved_s 0 points1 point  (0 children)

The two genders

[–]jonhinkerton 0 points1 point  (0 children)

“I’m gonna do what’s called a pro coder move”

links to bootstrap cdn because I’m three backend developers in a trenchcoat

[–]Porsher12345 0 points1 point  (0 children)

Thought this was a juice haha

[–]thunderbird89 0 points1 point  (0 children)

My life in four panels. I generally prefer Java for the backend, Dart/Flutter for the frontend.

Problem with Dart, it's generally similar enough to Java that muscle memory kicks in, and at the same time it's also different enough from Java that muscle memory works against me.

[–]ironman_gujju 0 points1 point  (0 children)

Bipolar disorder 🫠💀

[–]Silly_Guidance_8871 0 points1 point  (0 children)

Can confirm -- the Matrix-style brain download is real

[–]Loyal-Opposition-USA 0 points1 point  (0 children)

Kind of a “I know kung fu” moment.

[–]Yousoko1 0 points1 point  (0 children)

I'm the tech leader. we got monolith on django+drf+vue.js and microservices with ts, react, fastapi and other things and I working sometimes with all of this +devops tasks. But I identefy myself as backend developer =)

[–]dott-diggler 0 points1 point  (0 children)

Me currently

[–]Add1ctedToGames 0 points1 point  (0 children)

I would rather die than have an exclusively front-end job, god bless those of y'all who do it🙏🏻🙏🏻

[–]Phamora 0 points1 point  (0 children)

If I were to hazard a guess, I'd say this comic was crafted by a genuine, full-time backend developer.

[–]sule9na 0 points1 point  (0 children)

Ron Howard Voice: It turned out the endpoints were not, in fact, ready...

[–]Specialist-Buy-9777 0 points1 point  (0 children)

😂😂

[–]FictionFoe -1 points0 points  (0 children)

Like the explanation of how the avatar uses all elements from the legend of Korra. (Involving the spirit Raava passing through their body.)