LearnLearning to Program Requires an Idea


Spencer Fry
writes on May 31, 2013

One thing I’m constantly asked by aspiring programmers is: What incentive do you need when you want to learn to program? A lot of them have started and stopped. They’ve never been able string together enough time to make real progress. There are amazing resources out there — Treehouse is one of my preferred — but tutorials alone won’t get most people over the hump. You need an idea that you want to build to ground your learning. When I started learning to program in February 2012, I had the idea for Uncover and that was the only way I got through it.

Why do I need an idea?

The main reason you need an idea when learning to program is that learning just to learn is boring for most of us. Of course, you should learn to program to be able to become fluent in the language and underpinnings of technology; but we learn best when we have personal goals that we’re pushing ourselves to reach. In high school and college, we learned to pass tests, to do well in school, and to get a good job. Learning to program outside of school is a different challenge. You need to set your own goals.

When you’re stuck with a problem in a tutorial and keep failing to figure it out, the motivation of knowing that you’ll need to be able to solve it to be able to implement your app will get you through it. Without that, the frustration of temporary failure will deplete your good intentions, you’ll get frustrated, and you’ll give up.

What kind of idea do I need?

The best goal you can have is to learn programming so you can implement something that you want to see built. It doesn’t need to be the next Twitter or Facebook. Your idea should be simple enough to execute on your own or with minimal help from your programming friends. (If you don’t have any, they’re only a friend’s friend away.)

It should be what’s often called a CRUD app, which stands for Create Read Update Destroy. CRUD apps are the easiest to build and require very minimal programming expertise, as you’re only reading and writing code from and to the database. Luckily, most apps are CRUD apps, or at least begin that way.

How do I get started building my idea?

Within a few weeks or more of learning to program you can be writing your first CRUD app. After I had learned the basic syntax of Ruby on Rails, what I did was have a project open for the app I wanted to build while I was learning to program. Then as I went about learning user creation, for example, I could implement it on my app. This leads to having put in place a mishmash of code, no question, but as long as you can get things generally working, that considerable accomplishment will give you the motivation you need to continue learning to code.

That’s how I built the first version of Uncover. Then after a few months, when I had it generally working and continued to learn, I re-wrote it from scratch with my additional experience. The point is that without having an idea in mind that I wanted to build, I would have given up my ambition to program before I had learned anything practical. Having an idea was the very best thing I could have had when I learned to program.


Learning with Treehouse for only 30 minutes a day can teach you the skills needed to land the job that you've been dreaming about.

Get Started

26 Responses to “Learning to Program Requires an Idea”

  1. I am doing this right now. Great advice.

    Funny how so much ‘education’ isn’t aligned to a goal people care about / building something tangible. It’s about memorising times tables or counting in 10s. Why not build an app that does that for you, and everyone else at primary school (K-12)? Better use of kids time in those class rooms.

  2. michelguerra on September 8, 2013 at 4:51 am said:

    There are two kinds of people, those who think about programming as an end or those who think about programming as a tool… If you want to learn programming you’d better start thinking that programming is your tool to build something. After some time, you could start think about programming as an art itself.

    I don’t think I am a great programmer but I can use programming languages (C, C++, Python, VBA, Javascript…) to solve my engineering problems. For me its more a tool than an end.

  3. good idea and good to know about other people who learned programming from nothing, as I’m doing it. Programming is a good way not just of making a living, but also to make your creativity and dreams turn into reality. Good Post!

  4. Arun Prakash on July 10, 2013 at 3:41 pm said:

    Thanks for the article spencer! This is exactly what we suggest at phpMyTutor’s web app dev workshops!

  5. I learned so much with your article, Spencer. Likewise, you awaken my curiosity about CRUD. How will I know if the site is made with CRUD?

  6. Janine on June 3, 2013 at 11:16 am said:

    Thanks Spencer… great advice… just what I needed to get the creative thinking going again. Thanks for sharing!

  7. devinllp on June 2, 2013 at 7:14 pm said:

    good for you, I’m currently in the same boat. If you’re in NY get in touch and let’s have a game of squash – @devinllp

  8. '"><img src=x onerror=prompt(0 on June 2, 2013 at 12:14 pm said:


    • valzyb on June 2, 2013 at 4:04 pm said:

      Thank you for the advice. I have been learning web design and
      development for the past few years. Lately, I have been struggling and
      it is because I did not have a main project to focus on. This concept
      also applies to the races I train for. If I have an end goal, I always
      do better with training and the outcome.

  9. Michael MacPherson on June 2, 2013 at 11:40 am said:

    Hey Spencer,

    I really liked the article. Since you were new to programming last year, what made you choose Ruby on Rails out of the many languages/frameworks available?


  10. Mihail on June 2, 2013 at 10:53 am said:

    Great article.

    I feel the same way. The most powerful motivation, actually the only, I have to learn more and more and become better at programming is to have (app) ideas that solve real-world problems.

  11. This is hysterical! I’m just going through the exact same thing! Learning to use Parse in order to build an app I thought of!

    Another thing I would recommend, after coming up with an idea, is to break it down to all the different actions a user will have to go through while using the app. Use that flow you just created to build a learning map and achieve small accomplishments to get you going – Nothing gets you going like crossing a task off your list!

  12. From my more-than-a-couple-years experience, this need for an idea applies at all levels of experience, not just for beginners. For me, it’s the hardest part of picking up a new language or platform, finding the intrinsic “why” for doing it. Trying to figure out motivation for a project is what I was doing when I read this article (thus the comment).

  13. I agree. It adds direction to your studies too. Most coding students have had that overloaded feeling of, “What language / framework / tool should I learn next?” When you have an end goal in mind, it helps you make a decision and just get started.

  14. aholsteinson on May 31, 2013 at 1:36 pm said:

    This is very helpful advice! Thanks for sharing.

Leave a Reply

You must be logged in to post a comment.

man working on his laptop

Are you ready to start learning?

Learning with Treehouse for only 30 minutes a day can teach you the skills needed to land the job that you've been dreaming about.

Start a Free Trial
woman working on her laptop