First, let me tell you a bit about myself. I am an undergraduate in Computer Science and currently, it's my 6th semester. These days I am doing the #100DaysOfCode challenge and learning CSS and JavaScript(there's a semester break going on due to the Corona Virus). Why am I writing this post if my degree isn't even complete yet? Well, I would like to share some thoughts with you.
I saw some posts debating whether you really need a CS degree to build a career. My answer? Well yes, but actually no.
Let's have a look at both aspects, shall we?
Benefits of Computer Science Degree:
- They teach you the very basics i.e. the bits and bytes of the computer. Knowing this tremendously improves your understanding of how the computer works.
- There's a great focus on Data Structures and Algorithms(They're very important).
- The course material is great.
- The assignments and quizzes make you feel accountable and force you to do hard work.
- There's a whole batch of students with you and it improves your teamwork skills.
- There's always a professor or a mentor that can answer all of your questions and help you out when you're stuck.
Not so great aspects of Computer Science Degree:
These are very few but the thing is: they matter!
- You learn a lot of stuff that you wouldn't even need at your job.
- You have to study some courses that are totally irrelevant.
- It takes FOUR YEARS!
The reason I'm telling you all of this is that I want to make a point: Learning on your own is also beneficial given that you stay disciplined and committed.
I have spent the last 80 days learning HTML, CSS, and JavaScript on my own from online courses and I am more confident in coding than ever before. Because previously I spent so much time delving into the theory(I didn't have a choice, did I?). In university, you do learn how to code and build stuff, but you have to spend so much time learning other things as well and you can't focus on a single subject. And of course, you don't get to decide your own pace.
Let me summarize these benefits for you:
Benefits of learning on your own:
- You learn at your own pace.
- You only have to focus on a single path, it may be Data Science, Web Development, Game Development, etc.
- It can still take you more than a year to get there but still there's no minimum limit of 4 years.
- You can start working as soon as you're confident and keep learning alongside it.
In the end, it's just your own choice and it depends on the kind of person you are. Neither way is easier. It requires hours of hard work and consistency.
So did my Computer Science degree help me? Yes, it did!
Top comments (17)
Degrees are unquestionably hard work, and expensive. But they are unquestionably worthwhile, if you are definitely going into the field in which you study and plan to work there long-term. If your goal is just to write code, then the degree is overkill. If you want to build/plan/design/architect, it'll be a definite asset.
I have a Bachelor's and Master's degree in Computer Science, and I've been in the workforce for 30 years. I earned my Bachelor's before starting work, and then worked on my Masters while employed fulltime.
I've worked with a number of folks with degrees in other fields, and a number with no college degree at all. For most workplace tasks, I don't think those folks were at any disadvantage compared to me.
I very rarely used the specific programming languages I learned during my Bachelor's at my workplace. But the fundamentals I learned, the theory behind the programming, made it relatively easy to learn new tools/languages quickly. I would say I have frequently been the one on the team to grasp the new concept/tool, and then teach the others how to apply it to the problems we were solving.
Where I saw the biggest difference is in the design/architecture phase. Judging from only my personal experience, folks without training in CS do seem to struggle with more theoretical-level tasks. In my career, I have frequently found myself taking lead in system architecture & code design tasks, and letting others do the implementation. That may just be me, or that may be my education; I think it's probably both.
From what I've seen, most self-taught developers focus on making things work, while CS people will sit down and think about theory and trade-offs, although I've seen the opposite happen.
I think it depends on how much effort you put into understanding how the computer will handle your source code (things like compiling, computer architecture) and how to improve it (algorithms optimization, data structures, heuristics, AI), which is what a CS course forces you to do throughout it's duration. If you're self-taught, you'll have to do these by yourself, which leaves room for mistakes and misinterpretation if you're not cautious.
In general, it's just two different skill sets; but in the end, it majorly depends on the person to learn these things either way.
Valid point!
You forgot to mention that employers will often overlook "self-taught" programmers because they lack a degree. Before getting a degree, I tried applying for a lot of jobs and they often didn't even give me a chance, but once in a while, when they did, I showed them I was more than capable of handling difficult tasks through my performance in technical interviews. Nowadays, I only need to have a brief conversation with the tech lead to get a job, which feels really nice. So while I'm not exactly light years ahead of where I was before starting my degree (I definitely learned a lot, don't get me wrong), it feels much easier getting jobs because I have credentials to validate my competence, I don't have to prove it.
That's a good point!
I think if I tried to self-learn programming at 18 I would have had no idea where to start and may have given up before I even began. So I think the main benefit of a university degree for me was letting other people tell me what I needed to learn (also I got a couple of internships thanks to my uni!).
And there are so many seminars that you can attend. Sometimes people from the field guide you through these seminars and you get an insight of what is happening in the tech-world concurrently, what technologies are emerging and what your priorities should be.
Good post and congrats! I didn't get all of the knowledge I wanted since I ran out of time and money. I learned a good amount though. It did help me with upgrading my problem solving and math skills. I also got a better understanding of algorithms and data structures. I don't regret my education, I just miss it.
Hey Hassan, If you love what you are doing it is not hard work. I have been playing with computers for over 50 years. I went to university to study Computer Science because of my passion for all things computers. Although, I have climbed the corporate ladder from Jr. Programmer to now CTO, I am still write code and designing hardware. I believe people attend university to learn and if you love what you are doing then the jobs come naturally. It is great to hear you are learning and studying during this time off. This study and learning should not stop. At my stage in my career I am still learning. For example, I have been learning and doing things in RUST ... this language is very promising .... it seems to bring me back to why I love coding ... the demarcation where software meets hardware. But concurrently, I am also studying and playing with a bunch of other tech. Because building the "solution" for the business requires us to know all things computers. And as others have stated in this discussion .... University give us the disciple to address and find solutions to challenges. A friend said to me once ... at university we learn the scientific method. Good luck, The world has changed so much in the past fifty years and the next half a century will a lot fun too. (PS: to date, I am still applying what I have learned in university, physics, mathematics and CS to the solutions I create daily. So, it is not a waste of time. This comment is getting long and time to close off. If you are interested we can chat more)
It's great to see people from the industry share their insights and experience on this platform. For me, I give importance to both: Self-learning and the stuff that is taught in the university. I think a mixture of both is the best.
Hello Hassan,
I have a question for you. Do you think, that studying CS has any sens, when I'm high school student and I have enough skills to work as a developer (actually I do it now)?
Or from your side, it would be better to study any other subject correlated with CS, for example telecommunication?
Btw- Very nice article
Hi! I would suggest that you do the CS degree because there's no restriction on learning more stuff. However, if you're confident enough that you can make a career out of the skills that you currently have, then you may step into the field.
The answer to the second question is: Go with what you want the most. I don't know much about telecommunication. It's totally up to you.
What Degree teaches can also be learned on your own tbh.
Awesome post as Software Engineer student in my final semester I totally agree with you, besides of this I had thoughts about the university that they will teach me everything and I will not be able to start coding and become a professional programmer without studying in the university, but as soon as I started my first semester I realize that they didn't teach me everything, I need to self-study and researching and searching a lot, it's not that easy, it's a lot of hustle.
Well, the university can't teach everything. You have to invest time to get a grip on the knowledge. In the end, hard work will always pay off.
Good post, congratulations
Thanks!