Swift: A Designer Tries Learning Swift

I’ve been wrestling with Swift for a few months. Before that, it was Objective-C. Of course, I’m talking about Apple’s development languages for their mobile platforms. Truth is, I don’t know how far I really am because some things make sense and some other things that should make sense, don’t. What I’m going to start doing is talking about my learning process with Swift. I had started out with Obj-C and then had to stop because it seemed as if Apple was trying to move away from it. That moment when I realized close to a year’s worth of banging my head on the wall with a language they were going to move away from was probably pretty funny–unless you were me.

Sure, I know the foundations are the same no matter what language you pick, but trust me on this, aside from some very old C++ knowledge, HTML, CSS, Javascript and PHP, I’m pretty much a greenhorn. I know it doesn’t sound like it, but I am. There is a difference between frontend development and programming for applications, especially while learning swift.

A couple of weeks ago, I had the pleasure of reading Chris Bowler’s blog: One Man’s Journey to Learn Swift. Chris put a hold on his project because of an awesome career opportunity, so I reached out to him expressing my interest in picking up where he left off. I liked his honesty and approach, the fact that he documented the frustrations that I can so readily identify with.

Here’s Where I’m At Learning Swift

I’m a UI/UX designer and front end developer. You can see a summary of skills on my about page. What isn’t listed on there that is somewhat relevant is a brief period of time that I spent with C++ almost a decade ago. I also used to work with Actionscript 2 and then Actionscript 3–that was also a few years ago. The rest of the time, I’m an HTML/CSS/JS/PHP kind of gal. I am by no means a programmer so when you read these entries in my blog and you feel like screaming because I’m missing a basic component–it’s not on purpose. 🙂

What I am Trying to Do

Like Chris, I have an idea for an app. Well, actually, it’s several ideas that my husband and I want to get off the ground. We’re more interested in making games than utility applications though, which adds an additional layer of complexity to the whole mess. My one saving grace is my better half. He has programming experience in C/C++, he also picks up on this stuff a lot faster than me (probably because of the programming experience).

I don’t expect to be dropping apps on the app store in a year, or even two years. But this isn’t about pushing out a bunch of apps, it’s about improving my skillset because I would like to offer application programming as a service one day, or even just using learning Swift as a launchpad into more in-depth application programming. And at the very least, I want some of these ideas out of my head.

My Resources

All right, since I’m already a few months into this process, I’m going to share what I already went through. When I was first starting with Obj-C, I was buying books (yes, I’m old school). That was a frustrating experience because the time I had to dedicate to Obj-C was less than an hour a day and it seemed like every time I was close to finishing a book, something about the language was changing and the next thing I knew, the book was outdated. So it truly felt like I was making strides forward, then having to stop and take a few steps back, I did make it through one book completely though. I know there’s a lot of chatter amongst devs that Obj-C is difficult to learn and intimidating–it is, but it isn’t insurmountable. Anyway, I can recommend this book:

Objective-C Programming: The Big Nerd Ranch Guide (2nd Edition) by Aaron Hillegass & Mikey Ward

It’s short enough that you should be able to surge through it. OK, so that was Obj-C. Let’s talk about Swift. One of the things I promised myself when I started down the Swift path was that I wasn’t going to buy any books. The first place I started was on Lynda.com where A fellow named Simon Allardice publishes his excellent series teaching the basics of Swift along with some theory. I liked Simon’s approach because while he rehashed the foundations, he also took the time to explain why things were done the way that they were. I recommend his courses:

Swift Essential Training by Simon Allardice
Comparing Swift and Objective-C by Simon Allardice

That second course was actually very useful, especially if you already know Objective-C. After Simon’s courses, I went off and started poking around with Swift on my own. Managed to make a very inefficient (but it worked) text-based, choose your own adventure game. In an attempt to figure out some of the errors I was encountering while making the text-based game, I came across MacHeads101’s YouTube Channel where he recorded himself trying to learn Swift for the first time. Now MacHeads101 already has programming experiencing, and a lot of it. But it was interesting and surprisingly helpful to see how he troubleshot errors. I watched the following videos:

“Learning Swift Attempt #1 – Creating a Calculator” by MacHeads101
“Learning Swift Attempt #2 – A To-Do List App” by MacHeads101
“Learning Swift Attempt #3 – Draggable Views” by MacHeads101
“Learning Swift Attempt #4 – Operator Overloading and Objective-C Bridging” by MacHeads101

He was using the beta version of Swift, and I was using Swift 1.2 so some of the things he did threw errors for me and some of the errors he had weren’t showing up for me. Still, it was a great learning experience because it forced me to figure out how to fix the errors I had. I don’t know if it was just me, or if anyone else felt helpless whenever they discover they had an error in their code. It was especially frustrating because any errors I had in HTML/CSS/JS/PHP, I was usually able to tell immediately what was causing it–not so much with Swift. By the end, there wasn’t any reusable code, but I definitely felt better about troubleshooting my own Swift code.

Finally, I was starting to do more with Spritekit. That was pretty much when I found Chris’ blog. At the moment, I am going through these component tutorials from iOScreator:

iOScreator Tutorials

Chances are pretty good that an app will be released in the coming months, though the majority of the programming will be thanks to my husband while I work with the design and user interface. But I still intend to get good at this stuff because it is incredibly useful to know. I’ve always been fascinated with code and it was nigh time I learned an actual programming language. So I’m going to document by progress from here and going forward.

You’re going to read about all the embarrassing rookie mistakes I make, see some of my sloppy code, watch me get frustrated as I try to find help with Swift and end up with a bunch of Google search results about Taylor Swift, and maybe even laugh at me. And that’s OK. I’m still looking forward to it.