The best designers I’ve worked with not only understand their own domain but the possibilities and limitations of how it will be executed, because they are also developers.
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.
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.
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.
Representing the very people who have the capacity to spend millions of $$ on my product.
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.
I can't believe Windows 10 still has IE11.
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.
If there are 20 products that work in IE11, you won’t switch to Chrome just for your 21 product.
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.
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.
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.
What version of CSS do people complain about? By chance are you talking about bleeding edge unaccepted CSS proposals?
In any case, the list of CSS improvements is long. Off the top of my head:
* Remove min-height, max-height, vertical-align, text-align, etc. in favor of unified Flex model.
* Rename color to font-color.
* Default to box-sizing (or remove content-sizing)
* Make <fieldset> stylable by CSS.
* Make inline styles work with pseudo-selectors, or remove inline styles altogether
* Reduce the number of units
CSS does a lot of things really well, but makes some common tasks way more difficult than they need to be.
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>Sorry, I couldn't resist
lol
https://jsbin.com/nedesuvozo/edit?html,output
The important two css classes:
.Example--outer-container {
display: flex;
flex-direction: row;
}
.Example-three-column-inner-container {
width: 33.333%;
}
Browser support: https://caniuse.com/#feat=flexboxShort 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.
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.
Easy, something like Winforms or one of its successors like whatever they make Win10 apps in. Even the new Unity3D UI stuff is better.
Do you mean the new UI stuff that's based on CSS?
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.
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.
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.
I can comment on this from my experience. I studied Computer Science, and my passion for UI development led me to switch to product design after being coding for more than 10 years. I design with code too, and I did many prototypes using different UI frameworks.
But, there are different design activities, and sadly not a single tool is adequate for all.
If you are making decisions about UI layout, visuals, or UI motion working with code may slow you down. Even if you use CSS grids and flex, there is a penalty caused by the lack of direct manipulation and the freedom to try multiple ideas quickly.
To me, the author just wants better refactoring and maintenance tools over the existing visual design tools. It's a little bit disappointing that design tools evolved in many areas, but did a regression in others. For example, more or less in 2008, Microsoft did a tool called Expression Blend. The tool, based on ideas from Bill Buxton, had the goal to maintain a continuity between mocks and the final implementation. You were able to import PSD layers and later convert them to components, or to sketch the UI flow in the tool. I never used it for anything more than simple experiments, but the idea had potential. Even Adobe did a similar project that never saw the light (it was called Adobe Thermo, then Catalyst and it died with Flex).
That’s the interesting thing about being a coder who designs, the tooling on both sides always lets you down at least a little. Having that wider context is worth the disappointment, I think.
One of the fundamentals of art school is learning how to work with the characteristics of your medium.
The purpose of a screwdriver isn't to make working with screws more accessible, it's to make it possible and convenient. The purpose of power drill isn't to be more accessible than a screwdriver - it's to enable working faster and easier with screws, and to enable working with screws and materials for which using a screwdriver isn't feasible.
This brushes my primary annoyance about modern software - the current trend is to focus on making the basic, entry-level tasks accessible, at the expense of tasks that a proficient user might want to perform. The more advanced tasks are not just made more difficult - they're often made impossible.
The tool isn't the screwdriver alone, it's the screwdriver and the screw, which allow for easier fastening than, say, advanced woodworking joinery. A powered screwdriver also allows non-trained people to get closer to the productivity of a trained professional.
What are some examples of that annoyance in modern software?
The best coders I've ever worked with understood the hardware
The hardware engineers I've ever worked with understood the physics
The physicists I've ever worked for understood the math...
At some point you just gotta say "I need better tools"
In general a broad perspective is beneficial to a designer because they deal with the holistic reality and need to apply it to a somewhat fuzzy solution.
To compete with others thats more than enough and tools have very little to do with it.
>Sounds like the author wants his tools to be as fully featured as the code that will embody the resultant design. In that case I would recommend learning more code instead of relying on a proxy that will never be as flexible
Which is precisely an argument by turtles.
An alternative way to view this: the output of your work in your field will almost always be priced and used outside of that field. The more you know about how your work will be used, the more context you have to evaluate whether or not you're doing things right. Given how human cognition works, having extreme tunnel vision is actually suboptimal, compared to being somewhat proficient in things around your particular specialty.
Nothing in this article conflicts with the idea that a UX designer knowing how to implement their designs in code would be a benefit.
I don't see a problem with the author (and others like myself) wanting the tools to be more capable.
Have you developed a design system? Do you understand the context of this domain? I don't ask this to be rude, but the issues that the author mention are some of the key problems with the state of being able to maintain design systems.
It's more about the ability to efficiently generate and document the design intent and iterate on the design. This then needs communicated to the full team, whether that's stakeholders or the team implementing the design.
I think the authors suggestions are very good and valid.
I've noticed this as well. The best designer I ever worked with was obviously great at design, but also great at css, she rocked! I've seen this more than once, but would estimate less than 10% of designers I've worked with actually took the time to learn css.
I think more designers should learn css, and more engineers should learn at least some basics of design. Then everyone could communicate better and get more done faster.