There is something very special about creating an experience that another human can be entertained by or that makes their life a little easier . The desire to learn how to code came from a deeper desire to be in full control. Instead of relying on others to make things happen I would have the ability to get the ball rolling. I knew from an early age that this would become a huge asset as I began creating a company.
Why did I learn the language I use today, Objective-C & Swift? It’s easy. I fell in love with the idea of creating interactive experiences on mobile devices. That fire was enough to get me to focus on the iOS path 110%.
I’ve given you a short tour of why I started because it’s something you should ask yourself. There are 2 simple questions:
- Why do you want to learn to code?
- What kind of things do you picture yourself coding?
This article is not directly targeted to those who usually find their way to this site. The keys below will still help open doors on the path you’ve decide to take.
Identify Your Passion
It may not be nearly as clear, as it was for me, what you are truly passionate about. The key is being curious. Overtime something may click that drives you in a particular direction. Find a place to begin your exploration that sounds interesting and let fate take control.
What kind of things do you picture yourself building? A highly scientific or mathematical minded individual may have a huge desire to write code for NASA. Alternatively, someone who is very social or athletic may want to build fitness products that leverages social graphs. Maybe they really love playing video games. Identify what you love in life and let that become a guiding light. Remember that nothing is forever. I started writing games, but now I’m building more social, educational, and productivity products.
If you’ve began your journey with Swift you may recognize that it’s not the language for you. For example, maybe you wanted to learn how to build games for the iPad using SpriteKit and Swift. Later in your journey you decided to experiment with Unity3D and fell in love. Remain cautiously optimistic while staying open minded. Keep experimenting if you haven’t found a language or platform that you truly enjoy working with.
If you don’t have any passion for the space then you may have to step back and reevaluate the path. Cringing each time you sit in front of a set of monitors isn’t how you want to live. Life is short. Enjoy it!
I have a pretty easy guide to follow when it comes to beginning leaning a new language. While I enjoy learning platforms like Tree House or video tutorials from Lynda, I whole heartedly recommend reading a couple of books. They’re often highly focused, well guided, and remove all potential distractions. It’s just you, the book, and your code editor.
Supplementing books with a learning platform or video tutorials is fine, but going through a couple of books cover-to-cover will help dramatically. Once you’ve identified a language to study:
- Buy a book focused on the language and only the language
- Buy a book focused on teaching you how to use the language within a particular environment
Remember, what works for me or your friends may not work for you. We all learn differently and it takes a bit of self awareness to help get us on the right track. If you don’t have that awareness books are a safe first bet.
Let’s say you really wanted to learn how to build apps for Apple devices. You’ve decided on Swift instead of Objective-C. Go out and find a book that just teaches you Swift and read the book cover-to-cover. Once you’ve finished find a book that explores using Swift to build apps on iOS.
What if you wanted to build web applications? You’ve decided on learning Ruby on Rails since you’ve heard so much about it. The language there is Ruby. Rails is a framework written with Rails. So grab a book that just focuses on teaching Ruby and then buy a book that focuses on Rails.
If you wanted to build games with Unity3D? You guessed it. Buy a book that just focuses on C#, and then jump into Unity3D.
This language + environment book strategy will help you focus while minimizing the potential distractions and overwhelming situations. You may still feel overwhelmed, but not nearly as much as you would if you were to go through an online course that had to limit what they taught you because their platform couldn’t support it.
Removing Training Wheels
I can promise that the most challenging jump you will make will not be picking up a book and finishing it. It’ll be the transition from finishing a book to building a project on your own. You could go through all of the examples you wanted to, but books rarely challenge people in a way that make that jump comfortable. So how can you better manage that jump?
- Find an idea and keep the scope incredibly small so you don’t have to spend more time thinking about how the app will work than just building it. If the app does 2-3 things you’re in good territory for the first app.
- Don’t give in under the pressure—find a way. When all else fails use a lifeline (call a friend, submit a post to Stack Overflow or Reddit).
- Adjust the idea if needed. Did you start a small game project and feel completely overwhelmed? Games are extremely hard. Step back and build a far more easier game (2D instead of 3D, small Puzzle instead of an RPG).
The last thing you really want to do is chase yourself in learning circles. Bouncing from books, to online learning platforms, to courses at a local college, to video courses, to… Figuring things out will take time and a lot of practice. It’s best to set a foundation (through a few books) and just begin building.
Joining A Team
One of the best ways to pick up great coding habits or learn new concepts is to be thrown into a team environment. This environment will push you in directions you may not even considered. It will also surround you with people who have been playing the game much longer than you have. These people are insanely valuable. Don’t feel like you need an intense portfolio in order to join a team. Plenty of teams are looking for highly motivated junior developers. Get a few projects under your belt and go after them.
If you can’t get into a team right away consider finding a friend or mentor to lean on. If you’re at a university network with your peers. These people will make the experience much more enjoyable since they’ll help you navigate the wild waves that you’ll run up against.
If you’re not around a university, or technology hub, then invest your time into attending developer events. The iOS community hosts a lot of great events, such as RWDevCon and 360iDev. Don’t feel intimidated. These are some friendly folks who would love to play a small part in your future success.
Finally, immerse yourself in Twitter, Github, answering questions on Stack Overflow, Quora, and wherever else you can find developers hanging out.
Fight Back Against Self-Doubt
The only thing you need is the passion. If you really want to build apps for mobile devices don’t let your mind tell you otherwise. If you enjoy being around computers, writing code, and experimenting you’ll be just find. The doubt will inevitably show up—I guarantee it. Don’t let it beat you back down.
Be honest with yourself. Maybe you really enjoy the low level technical coding experience. Great! You’ll have a lot of fun crunching on really challenging problems thrown your way. Maybe you’ve found that you like writing code and designing apps. Great, I know plenty of developers who have become a solid resource that can handle the first stage of development. Maybe you like writing code and handling business aspects. Great, you’ll be a solid technical leader someday! Being a generalist isn’t a bad thing. There are so many flavors of a coder. I’m willing to bet there is a style for you.
What if you really don’t enjoy coding? You’ve given it a good try for 6 months or so, but are just not having any fun. Don’t sweat it & don’t force it. Life is too short. Step back and re-evaluate your path. You’ll be much happier jumping on a path that you really enjoy. Don’t let society force your hand—it’s your life.
Build, Build, and Build
I’ve invested so much time it’s slightly maddening. When I began learning how to code for iOS I spent 2 or 3 weeks, 12 hour days, highly focused on learning how to use a Mac, write Objective-C code, and use the iOS SDK.
Do yourself a favor and commit to learning how to code. Set aside 30 minutes to just sit in front of your books and the monitor. Once you’re done with books, focus on writing code and thinking about development. Make it a daily habit. If you really enjoy coding this will be very easy. If you’ve set a goal for yourself, like release an iPhone app in 6 months, it’ll be easy.
Overtime you’ll eventually want to begin exploring uncharted territory. That’s to be expected. What you want to avoid is overwhelming yourself by adding too much to your plate all at once. Focus on a small subset of areas that you enjoy and Introduce new concepts overtime to keep yourself frosty. Don’t be in any rush. Focus.
I don’t want to sugar coat this—everyone is different. Nobody will have the perfect answer for you. Based on what I’ve seen and experienced this article outlines some of things I would tell myself if I were to start all over again. Ideally, I would have joined a team much quicker or I would have found a mentor. Even today I still feel like I should find a mentor to lean on for business.
Dive in! You can absolutely do it. All you really need is a little bit of fire in that belly.