{"id":339,"date":"2012-05-22T19:56:13","date_gmt":"2012-05-22T19:56:13","guid":{"rendered":"http:\/\/wanchilau.com\/?p=339"},"modified":"2015-03-05T01:55:46","modified_gmt":"2015-03-05T01:55:46","slug":"ios-programming-staying-current","status":"publish","type":"post","link":"http:\/\/rainydaymagazine.com\/wp\/2012\/05\/22\/ios-programming-staying-current\/","title":{"rendered":"iOS Programming: Staying Current"},"content":{"rendered":"<p><span class=\"style28\">Writing\u00a0\u00a0<\/span>software is simple, but it is not easy. It is simple because the computer will do what you tell it to do. The difficulty comes from needing to make the instructions very precise. There is no tolerance for ambiguity, neither when writing the software nor when the software instructions are executed, be they on a cell phone, tablet, or whatever. To do it well, it takes both creativity and discipline, qualities which are often in conflict with each other. However, that is not the half of it.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/i0.wp.com\/www.rainydaymagazine.com\/RDM2012\/RainyDayEngineering\/HeadFirst\/iPhone\/AppleSampleCode.jpg?resize=619%2C464\" alt=\"\" width=\"619\" height=\"464\" \/><!--more--><\/p>\n<p>One of the challenging aspects of\u00a0<a href=\"http:\/\/www.rainydaymagazine.com\/RDM2011\/Home\/September\/Week4\/RDMHomeSep2311.htm#iPhoneDevSetup\">software development<\/a>\u00a0is staying current with the changes in the API and libraries provided by vendors like Apple, Microsoft, and others. The software writing tools get over-hauled. Sometimes, even the programming language itself gets updated. It is like trying to create a painting while the brushes, the paints, and even the techniques are constantly changing.<\/p>\n<p>We have been\u00a0<a href=\"http:\/\/www.rainydaymagazine.com\/RDM2010\/Home\/August\/Week1\/RDMHomeAug030.htm#iPhonePrototypingSoftware\">playing with<\/a>\u00a0Apple&#8217;s iPhone SDK for\u00a0<a href=\"http:\/\/www.rainydaymagazine.com\/RDM2008\/Home\/March\/RDMHomeMar08W2.htm#iPhoneSDKInstall\">the past few years<\/a>. Apple, more than any other vendor, has stepped up to provide both tools and online training for those interested in learning how to write software that will run on its devices. With each new release of the iOS toolkit, there are brand-new functions and changes to some older ones. Code which used to work may sometimes need to be updated to be compliant with the new way of doing things. Apple&#8217;s free developer resources make it much easier to stay current.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/i0.wp.com\/www.rainydaymagazine.com\/RDM2012\/RainyDayEngineering\/HeadFirst\/iPhone\/Books.jpg?resize=599%2C199\" alt=\"\" usemap=\"#Map257\" width=\"599\" height=\"199\" border=\"0\" \/><\/p>\n<p>There is also a lot of third-party resources available. Those interested can find a huge selection of primers, guides, and cookbooks on how to program. We have found the ones from O&#8217;Reilly to be the best of the lot. It is one of the reasons why we have quite the collection of their titles. The ones we like best from O&#8217;Reilly are from the Head First series.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.rainydaymagazine.com\/RDM2012\/RainyDayEngineering\/HeadFirst\/iPhone\/ProgrammingSetupBig.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/i0.wp.com\/www.rainydaymagazine.com\/RDM2012\/RainyDayEngineering\/HeadFirst\/iPhone\/ProgrammingSetup.jpg?resize=599%2C398\" alt=\"\" width=\"599\" height=\"398\" \/><\/a><\/p>\n<p>Many programming guides take the step-by-step approach, but the Head First guides do much more than that. The authors of these books are not just imparting information, they are eager to help readers LEARN. They do that by incorporating proven techniques from cognitive science and learning theory (lots of diagrams, conversational tone, multiple ways of saying the same thing) to create a &#8220;multi-sensory learning experience.&#8221; Of course, keeping up with Apple is difficult, even for active publishers such as O&#8217;Reilly. Just when we were working through the\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/1449387829\/?ie=UTF8&amp;tag=rainydaymagaz-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325\" target=\"_blank\">2nd Edition<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.com\/e\/ir?t=rainydaymagaz-20&amp;l=ur2&amp;o=1\" alt=\"\" width=\"1\" height=\"1\" border=\"0\" \/>\u00a0of the Head First guide for iPhone and iPad Development, Apple released iOS 5.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/i0.wp.com\/www.rainydaymagazine.com\/RDM2012\/RainyDayEngineering\/HeadFirst\/iPhone\/Page.jpg?resize=599%2C199\" alt=\"\" usemap=\"#Map259\" width=\"599\" height=\"199\" border=\"0\" \/><\/p>\n<p>What does iOS 5 mean for us iPhone developers? From the developer&#8217;s perspective, there are two big changes. First, UI development can now be done even more graphically via a feature call &#8220;storyboarding.&#8221; Instead of creating individual files of the different screens and connecting them via code, Apple now lets you lay out all of the pieces on a big\u00a0<em>.storyboard<\/em>\u00a0file and\u00a0<a href=\"http:\/\/www.rainydaymagazine.com\/RDM2012\/RainyDayEngineering\/HeadFirst\/iPhone\/StoryboardBig.jpg\">connect the views visually<\/a>. The approach makes it much easier to understand the overall flow of the UI logic. The second big change is that Apple has implemented ARC (Automatic Reference Counting) in Xcode 4.2. All the confusing retain\/releases previously required have now been automated.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.rainydaymagazine.com\/RDM2012\/RainyDayEngineering\/HeadFirst\/iPhone\/StoryboardBig.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/i0.wp.com\/www.rainydaymagazine.com\/RDM2012\/RainyDayEngineering\/HeadFirst\/iPhone\/Storyboard.jpg?resize=601%2C382\" alt=\"\" width=\"601\" height=\"382\" \/><\/a><\/p>\n<p>The trick to staying current in software development is to let go of the old ways and embrace the new. No, you don&#8217;t have to use the new Xcode storyboarding feature. Yes, the old way of doing things may still work. However, Apple created this new approach so developers will have to do less work and make fewer mistakes. Why would anyone do it the hard way?<\/p>\n<p>In truth, anyone can learn how to write programs, but not everyone can do it well. The problem may lie more with the teaching tools than with the student. Companies like Apple and authors like the HeadFirst folks are working to change that.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Writing\u00a0\u00a0software is simple, but it is not easy. It is simple because the computer will do what you tell it to do. The difficulty comes from needing to make the instructions very precise. There is no tolerance for ambiguity, neither when writing the software nor when the software instructions are executed, be they on a cell phone, tablet, or whatever. To do it well, it takes both creativity and discipline, qualities which are often in conflict with each other. However, that is not the half of it.<\/p>\n","protected":false},"author":2,"featured_media":745,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_oasis_is_in_workflow":0,"_oasis_original":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[13,3,247,249],"tags":[253,8,2,12,7,5,6,254,256,9,255],"class_list":["post-339","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-environment","category-ios-programming","category-rainydaybusiness","category-rainydayengineering","tag-apple","tag-apps","tag-head-first","tag-ipad-ui-prototyping","tag-iphone-ui-prototyping","tag-oreilly","tag-programming","tag-sdk","tag-storyboard","tag-ui-prototyping","tag-xcode"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rainydaymagazine.com\/wp\/wp-content\/uploads\/2015\/02\/ProgrammingSetupBig.jpg?fit=1029%2C683","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7F1GW-5t","jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/posts\/339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/comments?post=339"}],"version-history":[{"count":1,"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/posts\/339\/revisions"}],"predecessor-version":[{"id":746,"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/posts\/339\/revisions\/746"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/media\/745"}],"wp:attachment":[{"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/media?parent=339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/categories?post=339"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/rainydaymagazine.com\/wp\/wp-json\/wp\/v2\/tags?post=339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}