The Bad Guy

Category: swift

Big Nerd Ranch Training – Seven Days of Intensive Swiftering™

Background

I have done Android development for the past four+ years. I have suffered Eclipse, switched to IntelliJ IDEA 11 (at the time) and at some point made the switch to Android Studio.

This apparently gives me the title of Senior Android developer; I wanted to be a Senior Mobile Developer, and Swift 2.0 seemed like a good excuse. I have touched Objective-C like… years ago, when it didn’t have ARC and only for Cocoa (Mac), not iOS.

This short story is a description of what happens at the Asilomar Conference Center during those seven days…

The Days Before

Once you complete the registration and pay, you’re given a few links and PDFs to pre-read. You’re also invited to register at their Nerd Association forums, since that’s the only contact you have with other students and the teacher (especially before the class). Do it and post stuff, my class was very silent and it would have felt better if people posted something there.

Read the material you’re given. In my case it was a simple PDF with 8 chapters of Swift. If you already know any language, the idea is that you have to be able to declare a simple for loop and iterate an array, create a switch statement and or print stuff to the console. In other words, get your machine ready, if in doubt, ask in the forums. The instructor will reply.

The more comfortable you are with Xcode and Swift (or Obj-C if that’s your class) the easier it’s gonna be for you during the first two days when the language gets introduced to you. You will start flying past the “Language” chapters and if you’re familiar with the core concepts, as you approach the end of Sunday, things will be easier. And you will need the language to learn iOS later… so be prepared.

What To Pack

They tell you what you need, and depending what time of the year is your training, you can get awesome weather or cold rainy days.
If the forecast looks good, bring flip-flops and shorts, it can get hot. But always pack for a cold rainy day. Always.

Bring clothes for seven days, and remember, you don’t need to be formal, most people will be wearing t-shirts or short-sleeve-hawaian-shirts… like, perhaps, your instructor… ;)

Arriving

I drove there. I live in San Francisco, so it was a two-hour, twenty minutes drive. I left SF on Friday around 1pm and got there around three thirty PM. There wasn’t a lot of traffic, but it was not an empty highway either.
The arrival was strange, because I kinda felt I was the first person, which was totally fine, you will meet the rest of the people at 6pm for dinner so don’t panic.

There’s plenty of parking inside the complex, find a spot or ask the staff, they will tell you which one is closer to your room.

You will be given vouchers for ALL meals for ALL week. That’s over 21 cards, color coded. Keep them in the tiny envelope they give you. Don’t lose them.

Also keep the map of the complex, it’s big and buildings have names like “Manzanita” or “Pirate’s Den”, so you better have a map around, especially the first couple of days. (You can see the map here)

Keep in mind that Asilomar is not a private Big Nerd Ranch complex, this is a big place with lots of buildings. It kinds of look like a University Campus, but way cooler and quieter.

You will likely be greeted by Squirrels, Deers and Warning Signs about Mountain Lions and what to do. I have seen lots of squirrels, deers, birds and spiders, but no Mountain Lion. In any case, if you’re afraid of squirrels, you should perhaps chose the Atlanta alternative.

A very descriptive warning. We have yet to encounter one.

It’s a hotel, so expect to “check-in” like any other mortal tourist. You don’t have to checkout, but you will need a Credit Card for “damages”. You can also charge stuff to your room when you buy stuff at the Cafe or the Restaurant.

Ask and they will know where “Big Nerd Ranch” is meeting for class (tomorrow) and also locate the Dining Hall (it’s very close to where you check in). Meet everybody there at 6pm on Friday if you can make it.

What knowledge should you have…

The more (relevant) stuff you know, the merrier, of course. But there’s one thing that helped me a lot throughout the week.

Version Control. Yes. That is git in this case (since that’s what Xcode creates for new projects). You don’t need to be The Git Master, but if you’re comfortable creating branches and committing to them, it will make your life easier, not to mention you can look at changes and whatnot.

More often than not, the book will end with a series of “Challenges” (all optional). Since they are optional challenges, the book doesn’t assume you’ve made them, in fact, there are no solutions that I could find. It’s up to you to do them and/or to find your solution(s) (even tho the Instructor will be more than happy to be there when you need him, time permitting).

By having Git, you can easily branch before starting the challenge, commit to that branch, and eventually switch back to “master” to continue with the next chapter in the book. Otherwise, the challenge may make your project hard to integrate with whatever you have to do. It happened to me the only time I forgot to branch. Eventually I cherry picked the changes and with some git-fu, I was back on track.

You don’t need to be a git genius:

I followed this practice:

If the project is new, make sure you have the “Create Repository” checked in Xcode.

git checkout -b cp22_more_core_data
and now you continue with chapter 22… without the bronze challenge.

As you can see, this allows you to keep track of everything you do and even upload to github if you want in the future. But the whole thing helped me a lot and I recommend you do it.

I use the terminal for the most part, but a visual git tool is useful, especially the free Git Up.

Also memorize some of the Xcode most common shortcuts, they will speed you up, since Xcode seems to revolve a lot around the concept of using the mouse/trackpad… that feels like a waste of time almost always (except when connecting outlets and actions and when dealing with AutoLayout).

The First Day

You will meet almost everyone for breakfast at the dining hall at 7:30 am! Be there on time at/around 8:30 am everybody will head over to the class.

The first day everybody is quiet, fresh and has no idea what to expect. Just find a spot (be early!) plug your machine and chill. There’s a projector in the room and a board, both are extensively used throughout the week.

For your language of choice (Swift) you will use Playgrounds a lot, so have a nice folder somewhere like ~/training/ and save your playgrounds like: Day 1 – If Statements, Day 1 – For Statements, Day 1 – Arrays, etc… it will help you locate them later (and you will want to go and check them out during the iOS portion of the training).

You will also learn about this hard truth…

Inexplicably, after twelve years of existence, Xcode can’t rename a variable in Swift. Granted, Swift is new but… Xcode 7.01 behaves like Notepad sometimes, and sometimes you wish it behaved at least like Notepad. Xcode crashed on us more times than Windows ME with USB devices go figure!

Do go for the afternoon walks (at least the first days), it’s a refreshing change and the place is beautiful. Your brain will appreciate it.

Do write the Wi-Fi password down somewhere. You have to sign in a few times like a hotel and sometimes your Mac “forgets” the password. The Guest one is easy, but that’s not too fast :/

Speaking of Internet, don’t expect to have fiber/cable speeds. It works, but you will notice how slow it is (especially if you are used to fast Internet at work/home). Don’t expect to use your tethering a lot either, T-Mobile worked, but it wasn’t “awesome”.

The iOS Days

After two days of Swift (or Obj-C if that’s your course), on Monday, you will start with iOS. This is when things start to get interesting, and also when you start getting tired, waking up early, sitting all day, listening and reading, it’s tiring if you’re not used to be in front of a computer for long periods of time.

I recommend you drink a lot of water too… and coffee (or Tea).

Now you can use Git a lot for your projects (no more playgrounds!) so remember the tips above.

Additionally, use Notes (or Evernote or whatever you want) to keep minor annotations around. Look at mine at the end:

It’s very useful to keep notes!

Labs

Every evening, you have the chance to attend optional Labs. That is, to keep going from 7pm until any time you wish. The instructor usually leaves around 9pm, but you can stay longer if you wish.

Do not stay until super late. Especially the first days, since you will be tired by the end of the week. Staying a couple of hours is fine, but if you’re tired, just go to your room and sleep. It’s fine.

Try to save energies for Thursday night (last lab) since that’s where the most interesting parts happen and perhaps longer projects will be in full effect, so you will want to be there; you will likely have more questions and a better idea at that point.

Drinking alcohol is allowed so enjoy it, but I don’t recommend getting wasted or you will regret it the entire week…

As Friday Approaches…

The last two days are good, because you move fast, but you’re also tired and if you feel like you were “left behind” it may be hard to catch up, so try to use the lab times to catch up if you believe it may help you.

There’s no rush, as long as you pay attention when your instructor is talking; he is the most valuable resource in the room. Yes, you will keep the printed book, but the book won’t talk back to you and may not answer your questions, so use the instructor time as much as possible. By this time you will be familiar with the mechanics of the class so optimize your time, but do stop what you’re doing and listen when the instructor talks, you may learn more than you think.

I can’t stress this enough. In my class not everybody was paying attention (because they were working or doing something else) and I felt like they were wasting money…

Remember, this course is not free, nor cheap (even if you didn’t have to pay for it like some of the students in my class, who got it for free from their employers), so try to get the best out of it; for your own sake, it will make you a better developer.

Speaking of the books, you do get to keep the printed editions of both and a printout of all the slides presented during the seven days. At the time of this writing, the Swift book was in beta so it contained some errors and weird stuff (especially the code samples). Under normal circumstances, you would be given a hard copy of the printed book, but since they weren’t printed (for Swift) yet, we just got the PDFs and the draft printed copy. If you’re flying, it may not be worth to carry these big four books with you, so leave them and your instructor will recycle them.

I kept the four of them because I wrote on notes and because I drove, so weight was not an issue. If anything, I do recommend you use the slides to write notes down, it’s just a draft after all, not a real book and there are way fewer pages in those two (one set of slides is for Swift, the other is for the iOS part). Hopefully, future students will get a real book when it’s their turn.

And hopefully, Xcode will be more stable… and Storybooks… and … well… that would do.

Goodbye

Friday is a mixed-feelings day. On one side you are eager to finish the book but on the other side you go to lunch and then you just say goodbye. It felt good to drive back home, but at the same time, you wish you could go back there on Monday to learn more and more. Much like personalized college. :)

We all look relieved that this is about to end…

The obligatory Group Picture was taken with an iPhone 6s Plus pink gold and an iWatch that acted as a remote.

Conclusions

The place is great. My instructor was great (Thanks Scott!), he was full of stories back from NExT, Sun Microsystems and even Apple and he does very decent margaritas, not that I’ve tried them, but I’ve been told ;)

If you were wondering whether you should spend over five thousand dollars in this, well the answer depends on what kind of background you have and how easy it is for you to pick stuff.

Can you just buy the book and do this on your own?

Yes. But the experience is never going to be the same. And you won’t have an instructor to talk to. You will lack the finesse, and the tips and the tricks. You won’t see him make mistakes and suffer Xcode 7 crashes and bugs and above all, you will need to have a lot of dedication to spend 7 full days studying like a champion. Oh, and you won’t have a T-shirt and a Diploma ;)

I made it, I am a bad iOS Developer

Did it meet my expectations?

Yes. In all honesty, it didn’t greatly exceed my expectations.

I was perhaps expecting a more even field when it comes to knowledge. Our instructor did a fantastic job in keeping up and moving everyone at the same time, but I felt like I was in the group of people with the most experience in the room (we were a few), whereas some others were less prepared for this. Don’t get me wrong, I would do it again, even if I knew this, but it would have been nice to have more people with similar experience, so perhaps we could have focused on more and more details that we had to leave behind for obvious reasons. Perhaps that’s why they have an Advanced version of this ;)

All in all, I have to remember it was for Beginners, but their website and notes are very intimidating with phrases like: “if you’re not a good typist and this or that you will have troubles following…“. I think we all did a very decent job and completed the course with no problems, even when some people didn’t really fit in the above.

Some of us have likely finished this week with a lot of questions like where do I go from here?. Some others will have to go back to the Swift book and re-read the basics, but eventually, it is clear for me that in these seven days, you will learn iOS. We’re all very bad iOS developers, that’s for sure, but I have no doubt that all fifteen can become proficient, given enough practice and time. There were some interesting projects happening during the Labs, you will likely hear about one or two eventually… the guys were very serious about it :)

In conclusion, go ahead and do it, the place is great!

Now enjoy some random pictures.

Relaxing after class…

My room was in this building, Manzanita means Little Apple (Pun?)

Scott trying to teach us Swift…

This is the class room, pretty cool huh?

Deers are around…

We also had a fireplace in the classroom! Woot!

The beach is 3 minutes away and… looks awesome too :)

…but it must come to an end…

Thank you, Big Nerd Ranch and thanks to BlackPixel (My employer!) for letting me spend seven days in the beautiful Pacific Grove, sitting with nerds and their Macs ;)
… and maybe, only maybe, drinking a Margarita or two.