Learning to Program Requires an Idea

railsBlog

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.

Free Workshops

Watch one of our expert, full-length teaching videos. Choose from HTML, CSS or WordPress.

Start Learning

Spencer Fry

I’m a 29 year old entrepreneur. A Business Guy turned Programmer. Co-founder & CEO of TypeFrag ('03 - '07), Carbonmade ('07 - '11) and currently Uncover ('12+). Uncover is everything you need to start and run an employee recognition program for your company. My hobbies are squash, soccer, cooking, music, and art. You should follow me on Twitter.

Comments

26 comments on “Learning to Program Requires an Idea

  1. 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.

  2. 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).

    • Great feedback. I hadn’t really thought that it’d apply to experienced programmers as well, but that certainly makes sense.

  3. 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!

    • Yeah. That’ll be very helpful. Whenever there was a feature I didn’t know how to program then it’d force me to learn it.

  4. 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.

    • Thank you. Having an app that solves real world problems is definitely important. More specifically, it should solve problems that you yourself face.

  5. 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?

    Cheers!
    Mike

    • I mainly chose Ruby on Rails because of its reputation as a backend language for a lot of startups. It’s fast and relatively easy to learn. Also, most of my developers friends know it so I could always run to them with questions.

    • 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.

  6. 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

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

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

  9. 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!

  10. 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.

  11. 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.