Learning Programming By Going to College
In the next three chapters, I’m going to talk about three different strategies or paths you can take to get started as a software developer.
First, we’ll talk about going to college; then we’ll talk about enrolling in a coding boot camp, and finally we’ll talk about self-education.
Any of these paths are viable, but I want to lay out the pros and cons of each path and give you a solid strategy that will help you, if you choose to embark on that particular path.
Ok, let’s get started by talking about going to college or a university, the traditional education route.
I’m not going to spend much time talking about what college is since I’m assuming you’ve heard of it.
Instead, I want to talk about what this specific choice involves.
If you choose to go down this path, it means you are going to enroll in an accredited school which will take anywhere from two to six years to get a degree in a program like Computer Science, Computer Programming, or something similar.
This is the route most software developers take, but is it the best one?
Let’s find out.
First, let’s talk about the advantages of going to college.
Your parents probably think there are plenty of advantages—in fact, they probably think college is the only option—but I want to be as objective as possible.
Even though I’m not exactly a fan of traditional education myself, I have to admit there are still some real benefits to getting that piece of paper.
Many Companies Still Only Hire Developers with Degrees
Even though we are in the 2010s, many companies are still pretty short-sighted when it comes to their hiring practices—especially for developers.
Often, you’ll find that larger corporations with HR departments will pretty much only hire software developers with degrees from accredited colleges or universities.
This doesn’t mean you can’t get a job at one of these companies without a degree, but it might be very difficult to do so.
This is true in my own experience: Before I finished my degree in computer science, I was hired as an employee at Hewlett-Packard. I had already been working as a programmer for the past few years. In fact, I was a contractor working onsite at HP.
Normally, HP doesn’t hire anyone who doesn’t have a degree, but they approved me as an exception since I had been recommended and had already proven myself as a contractor.
It took jumping through many hoops for me to get an offer, but when the offer finally came I was sorely disappointed.
Instead of taking into account my experience and ability, I got classified into a non-degree category, meaning they put me at the very bottom of the pay scale and told me I was lucky to get an offer at all.
I only tell you this story to give you an idea of the prevailing mindset at certain companies who typically hold a degree in higher regard than they should.
By getting a real degree, you will potentially open yourself up to more opportunities you wouldn’t have access to as someone who is self-taught or went to a coding boot camp.
There are plenty of companies that will hire someone without a degree—and not discriminate against them—but overall, choices without a degree will be more limited.
Just a fact of life.
Bottom line: having a degree will give you more job options than you might have without one.
Good Base Knowledge of Computer Science Concepts
Many self-taught programmers are very good programmers but lack knowledge of some of the computer science concepts which are taught in college.
Today, these skills are not as important as the more practical aspects of software development, but I do believe every software developer should learn about operating systems, data structures, algorithms, predicate logic, computer architecture, and many of the other topics found in most computer science degree programs.
These topics can be difficult to learn on your own—especially if you don’t even know they exist.
As we’ll discuss in the next chapter on “Getting a Job,” you’ll find that many top companies give coding interviews that specifically target this kind of traditional computer science knowledge.
I’m a very pragmatic person and I am, for the most part, against traditional education systems, but I do feel that more programmers need to understand some of the underlying basics and theory behind the code they are writing.
While college is less likely to give you the pragmatic knowledge you need to work as a software developer today, most degree programs will give you the depth of knowledge in computer science concepts that can be extremely useful when getting into more complex programming scenarios, like working with real-time systems, developing new algorithms, and making them efficient. Newer fields like machine learning also need people with a deeper understanding of these computer science concepts.
One thing traditional education does better than anything else is giving you structure.
Some people simply cannot operate without a clear structure in place, telling them exactly what to do and when.
Many people have aspirations of becoming a software developer, but never end up doing it because they get overwhelmed by all the information they need to learn and don’t know how to organize that information in a way that will progress them down the course of self-education.
Other wannabe software developers are simply too unmotivated and lack the self-discipline required to self-educate.
If you are the kind of person that doesn’t seem to be a self-starter or has problems taking action when the path is not clearly laid out for you—be honest—you would probably benefit from the structure a college or university provides.
If you try and learn on your own, you have to decide what and when to learn, and how much time each day to dedicate to learning.
If you enroll in a computer science program or other program at a college or university, you’ll pick some electives and have some say in your schedule, but you’ll have everything else planned out for you. Then, you just have to stick to the plan.
Internships and Other Opportunities
Colleges and universities are often able to offer internship opportunities or other connections and resources that you might not have access to on your own.
Many companies recruit directly from colleges and have pre-established relationships with them, which can make getting a job easier.
Many colleges also have programs and opportunities available with different foundations, conferences, and other events that can greatly help you with networking and making the right connections.
This can definitely be a huge advantage, especially if you want to work for a big technology company like Google or Microsoft early on in your career.
A seasoned developer might be able to get a job at one of these larger technology companies based on merit and experience, but for a software developer just starting out, internships are a great way to get your foot in the door. Since most internship programs are run through colleges and universities, you must be a student or have recently graduated in order to have access to them.
Ok, now it’s time to get into the disadvantages of going to college.
This is the part of the book your parents aren’t going to like.
Unfortunately, there are some definite disadvantages to going to college. Some obvious, some not so obvious.
The first and most obvious drawback is time.
Going to college is going to take a minimum of four years out of your life. That’s time where you can’t really be working as a full-time software developer and gaining experience to put on your resume.
This is a pretty big commitment. A large amount can happen in four years’ time.
Therefore, you really want to think about whether the benefits of having a degree are worth giving up four years or more of your life for.
There is also the time commitment of college itself. Not all of the activities and time you spend in school will directly benefit you. You’ll be expected to take core classes that have nothing to do with becoming a software developer, so you could conceivably see that as a waste of time.
Taking tests is also arguably a waste of time, as it doesn’t benefit you directly.
The same can be said of listening to lectures, especially if you could have absorbed the same amount of information in a quicker way.
Traditional education is not designed to maximize the use of time, as often the programs must be taught to the lowest common denominator. (Not true for all schools, of course, but in general.)
This is one of the main reasons I am against traditional and compulsory education. I just feel it isn’t very efficient, which is something you should consider before you dive in.
Next up is money.
Everyone wants more of it, no one wants to part with it, but if you go to college, you are most likely going to have to part with a great deal of it.
I’m sure I’m not telling you something you don’t already know when I say that school is expensive, and it's getting more and more expensive every year.
If you go to college, expect to pay a large sum unless you get a scholarship or start out in a community college—more on that in a bit.
If you want, or are required, to live on campus or you have to finance your education, you can expect the bills to be even larger.
I know plenty of software developers and non-software developers who are still paying for their higher education many years and even decades after getting their degrees.
It can be very difficult to justify the cost of an expensive education when you consider the lost years of pay you would have received from working during that time, as well as the interest on school loans in comparison to the increased salary—if any—you get from having a degree.
Yes, this viewpoint is a bit jaded, but I’ve coached and counseled too many software developers who racked up huge school bills getting their degrees. Many of them ended up in financial messes that will be extremely difficult to extract themselves from.
Don’t worry, though. I have some ways to mitigate this problem if you do want to go to a traditional college, which I’ll talk about in the strategy section.
One final word of advice.
Make sure you actually add up all the costs of going to college, including interest, room and board, and lost employment income, so you at least know what you are getting into.
Claiming ignorance and asking the government to wipe out your student loan debts is not only irresponsible; it’s just plain stupid.
Outdated or Non-Real World Education
It takes a long time to publish a textbook.
It takes a long time to create a degree program and get it approved or to add new classes to an existing program.
Often professors in colleges and universities are very disconnected from the kinds of software development which are being done in the real world.
As a result, educational programs at colleges poorly reflect the skills and technologies which are most critical to know for success in a real software development job.
To be fair, many traditional schools are realizing this weakness and taking some steps to make their degree programs more relevant to what is happening in the software development world today—but many are not.
That is part of the reason I am writing this book.
I want to give you all of the soft knowledge you need to know about a career in software development because I feel that most colleges and universities don’t provide it.
You can of course overcome this limitation by learning the other aspects of software development on your own, but at that point you really have to question why you are paying for a degree in the first place.
There is a reason why there are rankings for the top party colleges in the country.
There is a reason why some people say college was the most fun time of their lives.
College is full of distractions.
Alcohol, parties, protests, sports, concerts, snoring roommates… Distractions are everywhere.
I know plenty of software developers who took six or more years to get their degrees because they couldn’t just buckle down and study. They got too distracted by all the other things college has to offer.
While some people might see this as an advantage, if you are serious about becoming a software developer, the college atmosphere can be a huge distraction.
I don’t think many young, high school graduates consider this aspect of going to college.
They just assume they’ll be able to study and get the work done and party on weekends.
It doesn’t work like that.
When I did go to college, there was a party every night. It was extremely easy to neglect studies, sleep in, skip class, and do everything but school work.
Yes, you can avoid all of that stuff and just focus on what is important, but make sure you at least know what you are getting into.
If you are choosing the traditional route and going to college, it’s important to have a plan.
You don’t want to end up with loads of debt and few benefits, like too many college graduates today.
Let’s talk about a few strategies you can utilize to get the most bang for your buck.
Start with a Community College
First of all, I’d highly suggest going to a community college for the first two or even three years of your degree in order to save a ton of money.
If you get a scholarship, you can ignore this advice. However, if you are paying out of pocket or are taking on student loans for your degree, going to a community college first can save you a bundle, and you can still get a degree from a more prestigious college or university.
The key here is to make sure the credits and program you take at a community college will transfer over to the school where you’d eventually like to get your degree from.
So, make sure you check that out first.
Next, I’d really recommend not going into debt, if you can manage it.
Debt is horrible. Debt can ruin your life.
Some people see educational debt as good debt, like a mortgage on your house or investment property, but I don’t.
I find that the debt incurred from school rarely pays off and it forces you down a path you may not want to follow. It’s like shackling yourself to a huge weight you are going to have to carry around for the next five, ten, or even more years.
Don’t do it.
Instead, here are some ways to go to school and avoid debt:
- Take a year off, get a job, and save money. You don’t have to go to college right after high school. Saving up some cash can really help you avoid going into debt.
- Get scholarships. Not for everyone, but if you can manage to get a few scholarships, this can greatly help to reduce expenses.
- Get a part time job while going to school, which enables you to pay for school. It’s not fun, but it will pay off in the long run.
- Live at home. Yes, it sucks, but you’ll probably get more work done and you’ll definitely pay a lot less money.
- Move to a state where education is free, like Alaska. Or move to Germany temporarily.
You can even combine these tactics to reduce debt further.
Trust me, it might seem like going $40k into debt to get your education will be worth it, but it’s going to take you a really long time to pay back that debt—especially with interest.
And what happens if you can’t find a job after that huge investment?
Make Learning Your Responsibility
Going to school and getting a degree is great, but it doesn’t mean you learn anything.
If you are going to spend the time and money to go to a college or university, you better get something more than just a fancy piece of paper.
Unfortunately, no one can teach you anything. You have to learn it yourself, regardless of where you learn it or from who.
Always remember that education is your responsibility.
Don’t read textbooks or do assignments just to pass the test and make the grade.
Instead, focus on actually learning and applying what you are learning as much as possible.
That is how life works in the real world. No one is going to “teach” you anything. It’s going to be up to you to learn, so it’s better for you to get used to it now.
I can’t tell you how many college graduates I come across who have spent tens of thousands of dollars and years of time on an education that is completely worthless. They thought that going through the motions and getting a degree would make them educated.
It won’t, so if you are going to enroll, do the work and take the responsibility of learning upon yourself, rather than giving it to the degree program you enrolled in or the professors who are teaching you.
Do Side Projects
Going to school is going to take a huge bite out of your work experience time.
It’s a serious deal to dedicate four to six years of your life to something.
One of the biggest problems new graduates have is that since they don’t have experience, they can’t get experience, and they have a difficult time finding a job.
One really good way to avoid that problem is to do side projects while you are still in school.
College is the perfect time to build up your portfolio or to start building a side business which can give you some valuable experience and perhaps even some income while you are waiting to start your career.
Side projects can also help you to apply what you are learning so that you’ll be less likely to forget it and more likely to gain the deep understanding needed to apply knowledge in the real world.
Plus, how many stories can you recall of college students who started side projects and then became millionaires off of them?
Microsoft, Facebook, Yahoo, Dell, and Google all started from side projects in dorm rooms, basements, or garages.
That doesn’t mean you are going to get rich off of doing a side project from your dorm room, but you never know. At the very worst, you’ll learn something and you could end up creating your own job for yourself when you graduate.
I mentioned this earlier, but I would highly recommend taking advantage of the opportunity to participate in internships in college.
Internships can be one of the easiest ways for a new software developer without experience to get a job at a big company like Google or Microsoft, or even just to get a job period.
Internships can also make up for the lack of real world experience in many degree programs.
You really don’t want to get your degree and then be hitting the pavement with all the other new grads with no experience.
Therefore, make sure you take advantage of an internship program if you can—even if it doesn’t pay well.
You can make money later in your career. Right now you need experience.
Get Your Degree While You Are Working
Here is the strategy I used to not go into debt, not lose years of experience, and still get my degree.
I went to school for a year, then when I got my summer job that turned out to be a good full-time job, I dropped out and worked for a few years and then re-enrolled in an online school that I could do while I was working my regular job.
As a result, I never had to live like a poor person. I had four more years’ experience than most college graduates and I still got my degree.
Also, since I was working a full-time job as a software developer already, my degree was super cheap and easy to obtain. Plus, I could apply what I was learning to my work.
Now, I realize not everyone can do this.
If, however, you are a self-taught developer or you already have a job, I think this is an excellent option.
You could even do this while working in another, somewhat related field.
The only drawback is that it’s quite a bit of work to do a regular job and go to school—it certainly takes self-discipline—but if I were starting over today, this is the route I would take for sure.
Next up, we’ll talk about a less traditional and much more debated way to get into the field of programming, enrolling in a coding boot camp.
Sometimes learning how to learn is more important than mere learning. Check out my course “10 Steps to Learn Anything Quickly” for a few tips on boosting the rate at which you learn