48 comments

  • Lisa SyLisa Sy, 6 years ago (edited 6 years ago )

    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

    18 points
    • Patrick SmithPatrick Smith, 6 years ago (edited 6 years ago )

      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.

      3 points
    • Josh BerlinJosh Berlin, 6 years ago

      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.

      1 point
    • Josh BerlinJosh Berlin, 6 years ago

      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

      1 point
  • Jeff Smith, 6 years ago

    THE Xcode.

    8 points
  • Darth BaneDarth Bane, almost 6 years ago

    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.

    3 points
  • louie solomonlouie solomon, almost 6 years ago

    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.

    3 points
  • Ryan LeaseRyan Lease, almost 6 years ago

    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.

    3 points
    • Todd SielingTodd Sieling, almost 6 years ago

      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.

      2 points
      • Jeff SmithJeff Smith, almost 6 years ago

        +1

        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.

        0 points
  • Calum SmithCalum Smith, almost 6 years ago

    Should web designers learn HTML and web technologies in general? (Yes, at least a little bit.)

    3 points
    • Bram DevriesBram Devries, almost 6 years ago

      There is a massive difference in learning Swift or Objective-c compared to HTML and CSS.

      5 points
      • Calum SmithCalum Smith, almost 6 years ago

        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.

        2 points
      • Charles WiltgenCharles Wiltgen, almost 6 years ago

        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.

        Just to name some of the technologies a web developer should know (and web designers should know about): HTML. CSS. JavaScript. Responsive design. CSS compilers (Sass, LESS). Libraries (jQuery, Zepto). Frameworks (AngularJS, Ember, React). Presentation layer frameworks (Bootstrap, Foundation). Asset optimization tools and techniques. Build process (Grunt, Gulp). Package management (Bower, Jam).

        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.

        0 points
  • Alex MontagueAlex Montague, 6 years ago

    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.

    2 points
  • Todd SielingTodd Sieling, almost 6 years ago

    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.

    2 points
    • Jeff SmithJeff Smith, almost 6 years ago

      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.

      0 points
      • Patrick SmithPatrick Smith, almost 6 years ago (edited almost 6 years ago )

        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!

        4 points
        • Jeff SmithJeff Smith, almost 6 years ago

          Thanks for the detailed response and generally a great breakdown of how all the pieces fit together.

          0 points
          • Patrick SmithPatrick Smith, almost 6 years ago

            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.

            1 point
  • Ryan Hicks, 6 years ago

    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.

    2 points
  • Grant GoldGrant Gold, almost 6 years ago

    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.

    2 points
    • Jeff SmithJeff Smith, almost 6 years ago

      Right on. Have you worked with Swift since learning Obj C?

      0 points
      • Grant GoldGrant Gold, almost 6 years ago

        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.

        1 point
  • Jon GoldJon Gold, 6 years ago

    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.

    1 point
  • Florent AlixFlorent Alix, almost 6 years ago

    Should "webdesigners" learn HTML/CSS in general ?

    0 points
  • Matt FeltenMatt Felten, almost 6 years ago

    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.

    0 points
  • Ramon PocaRamon Poca, almost 6 years ago

    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.

    0 points
  • Nick TassoneNick Tassone, 6 years ago

    It sure is nice to know at least the basics if you're working with iOS developers.

    0 points
  • Carolann Merchant, 6 years ago

    To be a good designer I think you need to be aware of the mechanics of your medium.

    0 points
    • Jeff Smith, 6 years ago

      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.

      0 points
      • Corwin HarrellCorwin Harrell, 6 years ago

        Yep, this resonates with me for sure.

        2 points
      • Carolann Merchant, 6 years ago

        Good point.

        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.

        E.g. a purely RoR app vs a more ajax-y/javascript-y app.

        Re:

        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?

        2 points
      • Bardan Gauchan, 6 years ago

        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.

        0 points
        • Jeff Smith, 6 years ago

          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.

          0 points
          • Carolann Merchant, 6 years ago

            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.

            1 point
            • florian fangohrflorian fangohr, almost 6 years ago

              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.

              1 point
          • florian fangohrflorian fangohr, 6 years ago

            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.

            1 point
  • M HernandezM Hernandez, almost 6 years ago

    Why not?

    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.

    0 points
  • Wesley HainesWesley Haines, almost 6 years ago (edited almost 6 years ago )

    yes, its 2014.

    EDIT:

    yes, a willingness to learn is a must lol.

    0 points
    • Todd SielingTodd Sieling, almost 6 years ago

      Is it really that simple? Probably not.

      2 points
      • Wesley HainesWesley Haines, almost 6 years ago

        a willingness to learn is that simple, yes.

        0 points
        • Todd SielingTodd Sieling, almost 6 years ago

          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.

          1 point
          • Wesley HainesWesley Haines, almost 6 years ago

            Wait- how does a willingness to learn obj-c/swift define your design abilities?

            Come on man, I mean it was just a suggestion.

            0 points
            • Todd SielingTodd Sieling, almost 6 years ago (edited almost 6 years ago )

              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.

              0 points
    • Michael AleoMichael Aleo, almost 6 years ago

      You're right, brb learning obj-c, be back in three years.

      4 points