Just like I, a front-end dev + designer am thankful for something like Firebase, because my backend skills are fairly nonexistent.
450 karma · joined April 13, 2013
Just like I, a front-end dev + designer am thankful for something like Firebase, because my backend skills are fairly nonexistent.
Because it provides a copy-pastable subset of reliable classes where you end result will look good.
As a company we are often hired to fill a knowledge gap (exactly in design and front-end). The nature of agency work is to leave a deliverable for the client to work with.
My idea is that when the project is over and the design/front-end gap still exists in the team, perhaps it is better to leave something more manipulatable (I used the word malleable originally).
I think with the great docs that Tailwind has it might be easier for someone who is not a front-end dev to manipulate a `<div class="p-4">` to `<div class="p-3">` than to come across a BEM/ITCSS component, written in SCSS* where you have to understand much more concepts to manipulate it skillfully.
*(our preferred stack really)
My 3 blog posts were a genuine attempt at trying to dissect what I didn't like about the framework. Many people wrote in to thank me for that perspective.
I find it unfair to single out two historical tweets neither of which is directed at the authors.
I just genuinely wonder if blocking people that don't agree with you is a good strategy.
I guess over time things also changed, Tailwind 2y ago was not the same as Tailwind now. They hired a bigger team and became much more of a company.
A big reason for me is that I want the bigger group in our company to experiment with several CSS techniques to grow as front-end developers. If I (as a manager) set a constraint on one type of CSS it is difficult to learn more.
As an agency it makes sense to have broad capabilities. I think as a freelancer it's super fine to just constrain yourself to what you like, as you state there is huge demand out there.
Now, since we bought Tailwind UI to do our work, we are technically also a customer.
I like "atom"-like components better with semantic classes. In BEM/ITSS I'd make a component for -everything-. But in Tailwind we'd only make one for common "atoms" such as buttons, tags, inputs etc.
Code example: write ".t-button" and then use @apply to put the classes there. Keeping the design constrained to a set of tokens.
.t-button {
@apply border
inline-flex
items-center
px-3
leading-5
font-medium
rounded
focus_outline-none
focus_ring-2
focus_ring-offset-2
focus_ring-blue-500;
}We design complex business software. Looking for a problem-solving designer with a lot of UI chops to design great software.
Where the same system is used across multiple code bases, with varying components, where you need to be able to accurately replace the look of a component, that might be coded in multiple dev environments (Angular, PHP, React...)?
If so, you would be running away from this approach fast. BEM/ITCSS all the way. How would you globally replace something that is marked up like this (example appears somewhere else in this thread)? How would you assert what this code means across projects?
class="text-4xl sm:text-6xl lg:text-7xl leading-none font-extrabold tracking-tight text-gray-900 mt-10 mb-8 sm:mt-14 sm:mb-10"
With BEM/ITCSS, you would have a custom namespace like `auk`: class="auk-btn auk-btn--primary"
And you can reason about it, maybe in project 2 it is class="auk2-btn auk2-btn--primary"
So now you can refactor the old buttons out to replace the new buttons. Good luck with the mess above.If people say: you can use `@apply`. Yeah. If you write your whole stylesheet in `@apply` logic, why are you using Tailwind at all?
Design tokens and the re-use of design variables is not a Tailwind thing by the way. Some people seem to be acting like it is. We've had variables in Sass for over since 2009. People have been doing clever things with variable maps (arrays) in Sass since forever. There's no way Tailwind can take credit for this.
I've written extensively about why Tailwind is problematic:
(1) https://johanronsse.be/2019/11/11/thoughts-on-tailwind-css/
(2) https://johanronsse.be/2020/07/08/why-youll-probably-regret-...
(3) https://johanronsse.be/2020/08/20/hey-your-api-surface-is-ca...
Don't fall for it! The marketing is sweet but the choice will hurt you in the end.
Video: https://www.youtube.com/watch?v=qicEFB_XrQQ
This is much more about what the framework solves: UI as a function of the data, no spaghetti code full of DOM handlers and cross-references that are hard to follow.
Now I just used Svelte for this project, which is indeed a simple website which might not need this at all.
Still, I invite you to do similar transitions as I have between every page and on the homepage without a framework.
This is clearly a technology exploration.
How can I explore new technologies if I impose limits that others don't set for themselves? The job market asks for JS skills. Look at my conclusion at the bottom of my post: I state that this might be a technology downgrade instead of upgrade.
But now I wanted to explore how one would build something like Sapper, this is why I went for base Svelte and then added a router. I now have pretty much what I used Sapper for and the setup is simpler.
Also, Sapper doesn't seem to be in active development.
It will be interesting to read the comments on this early version but it's not really “released” yet.