I think PSD-driven development is inherently broken, and this post explains some of the reasons why. It's not really unique to mobile, I've experienced similar on web apps that attempt to be "drop a PSD, now implement this", although maybe the problems are worse in mobile.<p>I don't really know what the better alternative is, that will meet the social/business/workflow needs that are the reason PSD-driven development happens.<p>Except that it will involve some attempt to find a way to be more 'agile', as compared to the implied waterfall model in "we give you a PSD and you implement it." Ideally, I don't think they'd be giving you "it should look just like this" PSD's at all. They should be giving you wireframes and appropriate assets as assets. But this will end up being 'more expensive' probably, with more hours spent on back-and-forth and iterations, compared to the waterfall ideal of "here, just do this."<p>Good software is very 'expensive' (in terms of professional developer hours). It's why we live in a world of really crappy software.
There's a lot that's slightly off about this (though there is also some good material in here too, and clearly it's coming from a place of frustration based on real projects - perhaps, I suspect, without a huge amount of experience of the grass on the other side...), but one bit that particularly struck me was:<p><i>When a client wants to build a web app, they understand they need to have a good design, build the pretty HTML and CSS, with a server in the backend, and some dev-op to keep the app running.</i><p>Really? Because I'd be glad to introduce you to many of my clients who absolutely do not understand <i>any</i> of that; in fact I had a conversation with a client just two days ago where I explained, patiently and not for the first time, what it was one of my backend developers actually did on a day-to-day basis, and why that sometimes didn't translate into something visible he could actually click on in his browser.<p>Most of my clients really just want a complete solution (often involving design) and they don't know or care at all about HTML, CSS, AWS, or Postgres.
Mobile MVPs done by lone developers on a contract basis should be about getting something palatable and pleasant that works, not drop shadows and exacting transparency effects. Save that for a second version or when you have enough of a budget to get a designer that knows her way around interface builder. Getting too caught up in making a MVP pixel perfect is a cause of failure for both client and developer.
The problem is the waterfall approach of client->designer->developer. If the first line of code is written after there's a supposedly "finished" Photoshop or Sketch document, the project is doomed to run into all the fundamental design issues explained in this post.<p>Yet often that seems like the only way to the client, who thinks that they can't afford a programmer in the "planning" or "design" phase... Even though it leads to an unpredictable budget explosion in the latter stages.<p>One solution is to have better tools for app design. Instead of PSDs and handwaving static Invision clickthroughs, there should be a tool that allows an app prototype to be modelled using real code and native mobile concepts like navigation controllers and list views.<p>I've worked on such a tool, Neonto:
<a href="http://neonto.com" rel="nofollow">http://neonto.com</a><p>It's not perfect (the code generation can never match a veteran programmer's style), but for prototypes often good enough - and much more powerful than clickthroughs.<p>Btw, Neonto is considering switching to React Native for the generated projects. If someone's interested in that, give a shout to hello@neonto.com and voice your opinion!
As a mobile dev, this article kind of irritates me. It seems like the author is trying to shift his responsibilities to the client or designer. Here some tips:<p>- wireframe first. At least on a whiteboard. Build the interface with stock or ugly controls from that, iterate the interaction. Only once that is done, send ugly screenshots to the designer to beautify.<p>- I believe that every dev should have photoshop, and know the basics. You shouldn't need a 24 hour turnaround to cut an asset or fix a small issue.<p>- actually talk to the designer. Don't make the client be a middleman. When you feel a screen is done, review it with design first. Try for pixel-perfect accuracy, but don't get too hung up on it, often a five minute chat can suggest alternatives that save hours of work.<p>- always decide what screens will work in landscape, or portrait, or both, up front. This is easy to forget and sometimes difficult to retrofit.<p>- not the only approach but one that works for me, pick one device (screen size) to be the "hero" device for a project, and build for that first, then go back and and adapt for the rest. This works better if its a more constrained device, as adapting to a larger/faster device is easier. I often use a 5c as the target.
> <i>In a web app, you’re either the frontend or backend developer. In a mobile app, you’re the app developer.</i><p>Maybe if you're part of a bigger team. But if you're working on an app of the same scale as this hypothetical mobile app - where you have a single client who has a designer - you're pretty likely to be doing all of the front-end stuff as well.
> <i>Mobile development = frontend development + backend development + dev-op.</i><p>Sorry no, being a mobile developer does not mean doing backend and devops any more than being a web developer does. In some cases you might have to do it, and in some cases you might not. But there's nothing inherently easier about the web.<p>Furthermore I find the whining about different iPhone vs iPad layout differences to be quite ignorant of everything except iOS development. There is no more controlled environment than iOS. Try developing for Android some time. And don't get me started on cross-browser, cross-platform responsive web design.<p>The bottom line is no development is easy, it's all a mess everywhere you look. It looks pretty bad when you try to extrapolate the warts from your particular corner of the dev world into an assertion that other developers have it easier. Doing good development work is just plain hard, even when working with equal share stakeholders and with none of the trust and workflow issues associated with clients.
The difficulty of converting a Photoshop design to an actual UI reminds me of this passage from Paul Graham's essay "The Power of the Marginal" [1]:<p>> For example, it recently emerged that the famous glass artist Dale Chihuly hasn't actually blown glass for 27 years. He has assistants do the work for him. But one of the most valuable sources of ideas in the visual arts is the resistance of the medium. That's why oil paintings look so different from watercolors. In principle you could make any mark in any medium; in practice the medium steers you. And if you're no longer doing the work yourself, you stop learning from this.<p>In the case of mobile app development, it's probably best to let the constraints and idioms of the platform, which the developer knows best, steer the design. So maybe part of the solution, contrary to what the article suggests, is to further collapse roles; maybe the developer should do the design, too.<p>[1]: <a href="http://paulgraham.com/marginal.html" rel="nofollow">http://paulgraham.com/marginal.html</a>
The first half of the post applies to web development too. Most designers design for the 'best case' scenario and leave out all the tiny details like error conditions, interactions, too much/little content, various screen sizes and touch vs mouse interactions (hover especially).<p>Let's face it, nowadays unless you are designing a content site there is an immense amount of work needed to handle all the complexities of designing a web or mobile app. This is why things like Bootstrap or other frameworks are so popular, they allow a designer or developer to cover 90% of those scenarios and focus on the important things.
Oh man this felt awfully familiar. I am so happy I left iOS consulting work and instead built in house apps so I don't have to deal with stupid customers and designer detached from reality.<p>In retrospect I think they should leave a bit more design decision to developers and let them throw up a minimum design first. A design which works well within the constraints and technologies of the platform. Then designer can come with input on how to change that.<p>It is astonishing how much faster you can build an app if you don't have to care about getting the UI pixel perfect according to some designers pipe dream of what it should look like.<p>Customers should know this, because I don't think they have any idea of how expensive it is to insist on very particular details of how the UI looks. If you give more freedom and choices in how the design should be to the developer you can get an app for a fraction of the price which is easier to maintain.
Oh how the grass is always greener on the other side of the fence! As a web developer, I'm used to hearing about how mobile app development is so much better because there's a sane layout system and you don't need to deal with crufty old CSS. And how it's so easy to get native functionality, and the UI is easy to make run at the coveted 60FPS, etc.<p>Nice to be reminded that as lucky as us developers are in the grand scheme of things, we still have hard jobs and changing your tools or platform won't solve all your problems but rather just gives you different problems :)
Part of me wants to grab these clients and shake them while yelling "You are a software company, why are you farming out your core competency!?!?" These problems arise because the client thinks that the software portion of their business is just a tiny part of the picture. If the only thing your clients use to do business with you is your mobile app, then you are a software company. Full stop.<p>Why the hell did they hire a designer? They need a product manager. And why are they building the entire solution in one shot? Build it in small pieces and iterate.
I think it's a bit naive if you think that Web Developers are cleanly split into Frontend and Backend. Most of the developers I know, like myself, are Fullstack. According to the Stack Overflow developer survey[1] there's more Fullstack developers than any other kind of developer.<p>It just bothers me that the implication I got from your article was: "This is why mobile is tougher than Web." You might think: "Alright but web doesn't deal with some stuff mobile does, like offline data sync", but web does deal with stuff that mobile doesn't have to consider, like making sure your application is secure from XSS attacks, making sure all your backend endpoints prevent Overposting attacks, and other security considerations.<p>And if you are freelance, usually web also has to handle devops. Although sometimes the client does have their own setup.<p>Web also deals with considerations you don't in Mobile in general. Web is also very prone to failure if you don't plan carefully.<p>On the other hand the part that mentions that you should break your development into tasks is absolutely spot on. When I take a job I plan how I'm going to do the entire application in my head, writing it down in the process, then and only should do I give an estimate. It might be the single most important practice in my job as a consultant.<p>[1]: <a href="http://stackoverflow.com/research/developer-survey-2016" rel="nofollow">http://stackoverflow.com/research/developer-survey-2016</a>
Just like the designer would benefit from knowing how code works, so would a designer benefit from know how a developer works.<p>The biggest issue isn't lack of communication but lack of understanding each other.<p>I find it kind of interesting that a developer would even feel a reluctance to understand one of the basic methods used to deliver to them what they need to develop.<p>You are missing out on great opportunity to have an informed opinion, think about alternatives, find potential business ideas from something thats not optimal and in general just have a better and more productive relationship with designers.<p>I at least realized that learning to code as a designer, even just a little bit, both taught me a great deal of how to build things for developers, help them solves problems that might require a different way to think about the technical issue of something and not do stuff that are completely retarded and impossible to do.<p>And so now none of my projects fail unless I want them to.
Replacing "Photoshop" with "Design Resources", really slim and useful article I think. Especially agreed to the "design + dev + dev-ops" responsibilities are mostly neglected by the client and should be described within handshake process as described.
I don't understand the notion that as a mobile developer you have to do the front end and the backend...<p>I just wrote the back-end for an iOS app, I had nothing to do with the front-end and the sole front-end developer had nothing to do with the back-end.<p>We used a simple Rest API. Where is the problem?
no.. that's not why they fail. They fail because the client wants the sky but his budget barely touches the ceiling. Eventually the money runs out and the thing falls flat on its face.
Most fail because clients are lied to. They are shown the high-res print ready Photoshop glossies, and told "yes, you can have this, it will use all these assets. And lots of browser control overriding interactions". Then they try to actually build it, it is slow, uses the whole months bandwidth allowance for the mobile user "my whole 10GB gone? But I only browsed the web..", and will crumble under load.<p>The real problem is letting designers near the web. They were OK on print, well, a lot of printers had problems with the designers as well. Hmm. Maybe it is just the designers.
PSD driven development is still a thing? Ugh. What tools are out there to build the UI scenegraph directly from production assets? (there is Rightware for automotive displays)
The client is unable to understand the technical challenges, while the developer cannot read the client's mind. Not a mystery why the project in story failed.<p>I am more familiar with AndroidStudio than iOS programming, and it just feels like a hackish piece of software. It looks like Eclipse, and the code is Java, but it's really a stripped down version of Java with a lot of hacks and work arounds. It seems like so much time is spent negiotating with the operating system.
Stop slicing PSDs and start writing code.<p>Coding shit from PSDs is like making a car from a drawing a 3 year old made. It's so fucking stupid that only a 3 year old wouldn't realize it's probably the most retarded way to design an app.<p>If your designer knew how to design apps they wouldn't be making PSDs, just like no car designer would substitute photoshop for clay. The only thing Photoshop is appropriate for designing is static images / webpages.
Interesting article for me as I just rolled out an app for a client and a lot of this feels familiar.<p>Firstly I was lucky I didn't have a PSD driven design, but my client demanded a fixed price quote, so I insisted they pay me to do fairly comprehensive spec, including a clickable wireframe prototype, bdd behaviour spec, architecture design, background, requirements, objectives....<p>I went with lo-fi hand drawn pages which I scanned and wired up as a clickable prototype via <a href="https://marvelapp.com/" rel="nofollow">https://marvelapp.com/</a><p>In the end it was fairly successful for me, as the comprehensive spec allowed me to estimate fairly accurately.<p>However I don't think it was the most cost effective outcome for the client. Because of their rigid nature, instead of collaborating through the process (aside from the specification phase of course), I built them exactly what we agree and invoiced them and was paid. However, within a week of the first pilot they had come up with about 100 hours worth of changes they wanted.<p>In the end I spent about 100 hours in the spec / design phase (which I was paid by the hour), 300 hours building the app (which was a fixed price) and now I have about 100 hours of changes to make.<p>If we had worked to a budget rather than a fixed price, then by my estimate I would have spent about 400 hours collaborating and iterating (basically removing about 90% of the time creating and writing a spec) and they would have had an app which they were involved in crafting the whole way through. Basically I think they have blown about 100hours and they have to live with lots of little nuances that they would have otherwise been able to decide upon.
Really great explication of the collapsing of responsibilities of mobile development. Remedies, as always, involve educating the client. Makes sense to me.
If designers could use an interface design tool instead of some photo editing software, then most of the problems go away.<p>Spending time upfront perfecting a piece of art isn't a sensible way to approach design as its all make belief until you've written some code
This is why I'm a "createc".<p>Front to back end. Involved throughout the project process.
Gets the job done. Everyone happy.
Fully managed (and often exceeded) expectations.
><i>As you are about to slice the PNGs...</i><p>You realise that you have failed to communicate <i>your</i> requirements to the client, failed to do due diligence on the requirements and assets before you signed the contract and badly mis-scoped the project based on your imagination of what non domain experts should know about your field of professional endeavour.<p>You are likely to be eaten by a grue.
Im so happy that I never ever in my front-end career had to implement some designers PSDs.<p>The only images I got where mocks with stuff I already implemented but needed some changes...<p>On the other hand, I consider myself a software and usability engineer, maybe giving greater focus to nontechnical aspects of software has safed me from having to do what a designer tells me to...
Or just ask your designer to work @1x in a vector app like Sketch, and export PDF vector images for import into the asset catalog (Scale Factor - Vector Asset).<p><a href="http://useyourloaf.com/blog/creating-scaled-images-with-pdf-vectors/" rel="nofollow">http://useyourloaf.com/blog/creating-scaled-images-with-pdf-...</a><p>-- A designer
For enterprise mobile apps - we are working to address this problem with our docker like container platform with ready pre-built mobile app with a runtime to run your cross platform hybrid web. feel free to ping and I will be happy to share more details.
In our project (actor.im) we successfully separated logic (cross-platform!) and make it work closely with backend team and we cover together all corner cases. Making UI on top of this is very-very easy.
s/mobile/iphone/<p>Same issues exist on the other more popular platform but this article is only about the iPhone so the title is wrong.