19. April 2015
I’m going to WWDC 2015! Odds were in my favour, apparently, and after two years of not having a sponsor and a year of sucking at lotteries, I have finally been given the chance to see Moscone Center at the biggest Apple event of the year.
You might question my excitement, quoting the near-instant availability of session videos and live-streaming of the keynote. You might question the extra value of being there in person, while seeing the 2 x 12 hours on the plane and thousands of pounds in expenses. All of these are valid points and I will attempt to answer why it _is_ worth it for me (this is by no means an exhaustive answer of why everyone should go to WWDC, only why I am excited about going).
In order to paint an accurate picture of my passion for WWDC, I must start at the beginning.
My career as a software engineer started only a couple of years ago, in August 2011, when I landed my first iOS development gig. Some ten months prior, I wrote my first line of code in the Programming 1 course, as part of my Cybernetics and Robotics studies at CTU. I had liked computers before I went to uni, sure, but mostly for playing GTA: San Andreas and creating web sites by coding some HTML by hand. No actual programming experience to speak of.
I enjoyed the freedom given to me by programming and I quickly dedicated a huge portion of my time to learning Java to allow me to create a terribly looking iTunes knockoff for my second semester final project. I chose it because I had no idea how to program GUIs, databases or MP3 players. I knew I would have to learn it in this case and as it happens, in the process, one night I realised it was 3am and I had been coding for six hours straight without realizing. Long story short, I was hooked.
When deciding what sort of a job I would look for back in Spring 2011, I was naturally inclined to go for Java-based roles. However those didn’t excite me. I couldn’t see myself dedicating all my time to maintaining some company’s huge, old codebase without having a chance to make something tangible. Something I could see grow. I also needed a job that would allow me to work part time during the semester and that’s much harder to come by in large companies. Fast forward a couple of weeks and my sister got an iPad 2. That device was the first iOS device I had laid my hands on and it enchanted me. Not having used a Mac or an iPhone before, all of the qualities we take for granted today were right there in front of my eyes, for the first time. The simplicity, the apps, the way the device felt, inviting you to use it intuitively, promising to work for you and aid you instead of enraging you, like the rest of the “mobile” landscape of the time. The smoothness, oh god, the web page scrolling smoothness was stunning. Its magical gyroscope, adding another dimension of interaction, all together with beautifully, richly designed apps. All of these feelings are still inside of me, even though the rest of the world eventually copied most of what awed me back then. When I used the device for the first time, I felt excited about doing anything with it. Editing a contact? Please, let _me_ do it! Looking up train schedules? Yeah, I’ll do it! Even though the iPad was my sister’s, I didn’t want to let it go.
Let’s pause right here. I can see your eyes rolling when you’re reading the above description of my first experience with the iPad. But please, don’t judge it from today’s perspective, from 2015, when all of these things are commonplace, because it’s been copied by all of Apple’s competitors. Try to put yourself back to when you used an iOS device for the first time and find the raw emotions you had back then.
Ok, unpause. After my technological orgasm, I knew I had to get involved with this thing myself. Research of how to develop for the iPad followed and I immediately shifted the focus of my job-searching to iOS development gigs. Luckily, one company invited me for an interview, so I bought a book called “Development for iPhone 4” or something and read it in three days, then, not having written a single line of Objective-C, because I didn’t have a Mac, I went to the interview. And I got the job. Bought a Mac the same day and filled the remaining days before my starting date with studying Xcode and everything I could about Objective-C (in my opinion, if you’re starting right now, watch the Stanford iOS Development course. The best resource for newcomers, hands down.)
Having a month before my second year of uni, I used every single day to read articles, learn new APIs and write small projects outside of work, while trying to study and contribute to a large iOS project at work. Anyone I could find who knew anything about iOS development I annoyed with questions; any new article about iOS dev I read immediately. Starting from all of Apple’s documentation on the language and frameworks I could find, all the way to just reading everything on StackOverflow tagged with #iOS that I had time for. I had an ever increasing appetite for knowledge, and the more I learned, the more I learned how much I still didn’t know. And this is something I have never lost. I am only satisfied if I can look at the code I wrote yesterday and already know how to improve it today.
It took me weeks before I finally discovered the WWDC session videos. At first, I found them slow and boring, because they were just too advanced. After a couple of weeks of learning more from other sources, I found them less slow and boring. This way it went on until I truly started taking advantage of them. And then it happened. That point of every developer’s career. I had a question that StackOverflow or Google couldn’t answer. I wished to be able to ask an Apple engineer. (And there are plenty of those at WWDC.)
Every June since then, I am physically in pain for not being at WWDC in person. I impatiently await videos from sessions to appear on the WWDC website, and I still end up yelling at my MacBook’s screen at the end of each video questions that nobody can hear. It teases me, I’m being given partial information, without being able to ask for the full mental model of how each feature works. And that’s not to say the sessions are incomplete, they are amazingly prepared and presented, but I almost always end up one or two answers short of fully grasping the topic, thus having a complete model in my head, only which could allow me to get closure, file it and discard it from the foreground of my mind.
Another huge factor is fellow developers. I read many developers’ and Apple bloggers’ sites daily and for a while now, I also listen to hours of podcasts every day. Listening to the hosts share their WWDC experiences is, even though informative, also uncomfortable, due to my desire to be there as well. Since I’ve moved to London last year, I have been actively working on meeting people from our community at meetups, which has greatly helped me to widen my horizons and challenge many of the things I thought I knew. Learning from them and discussing our little world of iOS (and OS X) development is an extremely valuable part of my life as an engineer. And when it comes to it, having the option of pinging someone who works at Facebook or Twitter to get a quick answer is just something you don’t have without putting yourself out there.
The third pillar of my perception of WWDC’s greatness is the session themselves. Sitting in a room and listening to a person present what they built in the last couple of months, a piece of technology that will hopefully help you make a living for years to come, is a completely different experience than sitting alone at home, staring at the slides. With all those juicy distractions at my fingertips and the familiar environment around me, I can’t usually get as much out of it. A change of scenery can radically boost my focus. I guess it’s the part of university I always enjoyed (in interesting classes) - sitting in a room, with the teacher presenting and I’m doing nothing but trying to absorb the extremely dense topic. Apple’s engineers have an hour or so to present all you need to know about their new technology in a way that lets you start using it right after you walk out of the session. Use it to your advantage.
I guess it comes down to the three main reasons of why it’s worth it for me to go to WWDC in person: direct contact with the engineers building the technologies we end up using; the opportunity to meet in person the people I follow and admire in our community and last, but not least the environment of an university - extreme focus, no distractions, no excuses to not dedicate your brain solely to the lecture.
Even if you don’t agree with the points I made, believe me when I say that going to WWDC has been my dream since I started learning Objective-C. And having the opportunity to go at least once in my life is something I’m extremely grateful for and I will do my best to get the most out of it.
//Edit - Further reading on the experience of going to WWDC