It costs $1600 USD for a WWDC ticket – if you can even win the lottery for the chance to secure one. From New Zealand it’s about $2000+ NZD (~$1700 USD) for return flights to San Francisco. Add on the over inflated hotel room charge for the week which even for the minimum of five days will set you back at very least another $1500 USD again (unless you stay in the dodgier parts of San Francisco.)
So, what’s the point? With all the sessions online same day, the sessions themselves are no longer reason enough. So the standard response tends to be the networking and the parties, which you can mostly experience just by being in San Francisco the week of WWDC anyway.
There’s the experience, and I tend to be a big advocate for the whole ‘experience’, immersing yourself for a week in code, the thing you’re passionate about with 5999 other equally passionate and likeminded people. That passion that makes people queue up at the crack of dawn for the keynote. But that’s a blog post I’ve written already, almost exactly a year ago.
After last year, I’d convinced myself that there was no point for me to go again, but sure enough, as soon as the announcements were made, it flipped a switch in me and I was trying really hard to convince myself that I did not ‘need’ to go.
So what caused that? Best as I could understand my own insanity, it was about what WWDC has come to represent in my life in the past three years: my journey through programming and as my last year as a student, why not apply one more time for a scholarship?
I’ve has a lot of discussions both at WWDC and since I’ve gotten back, both with developers and non developers and this post summaries my thoughts on WWDC 2014. My thoughts leading up to it were in the NZ Herald a few days before I left for the US. I knew there would be awesome things in the pipeline, I was pretty sure we’d be getting a new version of iOS and OS X and was pretty sure there wouldn’t be any hardware released. No new iDevices anyway. All the announcements are online so I won’t go over those, but these are my own reflections of what the announcements meant in the bigger scheme of things and for my own work.
“I think a developer would look like a geek.”
The opening words of the WWDC 2014 Keynote presentation. The first few words were drowned out by the audience’s cheering which was set off by the lights going down and when we realised that no one was coming on stage yet, the cheering came to a halt.
The first word I heard after the cheering stopped was ‘geek’. It seemed an interesting note to start the keynote on but the video set the scene for the conference which was to be the idea of making programming more accessible, starting by demystifying who a programmer is. Of course there’s the stereotype of the geek, but the reality is much broader than that now.
The announcements in the keynote were completely software based: no new hardware, no new toys. It made me sad thinking about non-developers watching who would be thinking ‘wow, what a terrible announcement, there was no new hardware.’ But developers rejoyced: so many new frameworks and features to play with. Usually there wouldn’t be any mention of APIs until the following ‘Platforms State of the Union’ session, but there was Tim Cook on stage explaining what an ‘SDK’ is.
“…and for those of you that are not developers, the SDK is a Software Development Kit that enables developers to make all of the amazing apps.”
Then the completely unexpected blow at the end: Swift. For that whole week,the ice breaker for any conversation was to be:
So, what do you think of Swift?
The initial knee jerk reaction to the announcement was ‘oh no, change, we have to learn something new!’ That was my first reaction anyway.
Going to the sessions on it and getting more familiar with, it definitely seems to be well written, easy to use and just as powerful as obj-c. The documentation and resources are excellent and the enthusiasm for it grew over the week.
Though Apple had a few goals with the new language, one of the things they’ve done is lowered the barrier of entry to programming. “Swift is friendly to new programmers” it states in their iBook, “The Swift Programming Language.” When I was starting out learning programming, I found that every book I picked up began with some variant of “This book assumes you already have an understanding of [other language].” (I ignored thees and continued undeterred).
With the rampaging growth of mobile, with it has come increasing numbers of people from non programming backgrounds who are interested in learning how to make apps (such as myself, four years ago) and this language makes it easier. New people starting out will learn in Swift, not Objective-C, while existing developers can choose to learn Swift or continue with Objective-C. For now anyway. It is expected that in the not so distant future, Objective-C will be deprecated.
In the demo code from many sessions they were still using Objective-C. In sessions about existing frameworks they used Objective-C, in sessions about new iOS 8 frameworks, they used Swift
I’m not saying this is a good or a bad thing that they’re made an ‘easier’ language.
However, in my personal opinion: by abstracting away the complexity of programming, you start to lose an understanding of fundamental programming concepts. I speak from from own my experience starting iOS development from a zero programming background (and disregarding the disclaimers in the books. I learned a lot from demo code, tutorials, videos on YouTube narrated by people who sounded like they were 12 years old, hacking things together, Stack Overflow etc. I could make apps and they worked but I lacked a lot of the underlying fundamental computer science concepts, many of which I’ve only started learning this year and the change was incredible: I am writing better quality and more efficient code quicker and it was easier to trouble shoot when things went wrong. This was my fourth time at WWDC and I understood so much more this year.
Swift abstracts away the need to know about primitive data types, like ‘what is an int/float/long/string’ etc. when it automatically infers for you when you declare a variable. You could argue this isn’t that important but when Apple brought out the 64bit chip you started getting apps where certain values were off because developers didn’t understand how this could affect values.
In my degree, we get a lot of artists who use languages and platforms with low barrier of entry to make interactive artworks / installations, such as Processing, and I can see Swift with it’s Playground environment becoming another one of these tools. Are these people ‘developers’? I would argue that being able to write code does not make someone a developer
My personal experience this year
I am an introvert (not to be confused with anti-social): after spending the day with 6000 people, I struggle in the evenings to make it out to the parties so for me, I focus my energies on the experience during the day, and this year, it meant going to the labs. We all live in fear of asking the ‘stupid question’, especially when you’re asking programming questions from the engineers who live and breathe (and write) the frameworks and APIs every day.
This WWDC was the first time I had an app that was nearing completion and had questions and bones to pick with the engineers. I spent time in the labs for Multipeer Networking, AirPlay, CoreLocation, Prototyping and even queued for an hour to get an appointment at the UI Design lab (30 minutes 1 on 1 with a designer).
One thing I’m increasingly finding with programming is that just because you can solve a problem from a high level, doesn’t mean it’s as easy to solve it at a programming level. Meaning that you can take a step back and say, “okay, this is logically what I would need to do to achieve the desired outcome or functionality”, but at a code level, the APIs or frameworks might not support that. Those are a lot of the problems I’ve faced with my app and the feedback I got in some of the labs.
Unfortunately as well, sometimes there are bugs in the frameworks themselves and the only feedback that they can give you is ‘yeah we know about those, we’re working on it. There’s some fixes in iOS 8. But there’s also some regressions. File bugs.’
It was a mixed bag of results at the labs, but in a way, even when they couldn’t help me with solving my problems, it felt like I was on the right track to creating something new and unique.
Over on my personal blog, it’s been on my perpetual ‘To Do’ list for a few years now to ‘get an app in the store’ which I haven’t achieved yet, but you know what? ‘Get drivers licence’ was on there for quite a few years too and I got there.
When I started programming, I could make an app that ‘mostly’ worked and did what I wanted but it wasn’t pretty. I lacked the knowledge to really polish and finish it, to hunt down problems and bugs and fix them. I knew how to solve problems from a high level but I couldn’t implement the solutions in code (at that point it was more because I lacked the skills to, rather than the tools themselves). I didn’t release anything because I didn’t have anything that was my baby, nothing that was ‘perfect’, nothing that I was proud to stamp my name on and say ‘I’ve made this, and it is AWESOME’, nothing that I was prepared to support for years to come.
And that’s okay. I know nothing is ever going to be ‘perfect’ and you’d kill yourself trying to reach it. There is the mentality of ‘F*** it, ship it’ , the idea that you can fix things in version 1.1 or 2.0 because it’s so easy to ship updates, but I never got close to even a 1.0. However, the store is full of version 1.0 apps that never made it any further and I can say that many of those didn’t nail it on version 1.0 but I suspect it wasn’t something the developer was really passionate about, it was just a //ToDo they wanted to tick off and say it was done.
When I ship my first app, I know it won’t be a million dollar success overnight (or even at all). I know I won’t have Facebook knocking on my door offering me $3b. Those stories are the exception rather than the rule, and I fear that’s what a lot of people are getting sucked into. With Swift, it is a lot easier for anyone to get an app on the store. But is that a good thing?
I just know, that when my app goes on the store, it will be something I’m proud of and will want to show off. It terrifies me thinking ‘what if no one wants to use it, what if I’ve put all this effort in for nothing?’. Worst of all, I have a demo for my masters examiners in a months time and above all, I’m terrified that they won’t get it.
One significant difference this year was after the month I spent solidly coding earlier this year, I was able to get a lot more out of the session. The first WWDC I went to in 2011, I’d been coding for less than a year and almost all the sessions went over my head.
It’s hard to say exactly what was different but in the demo code and the presentation slides, I just understood a lot more. The code made sense. I could see how I’d implement it.
Overall, it was a fantastic WWDC, the best one I’ve been to so far. I got a lot out of it in terms of the technical and the social. I am hugely grateful to all the engineers who take the time during the week to be in the labs and be hassled by developers and answer questions.
Slowly, I’m starting to feel like I belong here (as I’ve said before: any hesitation on that has nothing to do with my gender). I wouldn’t call myself a developer. I can write code, I can solve problems from a high level and learn what I need to know to implement it in code.
So who is a developer? Yes, many developers have interests or hobbies which fall under the geek umbrella. I’ve embraced the label since I was 15 (despite protests of ‘you’re not a geek – you’re a girl!’). The conference began by addressing this stereotype but then went in the direction that you also don’t have to be a geek to be a developer (and you don’t have to be a developer to be a geek!). The video also explained that developers are pretty much wizards…and you can be too.