Why Learn to Program?

Five years ago, the answer to "why learn to program" may have been simple: to get a nice, cushy job with beanbag chairs and a six-figure salary. Recently, the job market for programmers has lost some of its previous luster--no longer can anyone and his dog start a tech company, get venture capital, and pay programmers a combination of stock options and worth millions and a high salary.



This seems to have taken its toll on the number of prospective programmers; at some colleges, intro computer science classes are at all-time lows in attendance. This is a real shame because programming isn't really about making the big bucks. Though you will certainly be well paid if you are very good, your doctor friends are unlikely to be jealous of your finances once they pay off their medical school loans.

They will, however, be envious of the intangibles.

You Can Play God

When you program, you are a creator. You go from a blank text file to a working program with nothing to limit you but your imagination (and maybe some issues like how long your program takes to run). Programming is like having access to the absolute best set of legos in the world in almost unlimited qualities. Even better, you can get all of your building materials completely for free (once you own a computer) on the internet. Amazing!

It's also great fun to see someone using something that you made. Your ability to improve your life and the lives of your friends and family is limited only by your ideas once you can take full control of your computer. Moreover, your work can be extremely high quality because the limiting factor is not manual dexterity or other non-mental attributes. If you can understand a programming technique, you can implement and use it.

Automate Away Daily Drudgery

Programmers are famous for being lazy--in fact, being lazy is one reason people are drawn to programming. After all, why do something routine and repetitive when you could have your computer do it for you? Programmers have written all sorts of simple-to-use tools that make life easier for them--especially tools to manage the complexity of creating software (for instance, tools to help keep track of all the ways of making a program, or debugers to help improve their understanding of a running program).

But more than that, every programmer has a collection of simple tools that he or she uses on a day-to-day basis, from custom calendar reminder programs to processors for large data sets (especially useful for scientists!). Indeed, the physics community has a history of writing powerful tools that make their lives easier--one tool, HTML over HTTP, created by Tim Berners Lee, eventually became the world wide web. It was originally designed by a physicist programmer coming up with ways of simplifying his life.

Improve Your Computer Literacy and Know the Answer to the "Why" Questions

People are often frustrated by technology when it fails. Although operating systems such as Windows have become much more stable, there are still many security holes exploited every day. For a non-programmer, these issues are mysteries: the machine that never makes mistakes is full of problems, and who knows why?

Programmers, on the other hand, are familiar with the limits of the machine--what happens inside the computer when it takes several minutes to open large files, why a particular security hole is a problem, and why it's so difficult to get large-scale software projects right.

They understand it because they've dealt with most of these issues in their own programs and work with the ``stuff'' of the machine (to varying degrees across different programming languages). This can lead to some exciting finds, such as realizing how you can earn thousands of dollars in Windows solitaire set to Las Vegas style. Maybe not as good as earning real money, but how many of your friends have made $32K on under an hour playing cards?

In sum, programming lets you work with your mind to free yourself to create things that are interesting or useful instead of being limited by the confines of what others have done before, and even when using those other things, you'll find that you can better appreciate and understand them.