And to what extent?
I think that iOS app designers should learn Swift and XCode for a few reasons:
Designers can learn and use iOS terminology when they communicate with iOS developers. An "input text field" in HTML CSS is a "text field" in iOS. The word in the navigation bar in an iOS app is called the "Navigation Bar Title", not a header title.
Designers' understandings of XCode as a tool will help them make smarter design decisions. When designers understand the tool in which their designs are implemented, they become more aware of its technical requirements, of the information architecture that the tool supports, etc.
Designers can become more observant and better at their job. When you begin to tinker in iOS, you become more attuned to how things and move because you see your static assets become realized. When you upload your icons and see that what you see in your iOS simulator is not identical to what you see in your Photoshop mockup, you investigate ways of improving your own process, and thus, your skills as a designer.
In short: learn XCode, Swift, and native iOS design if you are a designer!
Here is Apple's Human Interface Guidelines: https://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/index.html#//apple_ref/doc/uid/TP40006556-CH66-SW1
I’d also suggest reading this guide to the core concepts of building an app by Apple. If paragraphs or even pages are too confusing and alien, just skip them and keep reading. You’ll seriously get a lot out of it anyway.
As more and more designers collaborate with developers early on in product development, learning to code becomes more valuable. At the very least, learning enough code to build prototypes.
The reverse is also true. An engineer's knowledge of design becomes more valuable as well.
This all comes down to teaching and collaboration. If designers teach engineers who want to learn and vice versa, the world will be a better place and we will all build cooler products.
Sounds like designers want to learn.
The next question is how? You can read apple documents all day but the best way to learn is by opening Xcode and start writing some code!
Swift playgrounds are a cool, interactive way to learn. Apple even created a tutorial with an interactive playground: http://tinyurl.com/mk8gvb6
Should: yes. Will: probably not. There is literally a hundred things I should learn as a designer, but only a limited time to do so.
I seem to have the minority opinion here, but I don't think it is necessary to learn a programming language to be a great app designer.
Unless you want to make your own apps, I really don't see any benefit in spending the time to learn a programming language that you won't be using on a regular basis.
I think most designers' time is better spent comprehending the Apple Human Interface Guidelines, learning best practices, working on design process, exploring the app marketplace, etc.
Would you prefer it if your developers knew more about design as well? I kind of feel that even if designers knew just how to prototype in Xcode, they would have better conversations with developers as to what they want.
Yes! This is the question I always reply with when people ask if designers should learn to code. It usually gets a pause and then a good discussion, sometimes hostility, sometimes absolute confusion.
Understanding each other's work and constraints is the key to bridge building and better work. At the same time, knowing that not everyone can, or should do it all, and that these specialties do have differences, also makes a healthy working style.
I've found sharing knowledge typically helps with the design and development workflow; when the developers I work with know about design or my work process, they typically have the confidence to make design decisions when implementing that I might not have enumerated in the comp or when the scope of the project shifts. Likewise, it's when developers give feedback on any blind spots.
Should web designers learn HTML and web technologies in general? (Yes, at least a little bit.)
There is a massive difference in learning Swift or Objective-c compared to HTML and CSS.
Obviously, and I'm not saying one should be an expert, but knowing the basics of the system for which you're designing is a massive help.
It may seem that way to someone who’s spent years doing web development. But I’ve introduced more than one native mobile app developer to web development, and what I’ve learned is that although there’s a bunch of (helpful) conceptual overlap, the scope of what you need to learn looks at least as daunting from the other side.
For example, on iOS and Android there’s often a “best” way to do something. On the web side of the tracks it’s typical for there to be a bunch of ways to solve a similar problem with no obvious “best” option, and choices can be paralyzing.
Basically, web development looks like a clusterf#@k from the perspective of many mobile app developers. It’s more intimidating than a web technologies expert may remember.
As long as understanding the job of the developers doesn't make you take shortcuts so their job will be easier. Just keep that in mind.
It feels like a big difference that rarely comes up in this kind of discussion is a difference between 'learning to code' and 'learning how code works'. Having some understanding of how web and native apps work can actually go a very long way. Pushing the answer needle all the way into learning a new profession to qualify for your old one feels like it makes a necessity out of something that is only going to work for some people.
But learning how digital stuff works, that's much more within reach for many designers. Telling them they need to learn to be as good as a dev to be a designer leaves many good designers behind.
Partially my reason for even asking the question is just what you've brought up here; I'm a designer with a deep background in rails. Is it necessary to REALLY learn iOS development if I understand, principally, how code works.
I haven’t used Rails but it’s MVC, so that’s a great advantage you have all that experience. There’s probably two things you could learn for understanding iOS development.
The first is the frameworks. Swift is to Ruby what Cocoa Touch is to Rails, so as has been said: learning an overview of the pieces, like UI elements and the basic picture of how MVC is used in Cocoa Touch may be helpful. The sister guides to the HIG of how an app works would be a valuable thing you could read without having to get too involved; it’s just reading and your Rails background would help you understand the concepts.
Even if you just breeze through this and if you get stuck just continue reading: https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/AppDevelopmentProcess.html#//apple_ref/doc/uid/TP40011343-CH4-SW1
The other is using the Tools, like Xcode, Objective-C, and Swift. You could learn some of these to assist in Interface Builder (especially getting a feel for the new iOS 8 responsive stuff), understanding a Objective-C header with properties, action methods, and what often gets subclassed or set as a delegate, and building from source and testing on a device yourself if you haven’t already.
I agree it is helpful that developers to learn to think like a designer more too. I’ve more experience with the Mac’s Cocoa than Cocoa Touch, they are similar; the object-oriented style and basic way of how Cocoa Touch is structured in pieces that try to get closer to the basic concepts of what is being pieced together. The classes are the most logical way their creators could find to represent something, like navigated screens or pressable buttons or lists of items. Obviously as a designer you know these concepts, but understanding them back to front so to speak can really make the mental model clearest to work with. Just as designing is more than just visuals, coding is more than just walls of text, so if both designer and developer can grow that shared understanding and considerations that each side faces then that will make communication better.
This is just a long ramble... I guess it’s like with web development. If a designer only knows Photoshop but doesn’t understand the concept that there’s a stylesheet file that is shared between pages then that’s a big hindrance. Even just the basic way the browser has to download all this stuff, often in a certain order, until the final design is displayed is key. Understanding the basics of CSS is also a big leap. You don’t need to know what every attribute does and every special trick to get something from learning it. And even just understanding the concepts of CSS classes and IDs with nesting and inheiriting attributes can help you think in another way about the structure of a page design. It’s an extra way of thinking and insight that helps you become better at your job of designing!
Thanks for the detailed response and generally a great breakdown of how all the pieces fit together.
I hope it made sense! Basically my point is if you can understand how the core concepts of user interface design are handled in the Cocoa Touch APIs, then you will have a good understanding of what makes up iOS development. Just because you have coding experience doesn’t mean you can avoid that, in the same way knowing Ruby doesn’t mean you know how Rails works. That document I linked to has a great overview of the idioms.
This is a two way street. Every time someone brings up the designer needs to learn how to code for any platform. I ask if their developers know how to design.
This year I finally made the resolution to learn a programming language… I've never coded before and started with Objective-C and Xcode since it fits most specifically to my current profession.
It has been very difficult, but an amazing learning experience and I would highly recommend it to any experienced mobile designer.
Right on. Have you worked with Swift since learning Obj C?
Very little. From what I know about Swift so far with reference to developing iOS apps is that it still requires understanding the underlying frameworks that are all written in objective-c because it will be quite some time before everything is ported over... it also seems very easy to learn and I don't think it will take much time to get into the new syntax.
Yup. blah blah blah usual arguments about designers needing to know the mediums the work in blah blah blah, but also - it's fun! learning is fun! new things are fun!
if I ever say I don't want or need to learn something, that will be the day I retire.
Should "webdesigners" learn HTML/CSS in general ?
Yes, absolutely. To design for a medium, you need to know that medium. Learn the constraints. You don't have to be an expert by any means, but being able to use the correct language and being able to troubleshoot with developers will make a better product.
Not Swift necessarily, but they should understand the UI guidelines, what is UIKit, what are the standard controls and to what extent can be/makes sense to customize them, and when it makes sense to create custom controls (almost never!). Toying a bit with XCode's UI designer and storyboards will also help.
I'm an iOS dev that did the reverse: I learnt as much as I could about design, and that gives me a lot of advantage when talking to designers.
But I've also had to work with designers coming from the flat-still-world of paper, and they are a MAJOR PAIN you know where. Not understanding the digital medium is a major roadblock. I've had to use my (poor) design skills to fix their messes. From designs coming in final, noneditable formats, in CMYK colorspaces, buttons without state variants,...
Designers coming from digital (mainly web) are much better to work with, even if they don't quite understand mobile, you can get them up-to-date much faster. They understand, at the very least, what a pixel is. You can ask them for an hex color list.
It sure is nice to know at least the basics if you're working with iOS developers.
To be a good designer I think you need to be aware of the mechanics of your medium.
Agreed. But to what extent? One of my greatest concerns as a designer who can code is that I've often a blind spot: I design what I know I can build.
Yep, this resonates with me for sure.
My personal rule of thumb is to know as much as I feel like I need to know to understand how the architecture behind something might effect the actual user.
I've often a blind spot: I design what I know I can build.
I find that designers who don't code at all often have the opposite problem: designing things that can't be built or don't make sense to build.
Maybe this is where a strong culture of positive and constructive collaboration in our field is an important investment.
Also, I wonder, if you choose to design things you know you can build, do you feel that your core design is lacking an important component or an innovative solution? Or is it just lacking pizazz?
I have the same concerns as well but I also don't want to be "that" designer who designs layouts and UI that either is not possible, too confusing, or not worth the trouble to implement over default UI kit. So I'm not sure what's the right solution to this. But I do agree, learning even a little bit will help. I am learning Swift but that's primarily bcoz I want to build some apps that would be super useful to me.
Interestingly, from what I understand from a friend internally is that most of the designers at Apple design the iOS interface are entirely non-technical.
That is very interesting. But I'd be VERY interested to know how closely they work with the developers and how many iterations there are on their designs as a result of discussions with developers.
I am not sure about the design/programmer relationships, but Apple has these marathon monday meetings where all project managers sit together and review the entire company to see if teams can collaborate or reuse work. That's how they are able to stay so consistent. I think that's also were a lot of creative ideas originate.
Wow - I didn't know that. Would love to do something like that at my company.
I can believe that. It feels to me like Jony Ives never spent much time in Xcode. If he had to work with it, he'd probably make it a priority to redesign it.
Compared to a program with a wicked workflow like Sketch, Xcode is counterintuitive and actually somewhat hostile to newbies. The inconsistencies between Mac and iOs development in the UI are pretty glaring.
I learned both Xcode and Visual Studio on Windows for a project were were building iOs, Android, Mac, and Windows apps and I have to admit that Visual Studio is a little easier to get into than Xcode. For a Mac zealot like me that's a pretty sad thing to admit.
If you want to get something out of Xcode immediately without learning to program, you can pop open the object library and drag items to the main ViewController. Looking in detail at the standard elements for sizing, spacing, and layout guidelines, will make the handoff between design and engineering a lot more seamless. Apple did put a lot thought into those items that we can all learn from. Once you know which elements are easily wired up, you can speed up the build process quite a bit.
Maybe you don't need to learn perfect syntax, but to be able to speak in the language of the Cocoa framework is priceless. It makes working with engineers so much easier, in addition to giving you more credibility with your designs.
yes, its 2014.
yes, a willingness to learn is a must lol.
Is it really that simple? Probably not.
a willingness to learn is that simple, yes.
So let's say you're a designer employed at an agency. You work 40hrs a week, and you have PMs that fill that time up. Sometimes you work a bit more. You have a family, you have other stuff going on.
Learning to code if it's not a natural inclination is a big effort, and it's hard to make the time for that. --> But not knowing doesn't make you a bad designer. It means you may have more trouble getting your designs built. <--
I think it's important to know how digital stuff works if you're going to design for it, but let's not pretend it's a simple step.
Wait- how does a willingness to learn obj-c/swift define your design abilities?
Come on man, I mean it was just a suggestion.
I guess I'm saying that being willing to learn is one thing, but learning to code takes more than will: it takes time that a lot of people don't have, but that doesn't make them any less a designer.
When you answered yes it's 2014, it sounds like you're saying that a designer who isn't interested in learning those languages is behind or obsolete. That's where I was connecting ability to code with perception of value as a designer. The answer didn't really start as a suggestion, so I read it as an absolute.
my days of posting on DN are coming to a close.... nevermind,
You're right, brb learning obj-c, be back in three years.