Here’s an old joke (or story, or fable, or whatever you want to call it) that I’ve heard some variation of a dozen times.
The new Jewish bride is making her first big dinner for her husband and tries her hand at her mother’s brisket recipe, cutting off the ends of the roast the way her mother always did. Hubby thinks the meat is delicious, but says, “Why do you cut off the ends — that’s the best part!” She answers, “That’s the way my mother always made it.”
The next week, they go to the old bubbie’s house, and she prepares the famous brisket recipe, again cutting off the ends. The young bride is sure she must be missing some vital information, so she askes her grandma why she cut off the ends. Grandma says, “Dahlink, that’s the only way it will fit in the pan!”
I’ve been working more in front-end development the past six months.
I started out as a cranky old man, having cut my teeth on mid-aughts web development where jQuery and a couple libraries was really all that was considered necessary for most projects. Jumping onto a project that used so many newfangled approaches – Webpack and React and transpilers and buzzwords galore – I found myself sounding like this:
~15 years trying to make everyone separate HTML, JS & CSS. And then suddenly everything went south and we’re writing code like this. pic.twitter.com/NnmJmPvEgp— Thomas Fuchs (@thomasfuchs) December 19, 2016
Now that I’ve settled into the ecosystem a little bit more, I understand that the things I once scorned as bad practice or unnecessary complications exist for perfectly good reasons. Webpack is a pain in the ass, but it solves very real problems when dealing with asset management (to the point where I infinitely prefer it to other approaches); the React/Redux stack is heavy and often impenetrable, but it solves very real problems for large and complex applications.
Still, I look at pictures like this and shudder:
Not because any of those underlying bullet points are bad, but because that list will ingrain the idea that you need X, Y, and Z no matter what, and it’s pointless to hypothesize about it.
(And, for the record, this isn’t to fault the developers of these tools. Literally the first section on Redux’s FAQ, for instance, recommends: don’t use Redux until you have problems with vanilla React).
Moreover, I’m understanding that frontend development is just like every other type of software development, which is just like every other craft: there are few silver bullets, and everything exists for a reason (even if that reason was this was considered best practice a decade ago, or perhaps this architecture is the only thing that works for companies as large as Facebook.)
Sometimes bubbie has a good reason for doing things.
Sometimes it’s just time to get a bigger pan.