So You Want to Learn How to Program?


When I guest lectured at James Madison a few weeks back I was asked a couple of questions from students interested in learning how to program. I get those questions in various forms all the time. I decided to write a post about how I’d recommend going from nothing to programming a real live web site that can make you money. Well, that “post” became quite lengthy and I decided to start a new section on the blog. You’ll notice an “Essays” tab on the top nav now. I’ll probably put two types of posts in that section – how-to type of guides like this one that I’ll continuously update and maintain over time, and generic essays about entrepreneurship topics that have nothing to do with my current happenings. Essentially, any post that I plan on keeping relevant at all times will now become an “essay”.

The first such essay is Web Design & Development for Business. The table of contents is as follows:

Let me know what you guys think. Is there anything that you think I should add? Do you think this will be helpful for aspiring young entrepreneurs? Too long? Too short?

I think the next one I’ll tackle will be a re-write of the SEO/Web Marketing e-Book available for download on Faceup-Sites. That’s a bit out of date. Plus I’d like to open it up for everyone to read without a download. Then I can just take that entire site down and redirect it all to the article.

17 comments on So You Want to Learn How to Program?

  1. Neville says:

    Wow, thanks for going above and beyond for this request, reading now!

  2. nethy says:


    On a slightly unrelated note, the internet has brought back the essay as a medium, maybe even found a good use for it. I’m glad it has. Maybe short stories will also make a comeback.

    • Adam McFarland says:

      Very true Nethy. Back in the day authors had to make a living by writing essays and short stories for magazines and newspapers. That was their steady income, while the books took years to write, edit, and publish. One of my favorites is F.Scott Fitzgerald – he has hundreds and hundreds of these short stories that ran as a series of articles in a magazine. They’re fantastic. The most popular now probably being Benjamin Button. Anyway, I agree – I wish short stories would make a comeback.

  3. Danny says:

    Hi Adam,

    great post there. But how about for those novice who is going to use CMS like drupal or wordpress? Will they still need to be very proficient in PHP / CSS /HTML languages?



    • Adam McFarland says:

      Good question Danny. I touch on that briefly in the PHP projects section. I think that to work with a CMS on a regular basis, you need to know a decent amount of HTML and CSS, and should know basic PHP. WordPress almost requires it because of what you have to do to install it. You can probably get to that point in a few weekends of time, so if you’re committed to a site running a CMS I think it’s worthwhile. I also think it’s worthwhile to flip through all of the WordPress documentation so that you have an idea of how it works…even if you never plan on getting under the hood and modifying things yourself. Just being able to make basic changes to the stylesheet (colors, fonts, etc) and to the template (changing an image, removing the sidebar, etc) can make a huge difference on your site.

  4. Wow, great essay Adam! I’m looking forward to trying MockFlow. I too register all my domains at GoDaddy. One tip is to Google for Godaddy coupon codes. There is almost always a current one for 25% off .com registrations. I realize it’s only a $2.50 savings but $2.50 is $2.50 when you’re bootstrapping.

    • Adam McFarland says:

      Good point Scott. You can also sign up for their affiliate program and get a small affiliate kickback for each domain. We used to do that, but I’ve been lazy lately and keep forgetting to click that link first before buying a domain name πŸ™‚

  5. Jimmy says:

    Hi Adam,

    It is a pretty good starting point. Also keep in mind that programming in general can be outside the “website” or “web app” area. I’ve seen many people who like to learn programming but not necessary interested into building a website. For them, there are many more categories out there that they can choose. These include business applications for specific puposes, scientific-related like mathematics and algorithms, operation-related like B2B communication, transaction-related like financial systems, etc. Just my 2 cents. πŸ™‚

    • Adam McFarland says:

      Good point Jimmy. This is totally meant for an aspiring web entrepreneur. There are a lot more powerful languages out there for applications that are reliant on more than a web app. I have a little experience in Visual Basic and C++ (a few classes in college), but not much more. Maybe something I’ll get into in the future πŸ™‚

  6. nethy says:

    Hi Adam,

    Interesting read. I enjoyed it. I bookmarked several links and installed Measureit. Very useful. (I would also add colorzilla to the list. Amazing how you always get some useful bits from articles like this.

    It’s a tricky subject you dig in to, but well worth it. I guess that each person would approach this very differently.

    For example, CS people go mad at the thought the html-css-javascript-php-mysql is so many people’s first (and in most cases only) “language.” They would probably try to get newcomers to spend 6 months on some non web language. That way you are learning ‘to program’ not to ‘make sites.’ It is also probably a much more direct route to the abstract theories of computer science.

    I like that your approach is ‘get a site up & make money with it. Learn along the way.’

    I think there is another path to take. This one includes absolutely no prior knowledge, not even above average web-savy. Still requires drive & desire to learn: Hosted Platforms. Hosted Platforms means software that is managed by some company the isn’t you. This includes things like webmail (gmail, hotmail etc.). It also includes software for making sites. A lot of it is intended for non-professionals. You can use hosted software to make most common types of sites.

    One way is to start an online shop. Nevblog has an case study post about starting a real online business. You can do this without even knowing how to spell html:

    If you want to get a site up today, after work, during ad breaks, Weebly is definitely worth looking at. You can launch a site free (you’ll probably want to buy a domain name though) very easily. You are constrained with what you can do with it, but that might be good for a first site. You also have a lot of options. You can for example, add a basic paypal shop.

    What I like about this option is that it lets people jump right in as easily as possible and will encourage them to learn. If you play around with weebly, you will probably become a sophisticate we user very fast. YOu will learn about embedding or domain names pretty fast. Then, when you are ready to try out tweaking css & html, you can do so very easily. It will also present you with good reasons to want to tweak the code. You might want to change your site design a little, for example.

    Hosted platforms are just another way to get to the same place. To really be able to implement any idea you have for a site, you will probably need to know html-css-javascript-php-mysql-ajax eventually. It is just a question of where you start. Most important is to start somewhere.

  7. nethy says:

    I think I’ve been triggering your spam filter.

  8. Colin says:


    Is this the same advice you would give now? Especially in light of HTML5 rolling out? Or would it be wiser to put all my energy into learning HTML5? I’m trying to figure out if the time necessary would justify learning to program my sites on my own.


    • Adam McFarland says:

      Colin –

      Thanks for the comment. Good question. Absolutely I’d give the same advice. For the most part I’ve kept the essay updated as time has gone on, although there are a few little things I want to add (like new links and books). You can only fully understand HTML5 and CSS3 if you have a solid background in HTML and CSS, and probably Javascript. HTML5 and CSS3 are natural extensions to what you already know and what you’re already doing, as opposed to “new” languages. They’re also a long ways from being supported across the board on different browsers. Check out

      You *may* be able to get away without learning a server-side language if you utilize HTML5 local storage and some of the new javascript functionality that’s out there, but those will only work in very limited situations, both in terms of the site and the user’s browser. If you’re building sites for say just the iPad or iPhone or Android devices, you might be able to use strictly HTML5 for storage, but you’d be limited. I think for the majority of scenarios you’ll still want to learn a server-side language like PHP.

      The biggest change is that an argument can be made for learning objective C or C++ or Java to program mobile apps instead of focusing on the web…but I suppose that’s another topic for another day πŸ™‚

      Good luck with your learning and let me know if you have any questions. If I don’t know the answer I can at least point you in the right direction most of the time πŸ™‚


Comments are closed for this post.