Learning How to Program: A Guide. Part IX

Matching Student Goals to Schools

(Be sure to check out part 1, part 2, part 3, part 4, part 5, part 6, part 7, and part 8 of this series if you haven't already).

In the last two articles, I talked about the purposes of higher education, and the strengths and weaknesses of individual schools. Now we are ready for the all-important question: how do you know which school is right for you? The short answer is this: you want to match your intended goals to the strengths of the institution.

Even before you start that process, though, there are practical considerations. You may be able or willing to travel only so far to go to school, for example. You may already have a job, perhaps even one in programming, with a schedule that must be worked around. And, of course, there's money. There's only so much you can spend on school; more to the point, regardless of how much money you could spend, if you have a practical bone in your body, you will want to spend as little as possible to achieve your goals.

There is also, of course, a large social aspect to attending college. Students want to go to schools where they already know people, or are filled with people they want to get to know, want to spend time on campuses they find attractive, to provide opportunities for the kinds of non-academic experiences they want to have. But while I acknowledge all of that, that's really beyond the scope of my discussion. In any case, I urge the prospective student not to place too much importance on non-academics when choosing a school, especially if you are a "traditional" student coming soon after graduating high school, because the fun aspects of going to college are there regardless of where you go.

Let's suppose, based on practical limitations -- proximity, money, etc. -- you have narrowed your choices to ten schools, a mixture of small, private schools, big universities, and online institutions.

Now you have to decide what your goals are. The truth is, very few students spend enough time considering this decision. Most students who were going to college because of programming would simply say that they wanted to become programmers (maybe they would use another term like software engineers), and that all of the schools they had on their list offer degrees in computer science or some other field that included programming, so all of them would meet their goals. Again, though, different schools offer different strengths and weaknesses as regards the three purposes of higher education. You don't want to attend a school that emphasizes a purpose you aren't that interested in, or is weak in the area where you would like to excel.

So why do you want to go to college, then? Is it for academics -- meaning, for our discussion here, that you want to learn the foundations of the science portion of computer science, that you want to help advance the field, do research? Or is it for training -- do you want to get out there and start earning your bread as a software developer, learn the tricks of the trade? And how important is gatekeeping? Do you expect your future employers to care where you received your degree? Is the degree itself more important than the work you'll do to get it?

You need to be honest with yourself here. What is it you actually want to get out of your college experience? Not what you think you should want to get out of it, or what someone else says you should get out of it, but what you want. Let me give you a couple of sample scenarios.

J. CODEHEAD is already a pretty good self-taught programmer who has been coding since childhood. J is just graduating high school, and wants to work at the cutting edge of technology development. While J knows there's a lot left to learn in terms of the practical aspects of programming (training), J is most interested in the academic aspect, the deeper understanding of how computing devices function. In particular, J is interested in computer vision systems, software that allows programs to process images, such as for use in autonomous robotics. Because J also hopes to work for one of the premier research laboratories, gatekeeping is also a factor.

H. PRACTICAL is just getting into programming. H works for the family business -- a small drug store chain -- and has been using software to help automate business practices. So far, this is mainly been macros in spreadsheets and off-the shelf database packages, but H has done enough programming to guess that it could be a lifelong pursuit, and sees a wealth of opportunities for applying programming skills in the areas of pharmaceuticals and small-business management. H wants to go to college for a higher order of training they can be provided by self-study. H is also looking forward to some of the general education courses, but isn't much interested in the academic aspects of computer science, a lot of which seems dry and esoteric from the course descriptions. H anticipates working for the family business for quite a while, and so is not particularly worried about the gatekeeping purpose.

Let me also provide an all-too-typical cautionary scenario:

K. QUICK has already learned a good bit about programming, but doesn't feel ready to take on real programming work. K would like to get to work as quickly as possible. Unfortunately, K is laboring under some misunderstandings. From reading the comments of full-fledged programmers like me who talk about getting started on programming before enrolling in a school, and who also point out the potential flaws of college education for programmers, K has decided that college education is valueless for programmers. K is therefore only interested in the gatekeeping purpose of higher education, intending to enroll in the school only to acquire a degree, and that only as a key to unlock a job. Neither the training nor the academic purposes are worth pursuing.

K's scenario is deeply troubling for a number of reasons. One, because it's based on an erroneous interpretation of the facts. Because of a variety of factors, it's tough to get full value out of a college education, but when there's proper alignment between the goals and abilities of the student, and the strengths and weaknesses of the school, there is tremendous value in it. Anyone who thinks it's just a kind of scam should stay out of it. Second, the attitude that K will bring to studies will demoralizing to other students who are there for training and/or academics. Third, and I've seen this more times than I can count, the student who enrolls in a computing program with no other desire but to get a degree is a student who is overconfident and quick to get in trouble. Worse, when the trouble arrives, students like K will be the first to cheat -- arguing, in effect, if it's all a game, if the only point is to get that piece of paper at the end, what difference does it make if it's the student's work?

The main point here, though, is that different people with different backgrounds will match up best with different schools. Figure out what you want to get from college first, and then start looking for colleges that match your needs. Next up: how do you know that a particular school is any good? Hint: it's not easy.

Share this