Wednesday, 17 February, 2016 UTC


Summary

In 2013, I was in San Francisco for the first time during the week of WWDC. I didn’t have a ticket, but I was still able to attend a bunch of WWDC-related events that were happening that week. One of the events that I attended was the annual CocoaPods meetup, where Mattt Thompson, the creator of NSHipster, AFNetworking, and a bunch of other cool things, gave a talk titled Third Wave Objective-C. In his talk Mattt went over the history of Objective-C, starting with the NeXTSTEP days (1983) when the first wave of Objective-C developers started the community, followed by the OS X days when the second wave of developers joined the community, and last but not least, iOS.
When iOS became available as a platform for developers to build on, it was like a gold rush. (Remember when one could make a lot of money by making a flashlight app?) Developers from all sorts of communities, like Ruby, Python, and JavaScript started writing iOS apps and became part of the Objective-C community as part of the third-wave. Mattt highlighted that a lot of the ideas and methodologies introduced in Objective-C are from borrowed ideas from these different language communities. It’s no coincidence that dependency managers like CocoaPods are very similar to RubyGems and Bundler. Even testing frameworks like Specta and Expecta are inspired by a Ruby testing framework called RSpec.
A little over a year ago, Swift was announced. That makes us a part of the first wave of Swift, and I think that’s really exciting.
It’s natural in the first wave of something for us to write code like we used to, just using the syntax of our new language. That’s at least how I started writing Swift. I mostly just applied familiar patterns from my Objective-C days but wrote it in Swift instead. As my team and I started writing more Swift and started embracing it a little more though, we found that it changes our code, our architecture, and even the process around which we build our apps.
This talk explores three things. First, how does Swift affect what kind of code we write and the way we architect our code? Second, looking a little beyond the code, how does Swift change how we write our code? And last but not least, how does Swift affect why we do things the way we do?
I hope you enjoy the talk!