In an age where experience seems to be paramount, does anyone still see great value in having a college (specifically Computer Science) degree? Would those three years be better spent working in a top-shelf software company?
A couple of months ago I took a job as a software engineer after basically completing the general education portion of a college degree (~2years in the US).
I feel like while I've learned an absolute ton on the job (many times over what I've learned at any of the college level programming courses I've taken), the biggest benefit that more college level programming classes would have given me would be more background in programming and more exposure to things that would improve my ability to think in the proper programming thought paths and would allow me to write better code more easily (at the cost of course of spending a lot of time in said classes writing pretty much useless/contrived code to understand the concepts in the first place).
So while I don't regret taking the job in the least, I'm also going to try to take a programming class or two every semester to try to supplement the stuff I'm learning on the job (as a bonus, my work is willing to pay for said classes).
I may or may not eventually get a degree this way, but I think if I can find the right classes to take the knowledge I gain through them will be beneficial to my work and value as a programmer.
Yes, I think so. On a couple of levels.
Firstly, from financial/career point of view. The truth is that employers will look for a college degree for most professional development roles. I'm not saying that for, say, a Java development role, someone fresh out of college would be better than someone who had 1/2 years of coding experience, but from an employers point of view it is a safer bet.
Secondly (and this is related to the first point), finishing a college degree course demonstrates that you are able to study/pass exams and learn to a high level. This shows a certain amount of dedication and intelligence.
Finally, doing a college degree should point you towards different aspects of technology, generating both knowledge and interest in areas that you may not even be aware of.
I'm a big fan of self learning (and you generally need to be a self learner in IT), and yes, if you want to be a really good, say, Java developer, in 4 years, then you are better off spending the next 4 years working on Java. But it will not guarantee that you are going to be the best Java developer in 10 years time.
I think yes, it does matter. Even if you know a lot of programming before you start at college/university, there is still a lot more to learn:
- How to work with others in groups/teams
- How to get things done in time
- How to work on large projects.
- What companies expect of you
- How to do other, related tasks (you might not want to be programming for the rest of your life)
In adittion you will probably refine your skills. Being self-learned you will most certainly have misunderstood stuff, or not have understood it entirely. A teacher and textbook can fill in these blanks.
Most universities/colleges will have projects where you will be able to practice and gain experience in a way you can't do at a job. If you are working then you don't have the time to try new ways of working in a team, but a university/college project doesn't have to be completed at the deadline, as long as the report is. This means you and your teammates can experiment with how you work and who does what. It also means you can get pissed-off with your teammates without risking your career.
A degree does a few things
demonstrates that you have a certain level of ability to learn and think. For your first job, a good degree is probably the thing that gets you a seat at the interview table.
gives you a comprehensive foundation. In programming, the broader your knowledge, the stronger the developer you will be.
if the school is any good it will help teach you to think. Especially if you do a graduate degree. And hopefully that will set you up for self-learning habits for the rest of your life.
IT isn't usually an end in itself - its value is in creating tools to accomplish a goal. If you can broaden your education to include area where IT is used (e.g. business), then you will be that much more useful to an employer. You might want to think about your courses in terms of what they will do for you and how they will set you up to take advantage of opportunities that arise, not just in terms of that first job.
If you have a respectable company that wants to pay you full-scale competitive wages right now, drop what you're doing and go to work for them. You should not pass up an opportunity to gain real-world experience. If you do not have a dream job waiting for you right now, finish school! A formal CS education has tremendous value. The obvious question underlying yours is "are you trying to find an excuse to quit school?"
Some related advice: As a grissled "experience-based" developer, I know that significant real-world accomplishments in software development matter more than having a specific CS degree. However, you MUST eventually get some kind of college degree. A B.A. in Art Appreciation will do. The accomplishment of the degree speaks more loudly than the specifics of the degree.
Whatever your reasons for choosing a CS degree and working in software, you need to follow your passion and let it guide your decisions.
"Passion" is what makes run run faster than the other guy to catch the pretty girl. "Fear" is makes you run faster than the other guy to avoid being killed and eaten. Either way, you will be running for the rest of your life. Pick the motivation that you will enjoy having as your master for the next 50 years.
In my opinion, a degree will only continue to increase in relevancy as time and complexity progresses.
It doesn't always need to be about knowledge at the college level, because there is no doubt that a person will have to restructure the way they think depending on the company they join.
But! A degree is proof that somebody can lay on a table that says, "I can, and will, commit to something challenging." A person has to sit there and question the commitment of somebody without a degree. Even a genius lacks in other areas outside of their domain. I would want somebody to experience and understand more than just programming. There are other skills taught in college that I'm sure a person doesn't focus on when they self-teach them self.
Academic diversity: communication, writing, further study in science, design, leadership. It all molds a person into more than just a programming machine. Eventually, you might want to move up the food chain.
All in all... Some things are much more important to certain people. Those people are going to be the ones analyzing why a person skipped getting a degree. But if they don't, and they offer you a job, supplement your work while you continue your education. ;)
Whether you need a degree depends entirely on your own experience and the sorts of companies you want to work for. For example, if you have very little experience — say you started learning to code in college — and you want to get just an average industry job, a degree is pretty much a requirement.
On the other hand, if you've been programming for a decade by the time you're ready to go to college, you've actually done some professional-level coding, and you understand things like computer architecture and compilers already, a degree is much less necessary. At that point the more experience you have the less a degree matters.
Personally, I don't need to finish my degree. If I ever decide to look for a new job, my résumé has plenty of industry experience working on well-known products for well-known companies — enough that, frankly, anyone who felt my lack of degree was a sticking point would look pretty foolish.
I know plenty of people in similar positions in our industry. But like I said, if you're just starting out and you don't have a similar kind of background already, you'll be a lot better off at least going partway through school and doing a couple of internships with recognized leaders in your area of interest.
In general, those who have college degrees think they are valuable, and those who don't, don't. So you need to think about who you will want to hire you.
My personal advice would be to pursue a degree. I meet a lot of people who wish they'd gotten one; I don't think I've met anyone who wishes they hadn't. Or think of it this way: ten years from now, will it be better to have 10 years of experience, or 7 years of experience and a degree?
Yes, it does matter. If for no other reason, it will help you land that spot in a top-shelf company. There are exceptions of course... Jamie Zawinski and Bill Gates comes to mind.
Some specifics:
- There's a lot of computer science you just won't pick up on.
- It's a good place to do projects.
- Dropping out gives the impression (fairly or unfairly) that you can't finish a hard task.
- In a lot of the world, having that piece of paper is the entry way to a lot of opportunities. It may not be fair but that's the way it is.
I myself dropped out to take advantage of a really spectacular opportunity, but I went back back to school afterwards and absolutely don't regret it.
HTH!
A degree basically gives you two things: a credential, and (hopefully) some new knowledge.
As far as the credential goes, being able to put a college degree on your resume will make a lot of people take you more seriously. Some employers will put your resume straight into the recycle bin if you don't have a degree on there. Often the degree doesn't even have to be remotely related to the job you're applying for, it just has to be there. A degree from a prestigious school is often a plus, but again, just having a degree is the big leap from not having one.
As far as actually learning something this is going to depend a lot on where you go and how you approach your studies. If you go someplace that recruits good students and has high expectations, you'll learn more than someplace that caters to the lowest common denominator. If your goal in going to college is to learn as much as possible, and you choose classes and approach each class with that in mind, you can come out with a heck of a lot more knowledge than you went in with. On the other hand, if you don't make learning new stuff a priority, you'll come out of college with a credential and little else to show for it. I'm not just talking about students to major in booze and broads here, students who try to game the system to get the best grades possible in hopes of impressing future employers (which usually doesn't work, since employers don't care much about your grades) can end up with almost no new knowledge to show for their time at university while someone who picks challenging classes and spends their time thinking bout how to learn stuff rather than being grade obsessed will learn quite a bit.
While a CS degree will teach you quite a bit about programming if you approach it right, a lot of the other things that you can learn in college can be just as valuable, if not more so, than programming skills. Joel Spolsky says the most valuable course he took at Yale was one that they wouldn't even let him count towards his CS degree, but it taught him how to write and write well. Writing well is one of the most important skills you can learn in college, and it's what separates the coding drones from the programmers who really make an impact. Universities will try to teach you how to write in English 101 type classes, but I think the best way to learn to write well isn't in a composition class, it's to take a class in a subject area you really love that requires a LOT of writing. Writing on something you're passionate about, and having it critiqued by someone who knows what they're doing, is the best way to develop really good writing skills.
College probably won't teach you more programming skills than a three or four year stint at a good company, but if you approach it the right way, I think it will make you a better programmer than spending that time banging away at business logic.
Absolutely it matters. I won't even consider hiring someone without a degree from an accrediteted 4-year university (no online schools).
1) It shows discipline. Sure, college is easy, but it does show a level of discipline for someone to commit to something for 4 years and finish successfully.
2) College teaches you how to do research, how to solve problems, etc. The american high school system is a joke in comparison.
3) I want my developers to be more then programmers. I want them to develop into leaders. Can you really expect someone without a college degree to move up?
And listen, you may not want to always be a developer. You may get sick of it after a few years (as many do). Hell, development might eventually go the way of manufacturing in America. A degree will allow you to take other career paths far more easily.
my $0.02
I think a degree is valuable in and of it's self. I have heard there are jobs that require a degree but don't even bother with the subject. They thought is that no degree covers what they want and if you can get a degree they can teach you that. As an example a group I'm involved in at my university is doing high assurance software and security stuff has a liaison with the NSA, she has a degree in music.
As an engineer and manager who reads resumes, interviews, and hires other engineers, I would say a degree definitely matters. All of the best engineers I've worked with have one (often a MS or PhD as well) and are also self-learners.
There are exceptions, of course. Specifically, if you are extremely motivated and have the ability to commit to learning computer science theory on your own, or if you just want a job and don't care to do anything really deep or interesting, then you can skip the the degree. I think you need it for anything bordering on research. Most of the other benefits of a degree (demonstrating competence, working in teams, etc) can be gained on the right job, but unless you really know where your career is going to take you and are confident that you won't need a degree, I highly recommend getting one.
Sadly it does matter to Hiring managers if you have a degree. In the long run it is smart and get things done that matter.
I was not in a position to go to college without working full time, so I worked fulltime and went to school part time. I got my degree in 2007; however I have been a working professional for 8 years and keep moving up the ‘ladder’.
What has given me the most success is the fact that I am a self learner and willing to put in extra time to learn something. Not waiting around for somebody to show me how to solve a problem, but going to Google and now stackoverflow to learn solutions to problems and then implement them.
Coaching is an underrated aspect of being a professional. Always be able to understand that other people can teach you something.
The degree is like a badge, it will get your foot in the door, but it won’t keep open it for you. You have to be willing to work hard, and separate yourself from your peers.
Unless given the opportunity to work with the likes of Doug Lea or Josh Bloch, I would stick to getting a degree. On a second thought, since work and school aren't mutually exclusive, I would work for them and then take classes in the evening. Yes, getting a degree is that important.
here's the technical promotion ladder at one large engineering company.
The way promotions work here is that you prove that you are currently performing at the next level in all categories, and after you prove you're currently performing the next level up, they promote you to that level.
Note that you won't get hired without a college degree, and you won't get to Senior Engineer without a masters degree. You would have to be bloody brilliant to get an exception to this. Everything is so goddam processed. For example, my assignment for the last year has had me roughly performing at L3, but I have 1 year experience. I had a heck of a time convincing HR that I deserved a promotion.
You might have better luck at small companies, and maybe once you're over the hump no degree will be less of a problem, but you will never make as much as your educated colleagues at a large, highly processed company.
Another perspective:
Even if you're a rockstar, the employer doesn't owe you a job. The employer's incentive is to shift through hundreds of resumes to find the best ones (or top 70% where I work ;P), as fast as possible. If you don't have a degree, you'll get filtered out with the rest of the losers, its just not efficient for an employer to even look at your resume if you don't have a degree.
There's a 35yo intern here, he's almost done with his BA CS, he's more competent than most L1 engineers here, and he makes about half what an incompetent college rookie makes.
I depends on what you want to do and what you can do already and who has offered you what. But, the answer is: Yes. Yes.
A lot of good comments. Also, a degree is proof that you're willing to do something you may not like to get what you want; that you're willing to put in the time to reach your goals.
Personnaly I would step forward and say "Yes, it's worthy to get a university degree."
I speak of my own experience when I say I have a college degree in management programming and a couple of years of experience behind me already. But when I got to accept real big challenges, I knew I had a lot of work to do before I can reach the project's objective.
I have worked with such companies as Alcoa Canada, and when was time to bring the features and its complexities to big projects, people with university degrees were a bit before me, understanding differently the different aspects of the problem.
University will bring you to a second degree of abstraction and development or analysis approach regardless, most of the time, the technology you will use. This will bring you a better understanding of the frameworks concepts, idioms and design patterns, for instance. At the end, your analysis knowledge and abstraction capabilities will strongly help you get better faster when you're on lands working on big, but big projects.
To continue with my idea of my own experience, I plan to go get my software engineering bachelor degree at the university. This will allow me to combine my masterings with some of the automation to grow capable of leading process systems management and development from the ground up.
Well, the best I can say now is make sure to make up your own mind and get to know exactly what YOU want to do, not what others want you to. :-)
Let's talk about paychecks.
BigCorps (the last honest and well earning ones there are) have a slightly bigger start wages for people with degrees. By policy.
It's the kind of money you will do by working there 2 years without a degree and going up the pay raises ladder year after year.
So, if the point is money: you study 4 years to get the benefits you'd get in 2 years work. And you pay a lot for that, instead of earning: not good.
Disclaimer: that's what's supposed to happen in a normal economy, at this time and place anything and everything can happen, and is happening, in the name of the magical economical downturn.
The pay ladder could be broken, missing, dead, shot at gunpoint by a roaming psycopath or be the victim of fundamentalists and swine flu.
On the other side, a degree could land you a dream job, for a corporation that take no dropouts by policy, like Google.
And in the long time you could be elected leader of a team faster than others without a degree.
(Leading people you never met before, people with a degree, without having a degree yourself can be troublesome, your authority will be questioned and you will probably have to prove you know what you're doing, this will waste time and time isn't something your employers like to lose)
Or you could try an academic career, which means you really must like to brag with long winded writings about youaccomplishments as a researcher in an unexplored field to gain financing and make people much older feel they are much more brilliant than you. What's to like about it is that, at a certain point, you could attain a guru status that permits you to go missing from your job position for years (claiming personal research interests or international lectures) and resume it almost at will.
In essence: there are pros and cons, and I admit pros are more hypothetical than cons.
Then I must say, the level of exposure to weird languages and ways of thinking a college can give you is invaluable, and makes you a better, more versatile programmer. But it really isn't a difference any of your employers is bound to recognize.
It's more something you will notice, those (not so frequent) times you get more results with less effort than other unskilled workers. But unskilled workes are more dedicated than you, feel guilt for their lack of education, (that's what they are made into feeling) and work more, longer hours, with no payed overtime, to cover their lack of formal indoctrination.
school is total waste of time if you already have the knowledge, better make some useful open source project or join one ;}
I agree that having experience is critical. However, we must not overlook the importance of a degree. A degree is the only way to entrench necessary skills and competencies to combat the cut-throat competition amongst IT professionals. Most of the time, a Computer Science degree can be the stepping stone for your career in the IT industry, which eventually will lead you to a high paying job, and ultimately make you an experienced professional.
I read about this accredited online high school that helps students obtain a diploma or GED so they can further their education. It is about time someone stepped up to help out these individuals who want to seek a more fulfilling and better paying career.