As I sit in the SFO airport waiting for my flight home to Seattle, I'm starting to come up for air, so to speak, after what has been the biggest series of changes to iOS/Mac developers since I started learning Cocoa.
The vibe at WWDC this year was a healthy mixture of feeling needed and loved on by Apple while feeling overwhelmed by Swift and the addition of all of he new features and APIs added to the Apple platforms. Many of the devs I chatted with this week are excited about swift and learning how to start transposing their existing cocoa knowledge to a new language. But because for most iOS devs, their day-to-day work is on a couple of large apps that won't be migrating to swift anytime soon, Swift is more of a long-term roadmap rather than an immediate call to action.
For me, Brad and the rest of the Code Fellows teachers/students/alumni, Swift has much more immediate implications, since Swift is clearly the path forward for Apple, meaning it should be the language of choice for anyone learning or teaching Cocoa.
I'm thankful to be in a position where learning Swift can be my job for the next month or two, rather than having to try to squeeze in the time to learn a new language in addition to a full-time day job, but regardless of your available bandwidth for learning, here's 3 suggestions for getting the most out of your time devoted to learning swift.
1. Code Slow
If you're a master of the Dvorak keyboard or too tightly coupled to your shortcuts, snippets and muscle memory, try slowing things down, thinking through the goal you're trying to achieve, rather than the code you would typically write in ObjC. A great practical exercise here would be to get in the habit of writing computed properties for any of your model classes.
2. Code Early
This one may vary a bit from person to person, but early in the day (typically right after morning coffee) seems to be when my mind is the sharpest, so if you're planning on setting aside 1-2 hours a day to learn swift, pick the hour or two where you're the most focused and have the fewest number of distractions. Most long-time iOS devs can write something like a delegate protocol or implement a tableview datasource with their eyes closed, but you'll need all the mental focus available to you to effectively learn a new language.
3. Code Smart
Apple didn't spend 4 years and lots of resources building Swift so that you could write code exactly the same way as you would in ObjC, so as you learn Swift, pay close attention to the language features that will save you time and lots of lines of code eventually. It might feel a lot faster to bridge Swift objects to ObjC objects and then do your work with ObjC, but you're here to learn Swift, not to crank out code as fast as possible.
Design patterns, best practices, third party libraries, and lots of changes and fixes from Apple will come eventually, so in the mean time, enjoy the rare experience to learn together, teach each other, and form the patterns and practices that will help the rest of our community.
It's gonna be a great year to be an iOS dev, and if you're just getting started or want to jump start your Swift training, be sure to check out our upcoming ramp-up and dev accelerators for Swift at http://codefellows.com