Is a University Degree Necessary?
Recently a young friend of mine from Brazil sent me an email asking me if I thought it was necessary for either a programmer or a systems administrator to go to a college or university.
I am asked this from time to time, and for me the question is both simple and complex.
When I started in what became computer science universities were one of the few places where most people could even touch a computer. Yes, the government and some companies used computers, but they certainly were not the place to learn about how to program them. You might get some training in how to run the computers (what we called an “operator” back in those days), but being trained in programming was typically left up to a college or university, where you could use their computer to practice your black art. Even the training to be an “operator” was typically done by a commercial school, the military, or some other type of formal education.
One of the reasons for this, of course, was the fact that computers were really expensive, and only universities could really afford one to be dedicated to teaching.
As students your programs were typically run at night in batches so you got one “turn-around” on your program per day. Finding magazine articles on computer science was hard, and finding books was even harder.
However, the knowledge that actually secured my first programming job outside of college was knowledge that I learned on my own by reading books and practicing on a small computer at the university....it was nothing that had been taught by my professors. I had learned to program in machine and assembler language from reading books, and this was what interested my first employer. I proved my ability to do this type of programming by showing them many programs that I had written in PDP-8 assembler. They wanted to know if I could learn to program in IBM's assembler language, and I (perhaps brazenly) said that I could if I could have a book on the language and access to a machine. They hired me.
Today some things are different, and those differences lean in the direction of allowing even more self-study.
Sophisticated computers with sophisticated operating systems (many of which are in Free Software and Open Source) are available for use and study at very low cost. The Internet provides thousands of articles on computer science published over the years, many of which are “free” for download.
Not only are there operating systems, but there are compilers, databases, networking programs and all sorts of other programs to allow a young person interested in computing to investigate almost anything they want to learn.
In addition there are papers, books and Internet forums where people can pose questions and get answers. In fact, universities such as MIT and Rice have been posting their course information on the Internet for people to read as they wish.
So what does a university offer above and beyond the information which can be found so easily on the Internet today?
First of all, a university develops a curriculum. This is a list of courses which the university feels is the basis of what a student should know for a particular topic, whether it be business, or electrical engineering. The curriculum may include math, natural languages, some humanities, some physical sciences--in other words background knowledge that will help the student as they go through life.
Realizing that the faculty only has limited time with the students, the discussions around which studies are most needed for any future need of the student are often long and tedious. I remember years ago trying to “retire” a course that we felt was now obsolete and replace it with a “more modern course”, but had one professor point out a very real need to keep that older course in the curriculum.
Secondly the university develops the course materials for that curriculum. In the old days that would mean selecting a book (and in the always changing computer field books quickly became obsolete), finding other materials for the students, developing a flow to the presentation of the material and (of course) developing the tests.
Third, the university offers a convenient place for the student to get their questions answered, whether it be from the professor themselves, or from the other students who are studying the same information.
Fourth, the university offers a place for research to be done, and the use of students in doing this research not only gives instruction in how to attack and solve a problem, but allows the student to have a real and practical view of how the knowledge is applied, and how to find data and sift through it to find information. In reality, a university is not about “training” or “knowledge”. The real job of a university is to teach a student how to self-educate, and (of course) to demonstrate that the student is capable of that through testing.
I have advised people who want to learn computer science on their own to get a college catalog (or several from different universities) and look up the curriculum that they want to study. Make a list of the courses, and from that a list of the books and magazine articles that those courses say are necessary to read. Usually you can get this from the book lists provided at the college bookstore for each course.
Now read the books and practice what they talk about. Do all of the problems at the end of each chapter. If you have questions, find a forum on the Internet treating that topic. Scan the forum to see if anyone else has already asked your question, and if not, ask it.
Join in the forums to discuss topics.
If you are studying computer science, you might want to join a project in the area that you are currently studying. See how that project implemented some of the theories and algorithms you are studying.
Keep doing this until you have finished all the books.
Of course this procedure does not supply sports, physical education or late night beer parties, but for someone with enough drive and ambition, they can certainly get the equivalent of a university education on their own.
What else does a university do? A university allows you to meet different people from different walks of life with different views on topics, but these days the Internet also allows that to happen.
The university also “certifies”. The diploma that you receive in effect states that you followed a certain curriculum, and to the satisfaction of your professors you both know the material and have survived the learning process....both of which are important, for now you will find that your learning is just beginning.
There is no way that a university can feed you the information that you really need for your job in the few short hours they have you each day, nor in the late-night hours that you spent in the library. Now you will be going to a job which is forty or fifty or sixty hours a week and you will learn much, much more.
What will happen if you do not go to a university? You might do what I suggested above, and you could be one of those very bright, hard-driving people that learn what you need to know as you need to know it. I have known several self-taught, self-motivated people who were highly successful without the university degree.
On the other hand there are lots of people who do not get the breadth of knowledge that the university provides, and they become very focused, lacking the width of knowledge that a university offers.
I know some people who decide what body of knowledge they need for a particular job and find out later that they were woefully underestimating what knowledge they needed. Or they studied it, thought they had the knowledge they needed to the depth and understanding, but were mistaken.
This is one of the things I learned from taking the LPI exams. While I had a good grasp of the concepts of computer science and a lot of experience in maintaining Unix and even Linux systems, the breath of knowledge about running a modern-day enterprise from a systems administration standpoint was lacking. Fortunately from the objectives stated at the LPI site and the amount of free information on the Internet I was able to fill in the information that I needed to pass the test.
A university degree is one more thing to add to your CV that potential employers may want to find, but does not guarantee a job. Likewise a person who knows a broad range of material, has demonstrated their capabilities through Open Source projects or other types of work, and has some certifications behind them also have a good chance of getting an excellent job.