Nathan Barry
  • Home
  • Blog
  • Books & Products
  • About
Twitter YouTube Search Menu
  • Home
  • Blog
  • Books & Products
  • About
Twitter YouTube

November 22, 2011 - Learning, Mobile

How I am Learning to Program

 

I’ve spent the last five years trying to become a great designer. Recently I realized that I wanted to create great, successful software products. To do that I would have to move beyond only design. Great software requires equal parts design and development, but if you want it to be successful you need sales and marketing as well. Meaning I need to learn programming and marketing to complement my design background.

After last weeks post the most common question was “how did you teach yourself programming?” Here is how I am doing it.

Have a project.

Some people can sit down and read a book to learn programming, but I can’t do it. My method is to learn by creating. I always decide on something I want to make (i.e. Fluent) and just start building it. By having an actual project I will be applying every concept as I learn it. If reading a programming book from end-to-end works for you that’s great. You’ll probably be a much better programmer than I ever will be. For everyone else, start by choosing a real project. The best part is I always have something completed to show for my work.

Break everything down to the simplest possible problem.

I didn’t know how to write a flash cards application. So instead I found the simplest problem I could and tried to tackle that. Here are a few examples:

  • Animating a card from right to left.
  • Filtering out cards by topic using NSPredicate.
  • Displaying a modal view.

Those are approachable problems. So then I search for a simple phrase related to the simple problem. Often I phrase it wrong so it takes a couple tries to get the right keywords and a useful result.

How to compare strings in objective-c? A Stack Overflow post almost always holds the answer. My rule is that rather than copy and paste I have to retype the code, then go read a portion of the Apple documentation related to what I am trying to do. These simple tasks allow me to slowly build towards a completed application.

Have smart, patient friends.

Inevitably you will hit a problem that you don’t understand and can’t find the answer to. When you hit a wall you need someone to turn to for help. I have Chris. He is a talented programmer who has taught me a lot in the last year. If you don’t know someone who can help you in this area you can try posting on Stack Overflow. While not as good as having an individual programming mentor, you will almost always get a reliable answer to a well formed question.

Often just phrasing your problem in a different way will help you find the answer. I’ll start asking Chris a question, then by saying it out loud understand it a little better and start talking about possible solutions. Soon I’ve worked out the problem without any input from Chris. He just smiles and says, “Glad I could help.” I’ve watched plenty of other people do the same thing. So if you are stuck try saying the problem out loud or phrasing it in a new way.

The downside.

The downside of using my method is you will lack an understanding of core fundamentals. Because I don’t have a background in computer science I had a very hard time understanding number types in Objective-C (doubles, decimals, floats, NSNumber, etc). Chris was invaluable in teaching me basic lessons like that. If you find yourself getting stuck on basics of the language find an overview book and start working through it.

Be patient with yourself. Learning a new skill is challenging and takes time.

 


 
If you enjoyed the article please consider joining the discussion on Hacker News.

I’m Nathan Barry. I’m a creator, author, speaker, blogger, designer, and the founder of ConvertKit.

more about me

Join the Newsletter

Each Monday I send out my weekly newsletter
 and latest blog posts. Subscribe to stay in the loop.

Subscribe to get my best content. No spam, ever. Unsubscribe at any time.

You might also like...

more recent articles
June 15, 2020 - Learning, Life

How homeschooling played a key role in building a $100 million business

read more
August 5, 2019 - Learning, Life

Stay in your lane and outlast your competition

read more

1 Responses to “How I am Learning to Program”

  1. Paulo

    December 15, 2012

    Great post! I appreciate your blog, thanks for valious content and nice things. Congratulations from brazil!

    reply

Leave a Reply Cancel reply

Subscribe to get my weekly newsletter.

Nathan Barry

© Copyright 2023 Nathan Barry.
All rights reserved.

Categories

  • Audience Building
  • Business
  • Design
  • Investments
  • Learning
  • Life
  • Local (Boise, Idaho)
  • Marketing
  • Mobile
  • OneVoice
  • Podcast
  • Security
  • Social
  • The Web App Challenge
  • Travel
  • Uncategorized
  • WordPress

Products

  • Designing Web Applications
  • The App Design Handbook
  • Authority
  • Photoshop for Web Design
  • Commit
  • ConvertKit
  • How I Made $19,000 on the App Store While Learning to Code
  • One Year After Quitting My Job
  • Starting The Web App Challenge: From Zero to $5,000/month In 6 Months
  • User Experience Lessons From the New Facebook iOS App
  • Step-By-Step Landing Page Copywriting
  • Designing Buttons in iOS 5
  • The Best Marketing Method I Know
  • On Design Approval and Intentional Flaws
Nathan Barry

© Copyright 2023 Nathan Barry.
All rights reserved.