Agile Zone is brought to you in partnership with:

John Sonmez is a Pluralsight author of over 25 courses spanning a wide range of topics from mobile development to IoC containers. He is a frequent guest on podcasts such as DotNetRocks and Hanselminutes. John has created applications for iOS, Android and Windows Phone 7 using native tools, HTML5, and just about every cross platform solution available today. He has a passion for Agile development and is engaged in a personal crusade to make the complex simple. John is a DZone MVB and is not an employee of DZone and has posted 86 posts at DZone. You can read more from them at their website. View Full User Profile

Do Software Developers Really Need Degrees?

07.08.2014
| 2781 views |
  • submit to reddit

When I first started out my career as a software developer, I didn’t have a degree.

I took my first real job when I was on summer break from my first year of college. By the time the summer was up and it was time to enroll back in school, I found that the salary I was making from that summer job was about what I had expected to make when I graduated college—only I didn’t have any debt at this point—so, I dropped out and kept the job.

But, did I make the right choice?

Do you really need a university degree to be a computer programmer?

The difference between education and school

Just because you have a college degree doesn’t mean you have learned anything. That is the main problem I have with most traditional education programs today. School has become much more about getting a degree—a piece of paper—than it has about actually learning something of value.

To some extent, I am preaching to the choir. If you have a degree that you worked hard for and paid a large amount of money for, you are more inclined to believe that piece of paper has more value than it really does.

school Do Software Developers Really Need Degrees?

If you don’t have a degree, you are probably more inclined to believe that degrees are worthless and completely unnecessary—even though you may secretly wish you had one.

So, whatever side you fall on, I am going to ask you to momentarily suspend your beliefs—well, biases really—and consider that both views are not exactly correct, that there is a middle-ground somewhere in between the two viewpoints where a degree isn’t necessarily worthless and it isn’t necessarily valuable either.

You see, the issue is not really whether or not a particular degree has any value. The degree itself represents nothing but a cost paid and time committed. A degree can be acquired by many different methods, none of which guarantee any real learning has taken place. If you’ve ever taken a college course, you know that it is more than possible to pass that course without actually learning much at all.

Now, don’t get me wrong, I’m not saying that you can’t learn anything in college. I’m not saying that every degree that is handed out is a fraud. I’m simply saying that the degree itself does not prove much; there is a difference between going to school and completing a degree program and actually learning something.

Learning is not just memorizing facts. True learning is about understanding. You can memorize your multiplication tables and not understand what they mean. With that knowledge, you can multiply any two numbers that you have memorized the answer for, but you would lack the ability to multiply any numbers that you don’t already have a memorized answer for. If you understand multiplication, even without knowing any multiplication tables, you can figure out how to work out the answer to any multiplication problem—even if it takes you a while.

You can be highly educated without a degree

Traditional education systems are not the only way to learn things. You don’t have to go to school and get a degree in order to become educated. Fifty years ago, this probably wasn’t the case—although I can’t say for sure, since I wasn’t alive back then. Fifty years ago we didn’t have information at our fingertips. We didn’t have all the resources we have today that make education, on just about any topic, so accessible.

A computer science degree is merely a collection of formalized curriculum. It is not magic. There is no reason a person couldn’t save the money and a large degree of the time required to get a computer science degree from an educational institution by learning the exact same information on their own.

Professors are not gifted beings who impart knowledge and wisdom on students simply by being in the same room with them. Sure, it may be easier to obtain an education by having someone spoon-feed it to you, but you do not need a teacher to learn. You can become your own teacher.

In fact, today there are a large number of online resources where you can get the equivalent of a degree, for free—or at least very cheap.

Even if you have a degree, self-education is something you shouldn’t ignore—especially when it’s practically free.

You can also find many great computer science textbooks online. For example, one the best ones is: Structure and Interpretation of Computer Programs – 2nd Edition (MIT Electrical Engineering and Computer Science)

So, is there any real benefit to having a degree?

My answer may surprise you, but, yes right now I think there is.

I told you that I had forgone continuing my education in order to keep my job, but what I didn’t tell you is that I went back and got my degree later. Now, I didn’t go back to college and quit my job, but I did think there was enough value in having an actual computer science degree that I decided to enroll in an online degree program and get my degree while keeping my job.

degree Do Software Developers Really Need Degrees?

Why did I go back and get my degree?

Well, it had nothing to do with education. By that point, I knew that anything I wanted or needed to learn, I could learn myself. I didn’t really need a degree. I already had a good paying job and plenty of work experience. But, I realized that there would be a significant number of opportunities that I might be missing out on if I didn’t go through the formal process of getting that piece of paper.

The reality of the situation is even though you and I may both know that degrees don’t necessarily mean anything, not everyone holds the same opinion. You may be able to do your job and you may know your craft better than someone who has a degree, but sometimes that piece of paper is going to make the difference between getting a job or not and is going to have an influence on how high you can raise in a corporate environment.

We can’t simply go by our own values and expect the world to go along with them. We have to realize that some people are going to place a high value on having a degree—whether you actually learned anything while getting one or not.

But, at the same time, I believe you can get by perfectly well without one—you’ll just have a few less opportunities—a few more doors that are closed to you. For a software developer, the most important thing is the ability to write code. If you can demonstrate that ability, most employers will hire you—at least it has been my experience that this is the case.

I have the unique situation of being on both sides of the fence. I’ve tried to get jobs when I didn’t have a degree and I’ve tried to get jobs when I did have a degree. I’ve found that in both cases, the degree was not nearly as important as being able to prove that I could actually write good code and solve problems.

So, I know it isn’t necessary to have a degree, but it doesn’t hurt either.

What should you do if you are starting out?

If I were starting out today, here is what I would do: I would plan to get my degree as cheaply as possible and to either work the whole time or, better yet, create my own product or company during that time.

I’d try and get my first two years of school at a community college where the tuition is extremely cheap. During that time, I’d try to gain actual work experience either at a real job or developing my own software.

Once the two-year degree was complete, then I’d enroll in a university, hopefully getting scholarships that would pay for most of my tuition. I would also avoid taking on any student debt. I would make sure that I was making enough money outside of school to be able to afford the tuition. I realize this isn’t always possible, but I’d try to minimize that debt as much as possible.

What you absolutely don’t want to do is to start working four year later than you could be and have a huge debt to go with it. Chances are, the small amount of extra salary your degree might afford you will not make up for the sacrifice of losing four years of work experience and pay and going deeply into debt. Don’t make that mistake.

The other route I’d consider is to completely get your education online—ignoring traditional school completely. Tuition prices are constantly rising and the value of a traditional degree is constantly decreasing—especially in the field of software development.

If you go this route, you need to have quite a bit of self-motivation and self-discipline. You need to be willing to create your own education plan and to start building your own software that will prove that you know what you are doing.

The biggest problem you’ll face without a degree is getting that first job. It is difficult to get a job with no experience, but it is even more difficult when you don’t have a degree. What you need is a portfolio of work that shows that you can actually write code and develop software.

I’d even recommend creating your own company and creating at least one software product that you sell through that company. You can put that experience down on your resume and essentially create your own first job. (A mobile app is a great product for a beginning developer to create.)

What if you are already an experienced developer?

Should you go back and get your degree now?

It really depends on your goals. If you are planning on climbing the corporate ladder, then yes. In a corporate environment, you are very likely to hit a premature glass-ceiling if you don’t have a degree. That is just how the corporate world works. Plus, many corporations will help pay for your degree, so why not take advantage of that.

If you just want to be a software developer and write code, then perhaps not. It might not be worth the investment, unless you can do it for very cheaply—and even then the time investment might not be worth it. You really have to weigh how much you think you’ll be able to earn extra versus how much the degree will cost you. You might be better off self-educating yourself to improve your skills than you would going back to school to get a traditional degree.

Published at DZone with permission of John Sonmez, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Barry Smith replied on Tue, 2014/07/08 - 7:28am

I pretty much agree with this, although I'd suggest that if you simply want a degree to ease your way up the corporate ladder then it doesn't matter much whether it's in CS or just something else that happens to interest you.

Personally, I did pretty much the same as you except that I got a degree in psychology instead, just because that was something I wanted to know more about. Sure, a CS degree would have been a piece of cake after 20 years in the industry while the psychology one was hard work, but it's a chance to broaden your knowledge.

First Last replied on Wed, 2014/07/09 - 7:30am in response to: Barry Smith

> Sure, a CS degree would have been a piece of cake after 20 years in the industry

sure


Chris Odell replied on Fri, 2014/07/11 - 3:06am

I do not agree that you do not learn anything by getting a degree. Actually I should qualify that in that I think you can get a very sound grounding if you follow the syllabus of a formal educational path. I believe this because if you teach yourself there is potential to miss knowledge that can form the base of a solid understanding of computer systems, and programming languages in general.

For example if I want to write web applications, do I really need to know about CPU architectures. Possibly not. However if, as a web programmer, I am also responsible for setting up a server, or Apache or IIS or whatever, than having an understanding of the underlying CPU architecture may enable me to make a better decision about the hardware. It's not a must have, but it could help me make better decisions.

Now I agree you can just acquire this knowledge as you need it, but with some knowledge you may not be aware that you are missing it. I believe a formal educational path can give you this.

I myself did not have a CS degree after having worked in the industry for 4-5 years, so I took a CS post graduate course to fill in holes I felt were missing. I have worked as a software developer for 15-16 years now but I am still glad that I took the post graduate CS course.

Barry Smith replied on Sat, 2014/07/12 - 4:19am

 > so I took a CS post graduate course to fill in holes I felt were missing

I think there's a difference between a post graduate course and an undergraduate course. I don't think an undergraduate degree is likely to teach someone who's been in the industry for a decade or more anything new. A post graduate course may do, though it's likely to be the sort of stuff that's quite specialised and often not used in the real world.

Lund Wolfe replied on Mon, 2014/07/14 - 1:21am

You wouldn't hire an engineer, or scientist, or mathematician without a four year degree.  I think programming is different, though.  It is more like being a craftsman which requires a certain natural talent or the education or applied experience will have much less impact.

I credit community college more than a university degree for teaching me the essentials of programming: data structures, algorithms, largely because of the quality of the teachers.  When I was at the university, their main job was to make it difficult enough to weed out students lacking in logic skills or academic ability/effort.  They were also testing for the ability to learn and apply that knowledge.  That alone has some value.  I believe that has changed in time, but the more difficult, larger programming assignments provided more experience than you would get at most jobs.  That is probably the greatest benefit.

That said, the BSCS degree tells you little about programming ability.  It should help to filter out some of the worst candidates, but it will likely filter out some of the best as well.  It's a nice to have, and a two or four year CS degree is worth more than any certification, but an interview and tiny programming assignments are going to tell you a lot more about programming skill.

An education also doesn't prepare you for real world software development with it's processes, frameworks, libraries, etc.  These should be easy to pickup, but I don't think the BSCS is going to be a good predicter of value as a developer.

Higher education does extend the working life of the brain besides being of value to the individual and society.  It doesn't need to be a STEM degree.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.