Learning Programming By Going to College: Part I
Learning Programming By Going to College: Part I
Does it make sense to learn to be a programmer by going to college? Or are you better off doing it on your own? Read on for some strategies, ideas, pros, and cons.
Join the DZone community and get the full member experience.Join For Free
You've been hearing a lot about agile software development, get started with the eBook: Agile Product Development from 321 Gang.
This post is part of a chapter from my upcoming book The Complete Software Developer’s Career Guide. I’m writing the book live on this site week-by-week.
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 on-site 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.
Be sure to catch Part II of this series, coming soon! We'll cover disadvantages, distractions, debt, and more!
This post is a chapter from my book, The Complete Software Developer's Career Guide. I'm writing the book live on this site week-by-week. If you enter your favorite email address here, I'll send you the prior chapters and get you caught up - then send every new chapter as it comes out!
Published at DZone with permission of John Sonmez , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.