Basic Advice For Learning Computer Programming

Some time ago, I received the following e-mail:

I am interested in getting into computers and designing software and websites. You said in a yahoo post that you did not get a degree but learned everything yourself. How did you do this? Where did you get your information from?

My reply:

I started out by playing with Web pages. Then, as people asked me to make things for them, I searched on the Web for examples of how to do it, or read self-help books (think “For Dummies,” “Sams Teach Yourself” and Wrox softcovers) to teach myself how to do things.

If you want to make a career of Web development, my recommendation would be to do so in a more orderly manner than “learn as you go along.”

I would say this: Designing a Web site, and programming it, are two very different skill sets. You can be good at both, and great at one, but it is very difficult to be great at both. Design is left-brain, programming is right-brain.

That doesn’t mean you can’t do both; it means that you should expect to specialize either in design or programming. You may be that rare person who can master both, but expect that one or the other will be your actual focus.

I wrote a post a while back on what I think makes sense for a beginning programmer / designer to self-teach:

There are a number of fast-track Web development cheats you can undertake these days, that weren’t available when I started out.

The smartest one is to learn WordPress, which is far and away the most popular content management system in the world, meaning there’s plenty of work in it. Start by learning how to make WordPress themes. A great book to learn the basics is WordPress Web Design for Dummies,

What you really need is opportunities to practice. To that end, you should look for ways to make very simple Web sites; that is, sites that are just basic HTML and CSS, so you can master the design and basics first.

The obvious source of these opportunities are friends, charities and small nonprofits. Think wedding sites, youth sports teams, animal shelters, food banks, etc.

You can find nonprofit organizations a number of ways. Search Google for your local United Way and Chamber of Commerce, and ask them for the names of some charities; or search for your state name and “nonprofits.”

Don’t just focus on charities that don’t have a Web site; consider those that do, but have ugly / broken ones. Keep in mind, however, that many nonprofits have Web sites made or maintained by volunteers or donors, who may resent you coming in, or may lack the skills needed to care for a well-made Web site. (For example, a lot of nonprofits will make their Web sites in Microsoft Publisher or Microsoft Word, then simply save that as HTML and upload the site.) Or, if you make a Web site for a charity, they will need you to do everything from getting it online to keeping it online.

Once you have made a few nice Web sites that you feel confident in showing off, start applying for jobs. Don’t try to go out on your own at first, unless you have steady employment elsewhere; when possible, learn your trade on someone else’s dime.

Finally, if you decide to go the traditional, learn through school route, make sure that any art / design school you attend is accredited by a NASAD organization. If you are going the programming route, make sure the school or college is accredited by an ABET organization. Going to an accredited school means you can get federal financial aid, your credits will be largely transferable to other accredited schools, and your degree will likely be recognized if you ever decide to get a higher degree.

Hope this helps.

My correspondent followed up with this:

Thanks so much for the information. I’m interested in programming more than websites. Eventually I would like to get into apps and software. Would the best way to do this be take free classes in programming?
Thanks again

My response to that message:

If you intend to work for someone else, or you are fairly young and just starting out, going to an ABET-accredited college is the wisest path. While that costs money, you should find that as long as your grades are good, you will find a good-paying job immediately after graduation, in any economic situation. As in, go to a state school, borrow the $40,000 or so you’ll need to get your degree, and accept that the first couple years out will be lean while you pay those loans back.

If you intend to self-teach, a few seminar / professional classes wouldn’t hurt. If you want to work for someone else, focus on certifications, such as MCPD or Zend certification You don’t necessarily need the certifications, just the classes they teach for certification. (Although, as a practical matter, a certification and a good portfolio is every bit as good as a bachelor’s degree.) Those classes are going to focus on the practicality of getting something done, rather than the theory.

In other words, if you go to programming college, they will teach you the theory of how to program, and give you some hands-on experience to back that theory up. If you go the certification route, they will show you how to program, and explain why it works as they go along.

The former is better for long-term professional growth; the latter is better for getting a job right now.

Invest In Learning

The bullet points of my advice for getting started in the programming world:

  • If you can afford it, go to an accredited school and learn the skills you need.
    • If you can afford to get all the way through to a master’s degree, or even a doctorate, do it. Your long-term earnings will pay back in spades.
    • A bachelor’s degree is better than an associate degree is better than a certification, but all of those are better than nothing, especially when starting out.
  • Wherever possible, learn your trade on someone else’s dime. In other words, once you get out of school, don’t go out on your own; go work for someone else.
  • If you really need to learn as you go along, the most important thing is to have a strong portfolio of recent work.
    • Learn WordPress, as it’s relatively easy to program / theme / use and it’s wildly popular, meaning you will always be able to find work in it.
    • Look for charities, nonprofits, community organizations and the like to get started on developing your portfolio, but understand that working for broke people has a lot of pitfalls.

All links in this post on delicious:

Leave a Reply

  • Check out the Commenting Guidelines before commenting, please!
  • Want to share code? Please put it into a GitHub Gist, CodePen or pastebin and link to that in your comment.
  • Just have a line or two of markup? Wrap them in an appropriate SyntaxHighlighter Evolved shortcode for your programming language, please!