When someone says HTML & CSS is terrible I ask them to design something better that lets you represent user interfaces that can adapt across multiple screen sizes, and allow complex layouts that Flexbox and CSS Grid makes possible. It is easy to criticize something if you don't have to worry how you would do it better.
That said, HTML & CSS is just how the world currently is. It doesn't mean that it is the best possible way to do it. CSS could've been very different if not for many fortuitous events in history: https://eager.io/blog/the-languages-which-almost-were-css/
The best possible way to represent user interfaces is to represent them visually. Having to learn code to build UI is just today's limitation. While many have tried and failed to do better, this is still an open question.
Today maybe a designer must understand HTML & CSS to fully embrace the medium. But that means they have to get out of their visual thinking mode, and look at letters on a screen and interpret them in their mind's eye. As programmers we're used to it, but it doesn't mean it is the best nor the only way to do it.
So I'm all for articles like this that questions the status quo instead of accepting defeat and asking people to just get on with the program.
> When someone says HTML & CSS is terrible I ask them to design something better that lets you represent user interfaces that can adapt across multiple screen sizes, and allow complex layouts that Flexbox and CSS Grid makes possible.
Uh huh. And how many years did it take to actually get Flexbox and CSS Grid? I mean...They're both still "Candidate Recommendations" in 2019. That's not even the penultimate level of recommendation. You definitely can't use Grid if you want broad compatibility; it was only first implemented in 2017. "People should update their software to the latest versions! And they should switch browsers to use one that supports my nonstandard features!" Oh, yes? Well they don't. And let's not even talk about Grid Level 2 which is implemented nowhere. We've gone through generations of faking markup with javascript because the dogma behind CSS has always been a terrible mess. "No tables for layout!" Ok, what else are you supposed to use to arrange things in grids? "Uhhh....give us a couple decades to get back to you on that."
When people say that CSS is terrible, they mean the actual standard parts, and they mean for the past 22 years.
> "People should update their software to the latest versions! And they should switch browsers to use one that supports my nonstandard features!" Oh, yes? Well they don't.
I mean, I agree that developers shouldn't feel entitled to have all potential visitors using the most up-to-date software, but it is also definitely true that there is almost never an excuse to be using a web browser that doesn't automatically update. Forget CSS features, it's a pretty big security concern.
I kinda sorta almost agree and yet that's definitely not how the world works for all kinds of reasons that aren't the user's fault. Also, I find it supes weird that you responded to that part and not the part where it took two entire decades of "tables are evil" before we got the first CSS grid implementation that isn't even a standard yet.
Browser that automatically update are actually hostile to the end user. The biggest effect is that it has been making it easier to create walled gardens on the internet.
You can use CSS grid just fine, it landed it the three major browsers at the same time. Only older IE will give you trouble, funny enough, because they were first to implement grid layouts.
"People should update their software to the latest versions! And they should switch browsers to use one that supports my nonstandard features!" Oh, yes? Well they don't.
And as long as Microsoft keeps shipping IE11, we're all doomed. Office drones aren't going to switch to something better until they're forced to.
Windows 10 doesn't have IE 11 as the primary browser, and I'm not sure it ever has.
IE is there for compatibility in enterprise environments. There are a lot of large organizations which still rely on older versions of SAP, Oracle and IBM applications, plus whatever ungodly niche vertical apps or in-house garbage was written back in the 90s.
Microsoft has to cater to this environment because it's been the lifeblood of the company for ages.
It's not all doom and gloom, though. I've had experience in some very large organizations, lately, which prefer Chrome. The landscape is beginning to change, but it will be a while, still, before evergreen browsers are the norm in the corporate world.
> When someone says HTML & CSS is terrible I ask them to design something better that lets you represent user interfaces that can adapt across multiple screen sizes, and allow complex layouts that Flexbox and CSS Grid makes possible. It is easy to criticize something if you don't have to worry how you would do it better.
How about Cassowary, with size classes?
I spend half my programming time working on Mac software and half on web software, and I find element layout in the former is infinitely more pleasant. No need to put elements in a specific place in the document structure to lay them out the way I want. No need to change how I'm working for vertical versus horizontal layout. Just pick the dimension/coordinate you want to set, pick the other dimension/coordinate you want it to maintain its proportion to, and you're done.
Apple's implementation got a bad rap, I believe, because the first version of Xcode didn't support it well, the first version of the API was a terrible fit for Swift (which came a couple years after it), and pre-Sierra macOS had a lot of bugs in the implementation. Today, there's no layout system I'd rather use.
Agree that it comes down to CSS (Box Model + Flex + Grid) vs Cassowary. I've never used it myself, so thanks for chiming in.
My understanding of it mostly comes from this thread (https://news.ycombinator.com/item?id=13125093) where the ReactNative team first attempted using Cassowary as their layout engine, but deemed it too complex/verbose and decided to use a subset of CSS. But as someone with actual comparative experience with both, would appreciate if you can tell me your thoughts on their conclusions.
HTML was and is wonderful in its simplicity and flexibility.
CSS was not fit for purpose until relatively recently, and is still pretty limited and broken. It’s telling that you mention features of CSS which were only recently usable.
Problems with CSS - lack of a proper grid till recently, lack of variables, byzantine box model rules, a profusion of units (px,em,en,%), lack of simple computed widths etc.
All these are fixable/being fixed but I would not be sorry if the whole mess was thrown out and a more considered styling language introduced.
>When someone says HTML & CSS is terrible I ask them to design something better that lets you represent user interfaces that can adapt across multiple screen sizes, and allow complex layouts that Flexbox and CSS Grid makes possible
Short answer: layout and styling in one DSL with one syntax/grammar and not you know, two. But the problem isn't "how do I make something that's better" but "how do I make something that's better and supported on my target platforms."
If browser engine support isn't a design concern there are plenty of alternatives, many of which are arguably superior to HTML + CSS.
What are some good examples? I remember using Android's relative layout system several years ago, and it was quite powerful, but I wouldn't call it easier to grok than CSS flex or grid.
> When someone says HTML & CSS is terrible I ask them to design something better that lets you represent user interfaces that can adapt across multiple screen sizes, and allow complex layouts that Flexbox and CSS Grid makes possible.
How do mac devs do this? Mac apps are some of the best around and both designers and developers appear to really like designing and developing mac apps.
>When someone says HTML & CSS is terrible I ask them to design something better that lets you represent user interfaces that can adapt across multiple screen sizes, and allow complex layouts that Flexbox and CSS Grid makes possible. It is easy to criticize something if you don't have to worry how you would do it better.
Easy, something like Winforms or one of its successors like whatever they make Win10 apps in. Even the new Unity3D UI stuff is better.
I would never work with a design person who only knew how to click buttons to make UI's.
They're just going to make more work for the real developers who have to constantly fill in the lack of understanding about how the back-end works.
It isn't a limitation. It's a prerequisite. You wouldn't want a bus driver who's never driven a car before.
And if design systems ever evolve to the point where you can just click/drag some buttons to design a UI then that's the day the value of that profession should rightfully drop to zero. Lowering the bar that low only leads to vulnerabilities by blurring the lines between amateur and professional. Honestly the design crowd gets too much credit as it is.
Look at manual machinists. They have legitimate skills that only come with experience. They demand righteous salaries for those skills. BUT CNC machines have all but destroyed the need to employ manual machinists so instead you spend more on your machine up-front but you save forever because you can literally teach anybody with a pulse how to run it. The result is you have countless experienced and skilled machinists who are unemployable in today's market and a bunch of cheap amateurs churning out barely conforming products for $10/hour.
On the reverse, let designers refuse to work with developers who have never observed users using their product (user research in formal terms), or don't understand color theory, or haven't designed a landing page that converts well, don't know how to use Sketch or Figma.
I've been trying to learn how to do design well - struggling to get the onboarding UX for a complex workflow right. It is something very difficult for me to solve well, but a good designer can start iterating in a few days' time. Design is indeed a valuable and deep craft, and my lack of respect for it in the past stemmed from not knowing it and not having worked with masters in the field.
Yes it would be wonderful if designers also understood HTML & CSS - it is quite adjacent to their area of expertise. But is it a deep enough skill if the market doesn't award salaries to people who specialize only in HTML & CSS as much as it does for application developers?
The current designer-developer collaboration workflow is broken, and the dominant narrative blames designers for not learning HTML & CSS. I was also party to it till recently, but it is partly the fault of programmers who don't expend the effort to understand how design is done and what "good" looks like in that craft. It is also the fault of the current crop of tools - vector drawing tools that don't have abstractions nor supports responsive design, and HTML & CSS which is far removed from its visual rendering.
It is a give and take, and it is so much more fun to work when people are eager to learn from each other.
> but it is partly the fault of programmers who don't expect the effort to understand how design is done and what "good" looks like in that craft
Very much something I agree with. Even on HN, when a non-designer has made something with a GUI, you'll often hear the excuses along the lines of "well, don't blame me if it's ugly, I'm not a designer".
Then you shouldn't have deigned to make something with a UI until you've run it past someone first. You land up with these utilities and apps that are intended to be used by regular, non-technical people that are just complicated and unwieldy Office '97 collections of tiny, unusable buttons that don't make any bloody sense to anyone.
It means "I know this bit is bad but I don't know how to make it better". It's an expression of vulnerability and I'm glad people are releasing their half-finished stuff with this admission rather than not releasing.
I actually think your behaviour here is kind of crappy to take an occasion where someone is admitting to weakness and twisting it on them. Especially when it's completely voluntary to even use these products.
This part of your post I find to be in contradiction with the HN guidelines. It's not a helpful, it's merely snide and dismissive.
Anyway, I don't think my behaviour is crappy. It is undoubtedly better to run your design past someone, test things, take feedback, fix issues, and improve the interface to correspond with the things that people find difficult. If people want help with interface design, the world is not short of willing volunteers with the relevant expertise.
Especially considering I made it clear I was talking about utilities used by, and I quote myself, "regular, non-technical people" — they don't care whether you're making an "expression of vulnerability", they want their software to work. Additionally, the world of IT helpdesk does not applaud having to troubleshoot problems that should've been solved years ago because so-and-so decided to do everything by themselves rather than do some basic user testing or simply have someone else look at their design.
If something is in a testing state, call it a beta. I respect a product that knows it isn't ready for the big time and so is explicitly marked for improvement, either by collaboration with a designer at a later stage or community involvement — this is what happens a lot in open source.
However, don't put it into production, particularly if its design also leads to more problems overall for the users by virtue of its premature release.
I take the user-centric view of product design. We are making these things for other people. They are not going to give us trophies for participation.
I know the triangle of forces would have something to say about my statement, but I find too many developers purposefully build a wall around themselves and product design, perhaps using the aforementioned triangle as justification for why they should keep that wall erected.
Yet, even a passing attempt to understand the basics of design, whether of user interfaces or even of something as mundane as a chair, opens one's mind up to possibilities hitherto unseen due to failing to understand that there can be a strong link between aesthetics and function.
That said, HTML & CSS is just how the world currently is. It doesn't mean that it is the best possible way to do it. CSS could've been very different if not for many fortuitous events in history: https://eager.io/blog/the-languages-which-almost-were-css/
The best possible way to represent user interfaces is to represent them visually. Having to learn code to build UI is just today's limitation. While many have tried and failed to do better, this is still an open question.
Today maybe a designer must understand HTML & CSS to fully embrace the medium. But that means they have to get out of their visual thinking mode, and look at letters on a screen and interpret them in their mind's eye. As programmers we're used to it, but it doesn't mean it is the best nor the only way to do it.
So I'm all for articles like this that questions the status quo instead of accepting defeat and asking people to just get on with the program.