Growing up, I took learning for granted. It’s something I HAD to do as part of the educational system, so I never thought much of it. The reality check came during my first year working in the real world after college. Nobody really cared whether I learned or not. In fact, if I was good at my job, they wanted me to stay and keep doing the same exact work – after all, I’m much better at it than someone else who’ll need to be trained!
Eventually, I figured out that if I wanted my brain to be challenged in any way, I had to take learning into my own hands. I’ve been addicted to learning ever since! Some of my happiest days are when, at night, my brain is so full, I cannot process the simplest things (such as someone talking to me!).
With Swift coming out, I’ve been in my happy place a lot lately. I just LOVE that I get to challenge myself and learn something that is constantly changing and is different in many ways from things I take for granted in other programming languages I know.
When I mentioned some of this to Chris Eidhof at a meetup last week, he suggested I write a blog post about how to learn. So here are some tips for swift learning from my non-stop learning adventures!
Work with Others
I’ve tried learning on my own a bit, but I learned very quickly that you just can’t go very far in a vacuum. When you have a smart or clever idea, there is no one there to tell you that this has already been tried many times and point you to the pitfalls of your thinking or explain to you how you can enhance it to be better or point you to the good resources to help you come up with an even better solution.
Everyone has different backgrounds in their knowledge, and getting that different perspective is often priceless. As I’ve been learning Swift, I found working with others with different experiences to be priceless. For example, just a few weeks ago, @jsambuo really helped me understand Generators and Sequences in Swift just based on his .NET background!
As you learn Swift, bounce your ideas off others nearby – it doesn’t even matter if they’re currently working with Swift. Just working out your thoughts with another person or in a group full of different knowledge creates a magical atmosphere where everyone learns way more than they would have otherwise on their own.
Write Down What You Learned
So I know it might look like this blog is a selfless way for me to help others, but the reality is that it helps me learn first! If others benefit, that makes me really happy. But I would be writing on here even if I had no audience, which was actually the case when I first started this blog!
Writing down what you just learned forces you to really think about it and to learn it even deeper. Every time I write a blog post, I do a few rounds of double-checking to make sure how I think something works actually works that way, and I make sure to take the time to check that edge-cases also work – which again, makes me learn and internalize the material and my thoughts about it a lot deeper.
When you do get an audience, the added bonus is that people start giving you feedback and you can learn from that feedback! One of my recent blog posts involved a discussion on Twitter about something controversial I wrote, and I learned a lot from it!
Expose Yourself to Advanced Topics
I’ll admit it. Functional programming is scary to me. In fact, I’m secretly still trying to understand what functional programming actually is… I just haven’t been exposed to that type of programming thinking yet, and it’s really hard for me to understand what’s going on when I see functional programming code. The first time I read Chris Eidhof’s blog post on JSON parsing in Swift with Functional Programming, I was completely lost.
Then I heard Chris’s talk about Functional Programming in Swift last week, and I understood it a little better (still lost!). I’m now slowly going through Chris’s Functional Programming book, and I’m understanding it even more. Am I going to be a functional programming expert by the end of the book? No way! But I know that the more exposure I get on this scary topic, the less scary it will become, and eventually I’ll have enough knowledge to start using it.
How do I know that? I’ve gone through this process over and over again! When I was first learning Objective-C, it was very scary! But over time, more and more started to make sense, and eventually I became an iOS developer.
Exposing yourself to advanced topics you’re not familiar with is really scary – it makes you feel stupid, which is not fun. But it’s honestly the best way to know what you don’t know, and even when you think you didn’t understand anything, you’ll be surprised to learn that the next time you hear about the same topic, you’d be able to reference things you learned in the previous talk! Your brain is taking in the information, it just needs some time to process it and connect it to your existing knowledge!
Put Your Stuff Out There
I put almost all of the code for anything I’m working on publicly on my Github. Blogging is another big way I put my code and thoughts out there. I have code on Github (actually most of it), that I’d be embarrassed to look at now, but at the time was the best way I knew how to do things.
If you are embarrassed to put your stuff out there, you’ll miss the opportunity to get feedback from some of the smartest people in the world or just people who know more than you on the given topic or just people who notice something you didn’t. For example, recently I put up a blog post and source code while learning to work with Dynamic Type in iOS 8. I thought my code was perfect, of course, only to learn from several comments and issue submissions that I had some serious AutoLayout issues! After tinkering with AutoLayout for bit longer, I learned a lot more about AutoLayout!
Without getting feedback on the code you’re writing today, you’ll keep developing bad habits that will stay with you far longer into your career and handicap your future learning. To improve, you have to put your stuff out there, and go through the potentially embarrassing part of someone seeing your stupid mistakes!
Yes, do a little dance and tell the world when you finally understand something hard FOR YOU!!! This is something I do often, lol. It’s ok if whatever you just learned is super easy to someone else – the key here is that YOU finally understand it, and that’s a big step. Take a quick break to celebrate because the next thing you try to learn will be hard again.
Any other tips? I’d love to hear about them in the comments!