Why is it so important to get a degree?
Why is it so important to get a degree in CS when most people are self taught in the field?
- From a high school student whos thinking about going to college for a computer science degree, though already very knowledgeable with most programming languages #computer-science #college #computer #college-major #science
CS is a double-edged sword with regard to this, mostly because of its youth. But it also demonstrates that the field is flexible and receptive to new ideas and anyone who brings them to the table, titles and degrees not considered. I really admire that about CS/tech. It is much more humanistic of an environment than many people from the liberal arts (like myself) give it credit for being. : )
I have some coding experience from doing research & statistics in the past, but I'm not an expert. I do know a lot about the field of CS, though. You ask a fantastic question because career pathways in this field are not nearly as clear-cut as for other fields. This is both good and bad - good because it means flexibility, but bad because there isn't one or two linear "next steps" for a young person like you to follow. Keep this in mind overall as you progress -- you might find yourself asking a lot of questions like this one, and you're not alone!
There are a few reasons you'll be better prepared for CS with the degree, even though it is still possible to enter the field without one (and many successful people have done that!) Generally you'll be introduced to aspects of coding that can't be self-taught. Coding for your own projects independently is a great way to learn your essential skills, but it's hard to "practice" for the reality of a job in CS where you might encounter anything or be asked to produce something you've never really thought through. For example, unless you've taken a CS class, you may not yet have had a project handed to you that was unfamiliar, but also required. Any field requiring problem-solving like this is hard to teach yourself even though it might feel like you are aptly prepared. This isn't a comment that relates to your actual abilities (which I'm sure are stellar!) but to the nature of coding. It's kind of like trying to teach yourself a branch of mathematics and being your own question-writer. It's difficult to create problems for yourself that will teach you concepts you don't yet understand - nearly impossible! You'll feel more confident with directed instruction that assures you've encountered and solved the breadth of problems you will need experience with. A degree program will drill you on exactly the procedural problem-solving (and overall framework of thinking) that you will need to be prepared for a career, without you having to expect the impossible of yourself. There's also things like working in a team, meeting strict deadlines & producing timely results (which is often the origin of stress for programmers) that are essential for you to be able to do prior to entering the field. Even a genius can't master something through self-teaching, and this is especially true for CS.
This is the case for computer science but for other fields as well: you may not necessarily NEED a college degree to work in CS. The things you'd learn from a degree program might be acquired through work experience over time. BUT, that process will be slower, less focused, and not really done with *you* in mind. In a programming job, you need to complete your duties and obtain a very specific result. Through an education, however, the focus shifts to you and puts you in an environment that will nurture your skills in a focused way, and likely allow you to better explore specifically what language(s) or types of projects you would most enjoy doing in a career. That preparation is extremely valuable and will help you feel more secure about specifically what type of CS you end up deciding on. For example, you mentioned being fluent in the most popular languages. You may feel comfortable at the moment, but would that change if you knew you might be asked right now to complete a task in any language, for any industry? Degree programs will give you the opportunity to narrow down what you are getting experience in, and most importantly let you choose this. Obtaining the same depth of knowledge through working programming jobs is going to be a lengthier, more frustrating way to get the same results. Formal education lets you invest in yourself and put your interests first.
Another consideration: you are likely to face difficulty when applying for a job if many of the other people applying hold a degree. Consider: if a company is selecting an applicant for the job, and all other things are equal (like the interview, work experience, soft skills, etc.), the degree could very well tip the scale in favor of the other applicant. I don't personally believe that's how things should work - and hiring is not necessarily done that way ALL of the time - but it *is* a potential risk of passing up a degree. Many other fields have stringent, established standards of education. As you seem to have noticed, CS does not. In some ways, though, that reflects the youth of a field and its open-mindedness to accept contributions from anyone regardless of what kind of professional they are on paper. In other fields, you could have everything in the world that you need *except* that very expensive piece of paper from a college - yet, many hiring managers would exclude you from the start. For some fields, it's not even their choice because of laws/policies that (rightly) protect the quality & reliability of certain professionals. Education, medicine, law, etc.
That being said, experience will still get you far in this field, especially with it being relatively young and still flexible. Is the level of fluency you have right now employable? In other words, do you have enough knowledge right now to work an entry-level CS job? If the answer is no, a degree is probably the way to go. If your skills right now are sufficient to get a job right out of high school, that's an option, but consider how rugged the road might be for you as you try to find the precise "niche" where you feel the happiest.
If you can afford a CS degree/certification of some kind (including 2-year programs), I think that's in your best interest as an individual. Especially as someone who is clearly already passionate enough to have learned what you have! It sounds like you're pretty committed to attending college for CS, which is great, but I did want to give you both sides of this double-edged sword in case things don't go as you planned. If college would fall through somehow, it certainly does not have to mean the end of your path to CS. Remember how many of tech's biggest names were dropouts, or failures in the beginning. The neat thing about CS is that if you really do have talent, you can find your way regardless.
Alexandra recommends the following next steps:
It is not just about CS but almost all knowledge can be self taught if there is a well system.
The reason of getting a CS degree is:
1. showing a proof of knowledge to HR/boss that you have the basic knowledge - Hiring is a long process and education system is a part of the social mechanism that help link students to the workforce. Therefore, if you doesn't have any other working experience when young, a degree is a way to show your knowledge has been put into test and you overcome it.
2. Not everyone can be self taught - self taught require very high self discipline which not everyone to do it. In college, there is deadline and exam to make sure the learning progress.
3. Things that can't be obtain by self learning - To be able to work, you will need to learn to work as a group and with different people to resolve problem. CS is no different than that. Course in University grouped you with a lot of people in CS field and doing project and lab research together from time to time. The people skill will not be able to be learn by self learning.
CS, for as long as it has been around, was considered black magic by many who could not understand it. As such, there was no real measurement by which a non CS person might evaluate CS work. If it looked good and worked well, all was well. Early on, it was also rather expensive and few could do it. Now there is new software and purpose build devices to make the process faster, easier, and higher quality. While you may not need it 20 years ago, an employer is far more likely now to hire someone with a degree in it that one that does not. It comes down to independent evaluation. With a degree, I know that your work has been scrutinized and refined. Without a degree, I may be the first person to see your work and if I am not particular savvy, I worry that my evaluation will be faulty.
Look at the broader picture and decide where you are fit in there. Personally, the high cost of some college educations has outpaced the value in my mind, but there are still plenty of opportunities, both with a degree and without to consider.
- It can definitely give a more well-rounded experience and exposure to other subjects. It really helps to build a foundation, diving into more specialized subjects later if that's something you want to do. I suppose this might be true of college in general and depends on your learning style. For me, I definitely love some structure and knew some HTML/CSS + basic programming going into college, but I just learned so much, both inside and outside the classroom, than I ever would have on my own (ex: theories, data structures, algorithms, OS, graphics + animation). Who knows, you might discover something you like even more!
- There are resources and opportunities available in college. Take advantage of the counselors, internships, and networking opportunities!
As someone that has been in the IT industry for over 20 years, and does not have a degree, I can tell you what my experience has been on "the other side" of the situation. Out of high school, I went to the military rather than college. After getting out, "life" happened and I was unable to make the time to go to college and earn my degree. Understand, these are my experiences and not necessarily the same for someone trying to break into a CS career today. So much has changed in terms of supply, demand, technology, and accessibility compared to when I got started.
When I got out of the military, I had a difficult time finding a job because there weren't many fields that I could put my current "skills" to use. At the suggestion of a friend, I began looking at different areas of interest to try and make a living at. Working with computers and technology came naturally as I was fortunate enough to have exposure at an early age. I started designing webpages in 1994 when I was 14 years old and really enjoyed the fact that I could use my artistic talents and my love of technology and combine them to make something new. Because of this, I chose to start working towards a career as a website designer and was able to land my first job at a company willing to take a chance on someone with little experience. Truth be told, I was pretty cheap from a compensation standpoint so that probably helped. At any rate I was a sponge; absorbing all the knowledge and skills that I could until the next opportunity came along with room for growth. I worked long days and tried to learn as much as I could in my spare time. Eventually out of necessity, I began learning some additional languages and working with databases to create "dynamic" sites rather than my "static" HTML sites. For the next several years, I continued to learn and absorb everything I could until there was no more room to grow at that particular company before moving on to the next. With a growing skill-set and a decent resume, I was able to land at a company that saw something in my drive and hunger for knowledge. In addition to fostering personal growth in my own craft, this company provided me with an opportunity to gain experience in something new -- systems administration. Now, I could run my own web and database servers to host the sites that I was developing. Fast forward to today; I am a Senior Cloud Solutions Architect who has gotten to where he is through a ridiculous amount of time learning, growing, building, and refining my skills over the span of two decades.
All of this is to say that it has been far from easy, and to some degree, not very enjoyable. It has taken a tremendous amount of time and effort to gain the experience necessary to win out over peers with less experience who have a degree, in the interview process. That being said, if I had gone and gotten my degree in CS it would have been a lot of hard work as well but maybe I wouldn't have been passed up on so many opportunities because I lacked the experience AND the degree. Personally, I have found that the only places that require a degree and care less about hands-on experience are higher education institutions, state and federal government, and companies that are trying to fill Director-level+ positions. I am not one to dream about the "what if" and "what could have been", but my own experiences allow me to look back and recognize the circumstances that could have made my life a little easier -- one of those being a degree.
So in answer to the question "Why is it so important to get a degree in CS when most people are self taught in the field?" -- it isn't. That is, if you like putting in hard work, continuously trying to improve yourself, and working long hours while not being compensated accordingly and being overlooked for leadership positions because you lack a degree. My advice for you is actually to your future self -- get the degree and focus on enjoying all that life has to offer!
If you enjoying coding and are very good at it, your CS degree should be an opportunity to push the boundaries of what you know and re-enforce coding skills.
There is always a path that wouldn't include needing a degree, so if that is the path you choose to pursue, I wish you all the best in your endeavors.
I'm not trying to suggest that those with a CS degree are more successful in their career as software engineers, but getting a CS degree will certainly help you to understand things about a computer that you likely wont have time or energy to learn while also pursuing said career. You may also find during your college experience that there are other more specific niches or career paths you may want to look into. Maybe you go in thinking you want to do web development and fall in love with database design or you are dead set on Java being your go to language and you learn about Python. It is a great way to get a breadth first look at all the potential career paths you could take.
As others have previously stated a degree is good for one more thing. It shows that you are vetted and have the perseverance to go through with it. College is not for everyone, and you can be very successful without it. But early in your career having a degree will look mighty attractive to employers, in fact many require it as a barrier to entry. While I personally don't agree with this and I think as a whole the industry is trending away from this requirement it is one more thing that can give you a leg up when applying for jobs.