Why you should move that button 3px to the left
gv.com
gv.com
Contrast this with the engineering version of this debate where the decision between using foosort and barsort can be decided based on which one results in lower CPU usage. Or a UI element is moved 3px because it allows reducing the depth of the UI widget tree which improves the FPS by X during complex animations. Or that a button's bg shouldn't be #282828 because of the problems with 16-bit color.
The other big problem with quibbling over 3px in Photoshop mocks is that the mocks tend to be designed on high dpi displays using Photoshop or Illustrator which do not need to handle realtime rendering so they use high quality antialiasing and scaling. When the mocks are implemented, the final product is viewed on a multitude of devices with different rendering characteristics. So the 3px change might result in a blurry line because the widget no longer snaps to the pixel grid of the lower resolution device after the system scales the image to handle resolution independence.
So if a designer asks for a 3px change without justification, then the engineer should push back until a good reason is given. There are objective aspects to UI and subjective aspects. Discussing the former is straightforward and the decisions are relatively easy to make. But discussing the latter quickly degenerates into bikeshedding.
The larger point that it lends credibility to your product is mostly overlooked. I have seen in my consulting experience that taking care of small UX flow and info flow issues has led to veritable gains by companies.
Going by the discussion, it seems there is a good opportunity in the space of "engineering-design collaboration" :)
"if a designer is asking you to more "3px", it is to align that element with other stuff on that page."
If they want elements aligned, or snapped to a grid, or whatever - sure, there is justification there. It's when I'm handed design changes with no justification that I get riled.
But yeah, at the end of the day engineers and designers really need to have a few more beers together.
As for PS mocks - stuff is entirely different on the screen. And the 3px difference could have been a dev mistake and the designer is correcting them.
Anyways, designers: just call it design flow lag.
There is a whole class of people who are good at red lining and doing design QA; in a larger company, it might not even be the designer, but the design QA engineer, submitting the bug report.
IMO the job title 'designer' is really void of meaning and should go away, but I'm not holding my breath.
Perpetuating the "designers are fearies and engineers are robots" stereotype doesn't really help in any way
Do you appreciate the irony that you just wrote a whole post about making decisions objectively, in which you have essentially dismissed designers as ignorants who just make arbitrary decisions according to their personal whimsy, based on a series of unsubstantiated claims, out-of-date stereotypes, and straw man arguments that any half-decent designer could have corrected for you in moments?
Why would you think a designer would have no justification for a change beyond “it looks nice”? What would you assume designers don’t understand issues like pixel alignment or designing for multiple devices? Why would you think designers would be raising these issues based on Photoshop mock-ups?
Do you understand that there is actual research underpinning a lot of design theory, demonstrating both how humans respond to different design choices and the fact that those choices can directly and sometimes dramatically affect metrics you care about like conversion and retention rates?
So if a designer asks for a 3px change without justification, then the engineer should push back until a good reason is given.
I wonder how you’d feel if you as a developer were told that every line of code you wanted to change — even those with obvious bugs — could not be touched unless you had previously demonstrated why you expect a measurable benefit to the satisfaction of the business development staff, and that your commit access was going to be revoked and every change would have to be made by bizdev after someone who didn’t know anything about programming decided whether it was justified.
Experience. I've had arbitrary requests made based on Photoshop mocks. I've pushed back against them after showing that the proposed design looks blurry on devices with a low dpi. Or showing that the UI breaks down in edges cases where the text field contains more text than what is shown in the mocks which results in unwanted wrapping. These are issues that can only be understood by someone who knows the implementation details and constraints of the underlying OS that does the final work of rendering the UI rather than relying on the constraints of Photoshop.
Do you understand that there is actual research underpinning a lot of design theory, demonstrating both how humans respond to different design choices and the fact that those choices can directly and sometimes dramatically affect metrics you care about like conversion and retention rates?
Yes. And good UX designers know this research which is why they can quickly justify their choices.
I don't find anything objectionable about this, as long as the designer actually owns the design and has the fortitude and clout within the organization to defend their changes. Design seems to me an art in many respects, so some decisions will come down to a matter of taste in the end. Like any successful artist, the designer then will need the persistence to defend their vision against the meddling of bike-shedders.
I also think @sxp's characterization of the objectivity of engineering decisions leaves too much out. Engineering debates rarely come down to foosort() v. barsort(), where one obviously performs better. More often, they come down to questions like "should we be passing this argument first or last?", "what should these methods be named?", "can this code be extracted into its own module?" -- in other words, how to design the code.
* Conforms to a grid
* Internally consistent padding and margins
* Information sized and arranged hierarchically according to importance
* Proportions conform to the rule of thirds or golden ratio
* Internally consistent UX patterns
(eg cancel buttons might be always red, confirm buttons might be always green)
* Text column widths are not too wide
* Color choice is harmonious (conforms to color wheel rules)
These are the main ones but there are many others. Unfortunately, these kind of classic design principles don't seem to be taught very often these days, instead design courses focus on the mechanics ie how to use Photoshop.A person with that list can't answer you which color the buttons should be, or say, whether a certain button is more like a confirm, info or cancel. They don't tell you how wide is too wide, or whether the hero needs to be above or below this particular content. It's a good starting point, but hardly anyone will be satisfied to be told, "well, the golden ratio is preserved when we make the content area 700 pixels wide" -- again, in the end these discussions always come down to trusting a person's taste.
I've worked with plenty of properly trained designers, whatever is supposed to be proper.
For example, a few studies have been performed under controlled conditions to try to determine how typographic details like line length affect measurable performance levels such as reading speed and retention. There are many rules of thumb floating around — “2.5 alphabets”, “8–10 words”, and the like — and it actually does turn out that most of them are reasonable. It also turns out to be unwise to consider line length in isolation, that a wider range of lengths can be used before serious degradation is widely observed than some of the old folklore would suggest, and that having lines too short can also cause serious degradation in reading performance, among other interesting results.
Another good example is the consistency of user interface elements. Numerous usability tests, from formal studies to simple A/B tests on web sites, support the theory that violating a user’s expectations tends to have negative effects, sometimes severe ones. Of course you always have to be careful not to assume too much about what your users’ expectations might be, but things like using green for cancel and red for confirm almost invariably exhibit poor performance with audiences who are used to the opposite convention.
On the other hand, if someone tells you the Golden Ratio is important for keeping some sort of page area proportionate, it’s a good bet that this person should be hunted down and locked away by the maths police. Using precise ratios really does matter in some contexts: if you look at the ratio between the width and height of a piece of A4 paper, it is aiming for exactly √2, which is why two A4 sheets fit neatly into one A3 sheet and so on up and down the scale. However, someone who is advocating use of the Golden Ratio for width/height proportions usually just likes the look of dimensions that are proportioned roughly 5:3, and probably has no hard data to support choosing that over 3:2, 16:9, 1:1, or any other ratio that fits with the rest of the design.
Likewise, if someone advocates picking a colour scheme based on where certain hues fall on a wheel, consider that hue represents only one dimension. The most common colour models for human vision use three, and in practice if you fix the others (typically saturation and lightness) and just choose evenly spaced and/or opposing hues around a colour wheel, the results are rarely good. That means much repeated ideas like choosing analogous or complementary colours are, at best, only part of the story. If you’re using a typical colour wheel for computer graphics that has red, green and blue at 120 degree separations and then cyan, magenta and yellow on the 60s, those ideas are even less helpful, because it turns out that by the time the human eye has detected the light and the human brain has interpreted the resulting signals, those colours aren’t really uniformly spaced around the wheel anyway; see the trichromatic vision and opponent process theories, or the early experimental work of Munsell.
In short, there really is robust evidence that some established design principles are worth following, though rarely do minor variations in design cause major variations in performance. However, there are also some dogmatic assumptions in the design world that get passed on as if they are inalienable truths but in reality have little evidence to support them.
Of course, the other side to design is "style", which cannot really be quantified, merely subjectively judged against current trends, the target audience and "taste".
You are right, they often have good reason, and can make the case by explaining that. Of course, they often to not have a good reason beyond spacing, it looks better, it is too crowded, or it is not crowded enough.
But in our culture, especially in development culture, for some reason any decision based on a process in the right hemisphere is valued far less. We call it "subjective" even though it isn't. It's the same processes that every human brain does in much the same way. This is why optical illusions can work. They work much the same way for every person, and the reasons they work are not based on logic. They're based on physical, biological processes in our visual processing systems. It's not a "logical" or "rational" process. It's a visual process.
But if a designer says that spacing is going to cause a problem, it's not valuable input because there is no "logical" reason behind it. That's not logical!
As for the left/right thing, I know that- strictly speaking, there isn't really that much of a left-right separation of concerns in the brain. It doesn't matter for my point though. It's just a metaphor for the easily demonstrable fact that brains have functions other than logic that are just as useful and important to satisfy.
The difference being that the developer makings his own changes as he sees the problem, not asking someone else to make the changes, whereas the designer just asks someone else to make an arbitrary change. If the developer is asking someone else to make a few lines of changes, he better gives a good justification.
I mean, it's division of roles. does the developer want to be a designer too? Does the developer want to justify their choice of algorithms to the designer?
Doesn't this seem one sided to expect the designer to justify every choice, but the developer answers to no-one?
If you are doing the change in HTML/CSS/Javascript or whatever yourself, go right ahead. Just make sure you don't break something else.
Likewise if there's change the developer is asking the designer to make, the developer better makes a good case for it. What if I tell you to remove the color red and blue in your design. Just do it. Don't ask why. You would be annoyed, too. And when you question, I told you, oh well, based on my years of training and experience, color red and blue run slowly in this algorithm.
I think what annoys most people here is that the designer thinks his changes are the most important ones and have to be made. There are millions other things the engineers need to worry about to make the product work. If the database is corrupting, moving 3 pixels to the left is not important. What the engineers asking is the justification for the change so that it can be weighed against other priorities. Isn't that so hard to do?
Client want our application to produce an incorrect file, having forgotten that some bloke in their department is correcting by hand all the incorrect file of the old application.
Manager want you to do a daily timesheet to properly track client billing despite the fact that your team is working full time for a single client.
Client/Manager/Other Developer regularly ask for rubbish reason all the time, why would the Designer be any different ? They may have a good reason this time, just spend 2 min to explain them.
There's no double standards, basically anyone has to justify spending other people's time.
As the engineer, you have been staring at the product for hours at a time and are comfortable with it, perhaps even one with it. The consumer on the other hand is likely going to spend at most a few minutes before making a purchasing decision about it, or simply hitting the back button. Thus, it is important to enchant the user from the get go.
That said, I'm a software engineer with a semi-formal training in user experience and moved from front-end design initially through Zeldman/CSS of 2003 to backend and mobile (and more formal CS concepts in university).
Design matters as much as the code you write. Sadly, driving technical change in either is tougher than it looks. And we won't even get into the misinterpretations possible when people assume something can be done pixel-perfect or was misread as pixel perfect when that wasn't the intent. Working together productively is the soft skill worth developing for both sides of the art/science divide.
To people below who say the designer should make the change him or helself -- as a front-end developer, I say a million times, NO NO NO. Does the designer know how to use git and commit properly? Do they know on what branch? Understand the deployment schedule? Perform browser testing? Are they part of code reviews? Do they understand whether that rule is used by just that component, or just that page, or if it will affect code elsewhere?
I think it's great when designers know enough to code the CSS of their own portfolio or blog, and can converse fluently about the concepts. But unless they're true hybrid designer-coders who are participating fully in dev meetings, please DO NOT touch the code. I've seen sites break too many times before, because a designer changed something they didn't understand, and which there was no reason for them to understand anyways. (And to anybody who would say a designer should understand their tools, well it's not like most print designers can operate a printing press either. Design professionals design, and generally other professionals actually implement those designs.)
And to anyone who replies "design has caused real harm to the WWW", sorry buddy, that boat has sailed, and makes as much sense as saying we should expect Rolling Stone magazine to come in a dot-matrix text printout instead of a glossy, attractive magazine. Design is important, period.
Give me a break. That's the default these days. I've yet to met iOS developers or front-end engineers who can't design.
We don't need these photoshop goons anymore.
And it was good.
This is very much worth keeping in mind...
Making something pretty might be good enough for a splash page, but when it comes to actual UI, it just doesn't cut it. I've run into all these problems over and over again with different designers who won't touch or even look at code. Their designs just aren't flexible or nuanced enough to cover all the dynamic aspects of the web. They might look great, but they are often fundamentally broken.
Knowing CSS also helps you create more consistent web experiences. CSS encourages patterns and re-use, and having consistent pages and UI components also lead to better more familiar experiences. I've been given page designs before where every page had slightly different typography or buttons because they were doing everything in photoshop, instead of something that's actually designed for layout, like indesign.
I think all web designers should be able to conceptually do the tasks that are brought up in the article. Things like moving a button a few pixels, or changing colors, and little things like that are easy to do, and can be taught in a few minutes. I'm not talking about writing new CSS, I'm just talking about tweaking existing properties. Subtracting a few pixels from `margin-left` is easy.
Many print designers might not be able to work a printing press, but they still have a concept of how it works, to the point that their terminology like "leading" actually comes from the inner workings of the printing press.
You bring up a great point that it can be much harder to integrate designers into a development environment than it is when they're writing code for a blog or portfolio. Maybe your CSS is messy, and it's hard to find where styles are actually coming from. However, the time needed to do tiny design tweaks is not trivial and adds up. It can easily be worth it to refactor your code in some cases, both for developer sanity and for better collaboration. Also, testing tweaks in chrome's inspector is not a colossal task and can be taught to designers without too much difficulty.
As for keeping the code clean? If they aren't competent enough to contribute directly to the code base, absolutely do not give them access to origin master! Really, nobody should. Once your team goes beyond just a few people, code review is a must for everything, not just designer contributions.
Now git? Git sucks for non developers. Hell, it even sucks for developers too while you're still learning it. But there are ways around it that are user friendly enough for not super technical designers to still be able to contribute and not destroy the code base. If you use GitHub, have them fork the code base, and then they can use the built in editor to make file changes and add commits directly. After that, you click the "pull requests" tab, then it shows you your changes, and you just click "create pull request". Then it goes to a developer who can then test and approve the changes without any danger to the code base. There's a bit of an initial time investment to get someone not very technical to that point, but I think it's worth it.
Also, it's ultimately demeaning and humiliating to have a developer who has his head thinking about tough programming and architectural challenges to have to break out of his flow to change the value `5px` to `2px`. Menial tasks like that are inevitable in a real world code base, but we should be actively trying to get rid of them.
If he doesn't, find one who does. A web-designer who doesn't understand code is like a fashion designer who can't sew.
Except there are successful fashion designers who rarely if at all sew, just like there are successful interactive designers who rarely if at all code.
Do I think knowing how to code typically makes a designer a better designer than others? Yes. Do I think it's always that way? Hell no.
You can have a pure designer who doesn't understand code, but can follow the spec for interfacing with the frontend devs (give them a PSD). Just as those frontend devs might not understand how to best design a database-driven backend, but they can follow the spec for interfacing with it (REST calls through xhr). And those backend devs don't have to know about frontend application frameworks, they can follow the spec for interfacing (REST endpoints).
Again, modularity and separation of concerns.
Being able to communicate is one of the most important skills a designer can have. If engineers don't understand the importance of good design that is your failing, not theirs. Talking about delight and pixel-perfection to the wrong audience just makes you sound like a Jony Ives wanna-be.
Merely asking everyone stops to sprint towards a perfect design shows a lack of empathy towards your team mates. At launch time everyone has features they needed to cut or temporary hacks they never got to fix. Telling team mates the most important thing is to "perfect" a vision they haven't bought in to is not a convincing argument. And viewing their hard work as a "sloppy version of my design" is not likely to win favors either.
The most effective designers I've worked with have been able to create and also sell their design. They can express both the motivation behind their design as well as the importance of implementing it well. They haven't just dictated design from up on high.
Anyway, slightly OT: the screenshot looks like a Google page. Does anyone know which one? I really want to know what difference the 3px makes!
Designers have caused real harm to the WWW. They're clearly not the worst thing about WWW but they're pretty bad.
That being said, when a designer says things like "move this button 3px to the left" they usually mean things like "move this button so its right edge aligns with the right edge of the content below, which got shifted because we added padding-right." So the original request gets implemented as what he _wants_ rather than what he asked for.
Rather than apologize for making a strawman, how about we not make one in the first place? Nobody's talking about dingbat fonts from the 90s - GP is talking about usability today.
> No, but I just checked a few of the sites we made and none break from ctrl+
I'm glad your team has thought ahead, but I can assure you that many have not.
I can't count the number of sites that I've seen that would be completely unusable for people reliant solely on mobile devices (used as primary computing devices in the developing world), for people who rely on screen readers (blind and otherwise disabled people exist too!) - I could go on and on.
The common rebuttal I hear to this is that "the average user doesn't care about this", and the website isn't designed for "edge cases", which always makes me cringe. The wheelchair ramp at your storefront may not be used by your "average" customer, but that doesn't mean you shouldn't have one, even if the law didn't require you to[0].
Amusingly, in many cases, the sites that are the best-suited for a range of devices (desktops, tablets, phones) and clients[1] are the ones that look like they stepped out of the late 1990s.
[0] http://www.adawheelchairramps.com/modular_ramps/ada_modular_...
[1] Take a minute and check if your site works in Lynx. If not, there's a very good chance your site is inaccessible to visually impaired people (yes, Lynx and similar browsers are still used by people with disabilities today!).
Why would either of those things be a problem? Attention to detail is attention to detail at any scale.
It’s true that at scales smaller than anyone would normally notice there can be a difference between a clean optical alignment and a “perfect” mathematical one. This is a challenge that folks like font designers and artists working on icons often have to face. If you zoom in dramatically (say 5x or 10x, not 120%), these details would probably look slightly off.
However, at the kind of scale we’re using for examples here, zooming in will only exaggerate careless flaws like having things misaligned by a pixel or using the same border-radius for nested elements where concentricity of the rounded corners was intended. A well designed page will continue to look clean and tidy at larger scales, and it won’t mysteriously break just because someone zoomed or had different font preferences.
I’m a professional software and web developer, and I currently build web-based user interfaces for a living.
but zooming in on many web pages can easily destroy the design
Sorry, but that’s simply not true if you have any idea at all what you’re doing. The tools to support designs that follow the original intent but are flexible enough not to break just because someone has different default fonts or zoom levels have been around for many years, they still work as well as they ever did, and they are entirely compatible with the more adaptive/responsive designs we often use today.
(e.g. using px's for your base font size instead of em's or %)
These days, it’s more likely to be the other way around IME.
Too many people still rely on received wisdom from the days when browser zooming didn’t adjust the whole page, as all major browsers now do. The original arguments for avoiding px-based font sizes were about allowing users to configure their preferred size in their browser preferences and have web sites respect it instead of overriding it. Today the default font specified by most sites is larger than it used to be (a good thing, up to a point) and if that doesn’t fit the user’s needs then every modern browser will scale it up when the page is zoomed.
Too many people are also making trendy design decisions under the banner of “mobile first” that result in a poor user experience on desktop/laptop systems (or even, ironically, on tablets). Consequently, we get silly things like specifying 30px thin fonts and main page widths/margins as percentages with no other limits, which probably look awesome on the designer’s chosen development device(s) but unfortunately look terrible and can’t be fixed using the usual browser adjustments on much larger and/or smaller screens.
What does this mean?
Then again, this article is from Google Ventures, so maybe they are just using internal design resources.
Part of me empathizes and sees the similarity. Another part of me wants to point out that there is nothing stopping the designer from fixing this themselves. Learn your medium.
There ate plenty of broken corporate cultures out there.
Demonstrate with data that moving that button 3px to the left will increase sales by X% or customer retention by Y% or whatever our business metrics are.
There's a difference between "obsessing over the details" and "tweaking for tweaking's sake". Make sure you're really doing the former and that the particular details you're obsessing over matter measurably.
What frustrate developers/engineers are their code changes need to pass the test immediately. The consequences is immediate. Compare it to design consequences, it seems like an eternity, especially if the design changes never have any test/measure to get passed.
Designer can blame developers when dev cant code their design which is so delightful the sales will improve. But developers cannot blame designer when the sales does not come through from the changes. Sales manager do.
There is test for design and it was called 'split testing'. Unfortunately it is marketers/sales job to come up with the test, not designers.
By these rules, designers should be in sales team instead of product team!
I envy everyone working in natural sciences. Their jobs are immensely challenging, no doubt, but at least they have a clear path forward, more or less. But they are making impressive progress all the time.
Looking at human behaviour is much more challenging (so challenging that hardly anyone has an idea how to do it and most stick with boring unreliable ways that have somewhat kind of worked in the past), fraught with ethical issues, and so on.
Measuring everything is not a realistic goal. Measuring should be done whenever possible and is an awesome tool every designer should be using but it is impossible to employ it for every little change. And it has so far not been possible to develop a general theory of design that would help you decide small things without testing that specific instance of the design.
It's like if you see this in your code:
print 1
print 2
print 3
print 4
print 5
print 6
print 7
Any programmer would refactor that in a heartbeat without thinking too much about the impact or if it really matters.. it's just a plain bad smelly code.For a designer, unaligned things is just as annoying. It's not that much about if other people can see it. Some will "feel" it, some will clearly see it, some won't see it. But it's just smelly wrong.
Yes you could make a point of not tweaking it, but it's faster anyway to fix it rather than discuss it.
I expected the first answer - especially from Google ventures - to be "show them through data / testing the power of getting the details right".
Marissa Meyer's infamous "we once tested 41 shades of blue"(1) was the nexus of Google's design culture in the 2000's, has this changed?
(1) http://www.nytimes.com/2009/03/01/business/01marissa.html?_r...
I sense, though, that the author's tactics for working with teams that don't share his values are half-measures. It reminds me of the large and sad literature on "organizational change" in software development, wherein people trade stories about how to cajole managers into letting them do fragments of good engineering. None of that works very well. The satisfying solution is to be part of an organization that values good engineering in the first place.
Similarly, a designer like the author would be better served by working with–I'm tempted to say better engineers, but that's my bias–engineers who feel the same way that he does about product. These exist; I'd consider myself blessed to collaborate like that.
Unless my personal experience has been wildly unrepresentative, software developers tend as a group to be almost obsessive about getting fine details right. We’re the guys who worry about whether our design will be as easy as possible to maintain in the face of arbitrary future requirements or whether using some clever data structure would have given 0.07% better performance. We know, rationally, that sometimes our work is good enough and that we need to move on to other useful things, yet still there is a little voice in the back of our heads telling us we should have done better.
If I were to pick one other group who tend to exhibit the same trait, it would be designers. There ought to be a natural camaraderie here that makes it easy for little details to get done right. If that’s not the default outcome, and probably something that people in management and sales regularly have to balance with pressure to ship, the first question should be why.
Designers are not in a good position to appreciate the trade offs. It's very easy for a designer to think 'this infelicity decreases delight, and fixing it involves just moving this thing to there'. This is probably an excellent spot of a real design issue, but that isn't the only thing that determines whether the work should get done or not.
I have no solutions, but problems like this are generally because of an insufficient appreciation of the other professions challenges, and if you're working in an environment with skilled practitioners of both disciplines, more communication is likely to fix it.
Here are some suggestions that might help designers talk to developers: Never use the word 'just' when talking to developers, frequently apparently simple things have huge ramifications and just as a designers specialty is understanding how the little things create a full experience, a developers specialty is understanding how little changes affect other things in the full system. Talk to them about the effect you're aiming for, rather than just the change itself - if the change is trivial, the worry is that you're not respecting their time, but if you convey that the trivial change will have a large specific effect then they will understand and may be able to do other things proactively to help you achieve your effect. Show that you care about more abstract values such as 'maintainability'; the ability to add features quickly in the future and having a low bug count are both massively beneficial to the user experience. Where you can, show that your fixes are not merely matters of opinion but are based on empirical evidence, good developers respect evidence. Get involved early in the process and talk regularly to the people implementing the design - show that you care about their opinion, but educate them in seeing things from another viewpoint too.
As a developer, you are probably used to having a discussion with the person who reported a bug for technical issues. Do the same for design issues - even if it's just 'move this button three pixels', talk to them about it, find out why it's important, find out if they really mean that it needs to align with some other element. If you have a legitimate reason to not want to do it, explain the problem - you might be able to work out a better solution together.
Sometimes that is true, and that is so whether you’re talking about changing a design or changing the underlying implementation, and whether you are talking about web design/development or software development more generally.
Having said that, if a designer can’t request and a developer can’t implement trivial changes that really are as simple as shifting something by 3px, most of the times that means at least one of the following is true:
1. The person who implemented the previous version wasn’t very good.
2. The person who implemented the previous version was pressured to take short cuts in order to hit time/money targets and produced work that wasn’t very good.
3. There is some more general problem with the development process that means a designer requesting a trivial change and a developer then making it are expensive when they shouldn’t be.
Obviously there could be exceptions where that 3px change has much wider implications for the overall layout, but I don’t think those cases are really what any of us are talking about here.
It's absolutely true that moving a button 3px should be trivial, but it's also true that things are often not as they should be.
Things like "grab me before you check this in" and "we need a design fix-it day" are indicators that this problem has a high communications cost between the designers and engineers who have to implement those designs. Companies who observe symptoms like this should consider hiring a designer/engineer instead of having those two separate people. Yes, the combined person will be more expensive but they will just do the same work in a fraction of the time.
I would add to that the reason I’m wary of shipping an unpolished product as early as possible with the idea of refining it later: you only get one chance to make a first impression.
To use an overused example, the iPhone was unfinished in terms of features but what was there was incredibly polished.
Usually these sorts of requests come from mediocre designers who feel professionally threatened by a rapidly evolving scene and then feel the need to create a sort fake value for their role by insisting on such things. Very often such behaviour will come along with the sentiments expressed in OP's article, some sort of implied idea that they have the sole understanding of aesthetic value or what can be considered "delightful".
> Usually these sorts of requests come from mediocre designers who feel professionally threatened by a rapidly evolving scene and then feel the need to create a sort fake value for their role by insisting on such things.
This is such an immature comment I don't even know how to respond. A designer that was so deferential to developer to not sweat pixel alignment would simply not even get hired in the design studio I've worked with.
I just responded to the point you were making in a polite manner, without calling you immature or calling your professional experience into question. Now do you fancy having a go?
> But my point is that the design details that should be obsessed over come way before the traditional pixel pushing session at the end of the job. Things like consistent, simple and really robust visual relationships between components and typography across devices and viewport sizes. In my experience this is where good designers spend their energies - and if its done well pixel pushing should not be required.
Pixel pushing is ALWAYS required at some point; it is unavoidable given our current technology. A designer cannot magically come up with a generic responsive design because developers just can't make that happen (through no fault of their own). Take for example icon design: it is well known that vector graphics are quite limited and bitmap icons must be generated and manually red lined for various resolutions. That is work the designer (or production specialist) does. Similarly, size-independent layouts are also a pipe dream, not because the designer is incapable, but the frameworks are! Hence, we are stuck optimizing layouts and pixel alignments for multiple sizes manually.
tl;dr "consistent, simple and really robust visual relationships between components and typography across devices and viewport sizes" is very often not workable in the real world for any non-trivial design.
Hackernews is surprisingly quite anti-designer in posting sentiment.
> You made your point with an ad hominem on a whole profession of designers who care about pixel alignments
Nope, at no point did I ever criticise designers who care about pixel alignments. I criticised designers who place too much value on pixel pushing at the end of a project - for me it's often a red flag.
Admittedly where an approach involving "consistent, simple and really robust visual relationships between components and typography across devices and viewport sizes" works best are for projects more towards the web app end of the spectrum, I will concede that point, but it doesn't mean the design has to be trivial.
Yes.
> I'm pretty sure only a commenter has the agency to be immature
The commentator has agency, but by their human nature are complex enough that their individual actions - be they mature, immature, or whatever else - are rarely adequate to judge the commentator as a whole.
The most mature among us still has agency to make immature comments. The most immature among us still has agency to make mature comments. Labeling the act is not labeling the actor.
> I criticised designers who place too much value on pixel pushing at the end of a project - for me it's often a red flag.
A lot of the bugs discovered during design QA involve pixel alignment issues. That is one of the main reason why we have design QA. Frankly, if something worse comes out of that (like a bigger interaction design flaw), then there are serious problems that jeopardize the project and somebody in dev or design has royally screwed up.
> works best are for projects more towards the web app end of the spectrum, I will concede that point, but it doesn't mean the design has to be trivial.
Does it really work for web? Even for web, better designs are often stuck with 2 or 3 layouts to manually tune.
Furthermore, the exact pixel dimensions you create in photoshop rarely translate to the browser due to screen size differences, resolutions, etc. It's much, much more useful for designers to tell me something that describes the relationship they have to each other than the exact dimensions (e.g, "these elements should line up on the right" rather than "make divs 253px"). Obviously for things like spacing there's some element of eyeballing until it feels "right", but you can and should be working with design before stuff goes out to get those right.
So yeah, it's frustrating as a programmer to go through these nitpicky details. But keep in mind it's frustrating because you didn't do your job of implementing what was specified. So maybe don't complain about it in a way that sounds like you refuse to do your job.
Let me help. Here are a few pieces of irrefutable truths:
- Any developer who doesn't see, or care, about attention to visual details is a bad member of the team.
- priorities. Of course big bugs are more important. Why would you even mention that.
- Good designers have their set of priorities. A good developer understands that, and doesn't say mind numbing things like 'don't waste my time'.
- Will all visual enhancements increase conversion rates? No. Does that mean you're free to be sloppy? No.
- At the end of the day, the balance between perfect code and perfect visual design is up to the product owner. Discussion about what's more important is pointless. It all matters.
Now that my product is launched and fully functional I've been able to to back and polish things as I have time. This really makes me feel a lot better about the product. If I feel users are having a bad experience, it's frustrating to me and I can't get it out of my head until it's fixed. I don't have the resources to make everything perfect, but every day it gets a little bit better.
I don't have a design or tech background, so I always thought I was just doing things wrong (maybe still I am). This makes me feel a bit better about how I work.
And Yes. Yes. The difference that the 3px makes is incredible. So do get yourself that extra 26" IPS monitor with extra 1920 x 1200 pixels.
I will kindly warn you though, that I do have some reservations about mentioned 'Apple glossy pixels', as although I'm currently wasting time writing this on a pixel-perfect glossy MacBook Air, nothing frustrates me more as are the reflections on that perfect glossy mirror. Which I can see right now. Or the inconsistent <home>/<end>, <command>, <control>, <fn> keys, when I'm actually working [if you need to spend significant amounts of time jumping between Mac/Linux and working in a command line, you will understand]. Or inability to connect two monitors to a MacBook Pro. Or how slow is the GCC on the virtual machine on that MacBook Pro with puny 16Gb of RAM. So do take the advice of the designer, but also keep in mind that all that glitters is not necessarily gold.
Fortunately xcode allows you to customize those keys which has made code editing a lot more pleasant.
It is that cringing feeling and a moment of hesitation that one has when pressing on these home/end (and ctrl/fn/command/alt/option/control/arrow left/arrow right) keys.
Attention to details is fantastic, but the mark of the best designer is one who ships. It is in fact the mark of the best artist who is pixel perfect. This is not saying that you shouldn't be fixating on the details - but don't let it interfere with the client's goals of actually being out there.
When a product is close to launch, I become paranoid. I do not want to do any changes, unless critical. There will not be time for another round of testing/regression testing. We have even whole process for that.
He is talking about team moving on other projects, which means he talks about time very close to launch.
It is great when the designer is perfectionist. There is also a time for that and that is NOT close to launch. You absolutely should come up with these changes while the project is far from launch so we can time for fixing them.
You should absolutely NOT suddenly come up with tons of tiny little changes close to release. One of those tiny little changes may break something important and we will have no time to find out.
Every time you request changes instead of making them yourself, you are taking away from the time they can spend delivering improvements in their area of expertise, executable code.
That point is central to the post and yet not really followed IMO. Costly changes to the UX should be justified in objective terms, e.g. consistency, color or style matching, differenciation, focus improvement, branding, readability... Not a "it feels better", or "it's delightful" or "I'm a creative person, I know what's right" (<- if it's his/her personnal project this one is OK)
In order to turn a design into correct CSS, the size and position of each element needs to be measured precisely. If the Photoshop-using designer can't or won't do this themselves, and send through clearly specified requirements, it falls to devs who probably aren't Photoshop experts, don't know what the designer was thinking, and might not even have Photoshop.
A nice side effect of having clear requirements is that everyone in the team can easily refer back to them to spot design bugs, not just the designer.
IMO it really isn't worth the time though.
My front end UIs are limited to bootstrap - it works :) - but if one/two/three button[s] are not aligned the same as all the others - I will focus on that rather than the data. My train of thought is gone.
What, you want somebody to do it for you?
anyway, there is also "good enough" and most likely 3px wont matter any more than refactoring a perfectly working class into a perfectly working class with perfect code...
'Yet we’re at the mercy of our teams. We can design beautiful, intricate, delightful details — but we can’t build, test, and deploy them all.'
No shit, so how about you stop being one of those lazy-ass photoshop goons who play fucking color-the-button on dribble all day long and actually learn to code your own fucking interface, either in Cocoa, JS, CSS or whatever.
This ain't the 80's no more. Software Engineers that work on front-facing stuff can and have learned design. Not just graphical design but even interaction design and designing slick user experiences.
Though I can't speak for all platforms, most Web & iOS developers I've met can do all that photoshop pixel-perfection bullshit _AND_ code the interface.
Which makes me hard to think why even have these photoshop-cowboys.
'We can design beautiful, intricate, delightful details'
The .psd file or your design ideas isn't worth anything. Fuck you if you call yourself a designer and can't work on the final medium.
EDIT: Pardon the tone.
The truth is that a designer who spends 100% of his time doing design will definitely be better at design than a designer who spends 50% time designing and 50% time developing. These are two very different skill sets (even though their fundamentals may be closer).
Anyway, a good designer's decision to move something 3px to the left should be respected (because he knows better - he's a good designer). And moving a button 3px to the left shouldn't be a problem for any self-respecting developer.
An engineer can design their design as they go along and iterate on it.
Recently I've been doing my iOS design through SCSS and it helps having sizes, gradients and colors as variables, fonts as mixins and the ability to change them at runtime. Does that count as designing or engineering?
Your truth is not the truth, it's more like bullshit. I don't specifically know what the truth is - but I do know that I'd pick an engineer that can design over a designer 10/10 times. Regardless of your 'truth'.
The problem is that engineers are not very good at UI design. Both from UX and aesthetic standpoints designers are capable of making a better product. A good designer will give a consistently better result than a good engineer in terms of usability, UX, aesthetics and modularity.
Except design is different. As a developer, once you have worked with some PSD efforts a few times and then worked with real dynamic content then worked with a real client to get the thing to actually convert sales, then worked with the client stats you have got a good grasp of when something is right on the design front. Plus you can open the css and do something about it. Or you can open up some stuff on the server side or put in some hack with javascript to get the usability to what it should be.
Designers are completely out of the loop after go live, they have done their 'lorem ipsum' stuff. Proficiency at UX comes from delivering the deliverables, testing, testing and testing. Listening to the client and the customers. It does not come from a few static designs.
I have never heard of a designer wanting access to the css to make that 3px change. They are welcome to it. They would make my day if they wanted to do that stuff. They do design for the web and the css is really over to them if they want to do it. The problem is that they would have to learn what a border is, what a margin is and what padding is. It is not difficult stuff.
The whole point of CSS is that the presentation is a separate thing to the content. Any developer would be happy to churn out the content blocks and sensible markup and hand it over to one of these PSD experts for them to get exactly to their 3px requirements. But in the real world it does not happen. Developers can dive in and fix something at silly o clock on a Sunday, but would anyone ever call a designer at such times even if it was a UX issue that was the problem?
Obviously there are some fantastic designers out there - allegedly - but, in general, designers don't do the hard stuff or even bother to work with live content. Far too many of them produce static nonsense in PSD format - a trade that should have been pronounced dead the nanosecond the iphone came out. They also perpetuate this myth that all developers are totally retarded when it comes to anything to do with aesthetics. Yet it is the developers that implement design, learning along the way. Rarely if ever is it the other way around, and, should a designer dare to do that they will get clumped in as a 'front end developer' and have some retarded PSDs foisted on them by some manager that thinks only designers can have any input whatsoever regarding UX/UI design.
How often do you think a developer tests something? A given page can be tested 100's of times. Along the way 'this checkbox might not be needed' or 'this dialogue box makes no sense' or 'this process is tedious' gets discovered. The guys with their PSDs just do not have that insight.
Most designers do not use photoshop these days; its all Illustrator vector format for anything but touch up. There are still some pixel junkies left, but these are mostly programmers pretending to be poor designers.
> Designers are completely out of the loop after go live, they have done their 'lorem ipsum' stuff.
Only in a failing company that doesn't have real designers or doesn't know how to manage designers.
> Proficiency at UX comes from delivering the deliverables, testing, testing and testing. Listening to the client and the customers. It does not come from a few static designs.
So you are saying designers are bad at UX because they don't conform to your narrow minded idea of what designers are?
Although I completely agree that PSD is a terrible format for web design. I myself have been using Indesign and try to insist on designers using it when I develop.
You see the same thing on the flip side of the coin with frontend engineers who make the effort to learn about typography, color, emotion, etc. Broader skillsets produce better software.
Related - moving a button 3px to the left shouldn't be a problem for any self-respecting designer, either.
That's exactly the kind of thinking that developers abhore. Imagine that the whole interface is built on top of a planned framework that follows strict rules and conventions. This button is following the exact spacing and dimensions implemented in the framework, nevertheless the designer's static mockup is different for some reason (i.e. designed in photoshop).
Now, moving this specific button 3px to the left could be as easy as a `margin-left: -3px` or some other simple line of code, but that is a hack/code smell that will be met with contempt from everyone who looks at it in the future, a maintenance burden, and is deviating from the established standards created in collaboration with the designers themselves...
Other possible scenarios are interpolation mismatches, rendering differences between browsers, padding/borders unaccounted for in the original design, dynamic content that by chance nearly aligns to other element, etc etc. Very rarely is the case that the developer simply wrote 6px instead of 3px by mistake.
This happens way, way too often, and the resistance offered by developers is completely understandable.
Yep, that's a compromise. But if it makes the product better overall, it must be done. If the designer says so, I believe them -- and if I say that a designer's request would lead to a significant setback for our production schedule, they believe me. It's not the matter of designer/developer interaction, it's the matter of product value.
I too abhor such things, but when a designer asks for it, I do "position: relative; left: 3px;". This is exactly what relative positioning was made for, and it makes the developer's intent obvious.
Anyway, one-off hacks like that every full moon are not an issue to most developers, but you'll usually see they come in a constant trickle; after experiencing that for a couple years a strong emotional response naturally develops :)
It's the developer's responisbility to estimate how much work a particular task requires. If it's too much work for too little benefit, no sane manager/designer would insist on that 3px move.
:o
Not arrogant at all. Jeez.
If you mean beautiful mockups than will win a contract with a client and that's all, perhaps your 100% photoshop person will be the best suited.
If you mean building an interface acknowledging harmony of the UX, the user and clients needs, the medium, the strengths and weaknesses of the platform it will be built onto, the project budget and the maintenance afterwards, a 50% person will be thousand times more valuable.
> moving a button 3px to the left
I think it's a stereotype of the request the lay man doesn't get but can cause a project to lose hours or days of dev if the request just goes through. If 3px from where your button is is another component, just imagine that component also being bind to specific size and placement rules (or like, it's actually not your component but some other library's one), and moving that button 3px might mean rebuilding the whole screen.
I sometimes design too and must say, programming is harder -- it's more intellectually demanding, less rewarding and on average more frustrating. That's why I value programmers' work more.
TL;DR: Good designers who create new or unique works are different from designers who follow the trends and make similar/copy-cat designs. Just as a programmer who uses pre-existing software is different from someone who is building one from scratch.
Both designs and programmers work should be valued when it's good.
What did not help was that those people had "print design" backgrounds, my bosses loved the rendered (hard) designs, and not having any design or development knowledge themselves, these sorts of ludicrous standards were somehow becoming the norm.
So we ended up spending as much time trying to render some goddamn rounded corner with a gradient for all browsers than we did implementing actual functionality, generally causing us to cut corners all around (no pun intended)...
In my opinion, a good designer should know the limitations of the tools according to context and resources. As far as I know, you never hear of car designers asking the engineers to somehow find enough space for the engine, or an architect telling you that the plumber will have to somehow figure out where to put the pipes in his 36.3cm thick walls.
This is 2014 and I don't think there's a place for single-skill design queens any longer. As a developer I have to learn a new language pretty much every 6 months, and generally speaking new technologies far more often. So surely, the argument that "true" designers should not have to learn CSS (or related) is moot and let's be honest, arrogant.
To me, it's very much like the idea that politics or philosophy by themselves are vacuous. The world isn't waiting for your design like it's a god-send, you're making the design because you were asked to, by real people with real needs, all of whom, designer included, have to put food on the table.
A good designer will understand the limitations of the platform they are designing for. My wife designs for S40 feature phones with plenty of limitations. There is plenty of back and forth between development and design to ensure that the design works with the limitations of the software and hardware (though devs often push back too soon).
Every time. Every page.
Their designs will become more practical quickly, or the library needed to support their vision will organically grow. But they need to be in the room with real consequences for their PSDs.
In my experience, you can have designers who know the web and you can have graphic designers who don't have a clue about the web, yet decide they want to be "web" designers.
The latter seem to pop up more frequently these days and I would agree it is frustrating, time consuming and incredibly worthless. Worst yet, are graphic design firms trying to get into the web and use your company as their guinea pig. Again, completely worthless.
As such, I've taken quite a bit of time to learn design myself so I have at least some authority to call bullshit on stuff they try to pull and head them off at the pass. It this point, it's been my only defense and has been somewhat successful in not allowing these types to poison the well so to speak.
I cut my teeth as a print designer and the same old complaints were there then. The designer wants an 8 page gatefold as a single page can't possibly be expected to bear the weight of their genius. Nothing less than spot varnish and gold foil will do, costs and timeframe so be dammed. The main difference being, back then when something went to print that was the end of the deign process. The web has made designers greedy and lazy. I honestly can not remember the last time I was handed a finished psd. Designer like to state as fact that they can't be expected to finish a design without first seeing a half baked idea of something built for their amusement first. To this I say: if Einstein can postulate the theory of relativity by imagining himself atop a photon travelling away from a star at the speed of light, then it's not unreasonable for a designer to imagine what the site will "feel like" with parallax scrolling.
I love design, and rather than whinge and moan about how everyone else didn't care, I learnt code. Articles like the one linked to here reak of self entitlement and laziness.
I know what you're saying. But it reminds me that I would have loved to make a website with Jan Tschichold, Paul Rand, or so many other graphic designers who never even knew the web. (I'm sure they would also be interested in learning the details of the medium, even if they didn't want to code for it.)
I wonder what the difference would be if this was posted on a designer version of hackernews.
The problem with your comment is you assume everyone can dabble in everything. When you work at a big co you are hired generally to do one thing, and that's it. Designers don't touch code. Developers don't touch designs. So while Sue may be able to do CSS, JS, Cocoa but isn't allowed anymore then Bob isn't allow to open up photoshop and start "playing color the fucking button on dibbble all day long".
How is it unreasonable to assume that a designer should dabble in web development? That's hardly 'everything' and it's highly relevant to their work and goals. Frankly it's remarkable to me that web designers can still get jobs without taking the time to acquire an in-depth knowledge of the engineering stack they're designing for, even if they don't work with it on a day-to-day basis.
Obviously you have strong designers and weak designers. The strong designers are focused on the user experience and providing a consistent interface that has a high degree of fit and finish.
Users have a low tolerance for mistakes and seeing a couple things off by a pixel or two can make a product look immature and can take way from all the hard work that was spent building it.
* For the record, while this person obviously seems talented, I really dislike how the site jarringly starts shifting the content you're reading over to the side a second after load. If he wants to write about tiny little design details, I'd argue that's one of the most annoying things that he's missed.