I’ve been lucky to have the opportunity to work in a bunch of different projects in my years as a developer. In all those projects I also had the opportunity to work with a bunch of different designers. I may be a good developer but to create a good product a good designer is absolutely needed. I think people has different kind of minds, and you need different minds to create a great product.

I’ve known designers that can create the most amazing UI that you can see. That kind of design that when you see it you automatically say: this is amazing! Usually people think that this are the best designers but I tend to disagree.

That quality is valuable, but a lot of people think about designs as static things, forgetting that their design is something that will drive some software. And software is alive, it’s dynamic. This is the biggest flaw that I’ve found in some people. Their designs are beautiful when you look them in Photoshop, but they start breaking apart when somebody starts implementing it.

We need animations. This is the first aspect that designers tend to think about nowadays, which is good, but it’s not the most critical. It’s important to see how things relate or how changes occur, and animations help a lot with that. But again, this is not the critical part of “static designs”.

Software is not a happy flowers world, there are errors that can occur almost in every step. Missing information, connection errors, bad user input… anything can happen. Designs have to take this bad cases into account.

The information is not always beautiful. If you have ever seen designs I’m sure that you know what I’m talking about. Those magnificent pictures of food, modern buildings or amazing landscapes that designers use to represent user generated content. And with that content the design is beautiful. But then, you start using real content from users or clients and the illusion starts breaking apart. This includes texts longer or shorter than expected, and info that the user can enter without limit that breaks things. Not to talk about the shitty pictures that the users take. Users will ruin the amazing design.

Things move. Things have to move. Static designers don’t think if the content will be inside a scrollable area, or if a box will stick at the top when the user scrolls the content. Then when the developer starts asking this kind of questions the ideal world breaks again.

It has to work with a bunch of different screens. As iOS developers we have lived a gold era, we could make pixel perfect designs, but that is not always posible. Our world has a lot of different screens and when you take a static design from Photoshop and put it in a small screen, or in a bigger screen, boom!

And who thinks about all those people that have some difficulties, for example colour-blinded people. Yes, your designs have to also look good for those people and they need the same affordances that the rest of us. We always say that accessibility is something that we as developers have to do without requiring any special permission, in the same way that we write unit tests. But that has limits, sometimes we need designers to take this accessibility issues into account.

And finally, the design is not the most important thing. Yes, it has too look good and beautiful, nobody wants to use something awful, but at the end of the day the users want to consume their content or create something amazing. Your design has to help them with that, not be an obstacle. So sometimes is better to remove elements, even if that means that your amazing illustration can not be on everyones face.

As I already mentioned I’m not a designer, at all, but this few things are what I would recommend any designer to think about.

And if while reading this you think this stuff is obvious then I’m sure that the developers that work with you are really happy. They should be grateful to you.