I find many, many people who ask on the web: «Does it make sense to take a degree in a Computer Science major?». Other people express their opinion, who in favour of this choice and who, on the other hand, consider it as a waste of time when it comes to the IT (Information Technology) field. I obtained a Bachelor’s degree in Computer Science, so I’ve something to tell you. I report my experience and show you my very own answer to this question. If you wish, you can go to my conclusions directly.
Studying is always a good thing.
Let's start with an assumption: studying is never a waste of time. It’s one of the best things you can do, whoever you are, or whatever your current job or age is. Many people say this isn’t valid for the IT field, mainly because every day, new technologies, development tools, and frameworks are developed. Sure, attending University is expensive, and not everyone can afford it. You need to buy books, to pay taxes, you will probably have to eat in canteens, you’ll surely need a laptop. If you can’t afford these expenses, there’s not much you can do. But be happy: no other branch than IT is perfect for those who don’t take a degree, and I’ll tell you why.
A total mess.
Before diving into my experience, I want you to see a concrete example of what web development is about today (I’ll explain why I’m showing it to you in a moment), so please click on this link to view the Road map of the Front-end Developer Handbook 2019, then came back to this page.
It was a mess, right? It seems like a battle plan. It’s not. As said, it’s “only” the (incomplete) road map of the modern front-end web developer. Its creator, Kamran Ahmed, expressly confirms this in one of its tweets. I suggest you visit Kamran’s project roadmap.sh, too. This web project is exciting and useful because it helps us to set the cornerstones of web development. Moreover, there you can find the updated version of the road map.
These things are what a web developer has to deal with today. But today, not tomorrow, because tomorrow more stuff will be added. To be honest, a degree could never help you to get out of this mess. Web development is, like many other IT topics, in constant change: something “static” as a degree could never cover each of its arguments. I think a real “Web development major” doesn’t even exist.
My University experience.
I entered University twice. The first was an attempt to take a degree in the Information Engineering major at the University of Padua, the second to take a degree in the Computer Science major at the Ca’ Foscari University of Venice. In the latter case, I succeeded. During my first year in Padua, I learned some necessary computer skills: a bit of Java, a bit of the Assembly language, and mathematics. My first year was very complicated. So, after retreating, I chose the Computer Science major. I had to pass two preliminary examinations, a logical-mathematical one and an English test. Below I report all the exams required that I had to take.
- First year:
- Computer Architecture;
- Discrete Mathematics.
- Second year:
- Algorithms and Data Structures;
- Database Systems;
- Human-Computer Interaction;
- Probability and Statistics;
- Object-Oriented Programming;
- Operating Systems.
- Third year:
- Formal Languages and Computability;
- Information Technology Law;
- Software Engineering;
- Computer Networks;
- Operations Research;
I also attended these four courses:
- System Administration Lab.;
- Languages For Web And Networking Applications;
- Social Media Web And Smart Apps;
- Web Design.
What my knowledge was before University?
Apart from the brief experience in Padua, my knowledge of IT subjects (languages, frameworks, tools, and so on) was practically non-existent. I had no idea of how a programming language was made. I didn’t know what the web was, how a website was built, I didn’t know how computer networks worked, what abstraction was, or how to write source code. I didn’t know anything. My attraction to Computer Science was because I was good with computers. I was able to solve the problems when my father had to install something on our home PC, or my mother needed help with her cell phone. I was inclined to this discipline, and I hoped that University could bring my skills to an entirely new, higher level. And so it was!
What did the University give me?
Let’s get some clarity. Calculus, Discrete Mathematics, Probability And Statistics, and Formal Languages and Computability could be considered as mathematical classes. Operating Systems, Computer Networks, Human-Computer Interaction, Information Technology Law, System Administration Lab. and Social Media Web And Smart Apps were mostly theoretical courses. Leaving finally aside the stage and the thesis, the other classes taught me fundamental aspects of the IT world.
The Computer Architecture course, for example, taught me about computer organization and levels of abstraction, information representation, computer arithmetics, boolean algebra, combinatorial and sequential circuits, machine instructions (with the MIPS processor), principles of the design of a CPU, performance evaluation, advanced project of a CPU (with the pipeline), memory hierarchies, I/O, program execution (speaking about the compiler, assembler, linker, and loader), translation process (from the C language to the MIPS assembly), with a final simulation of the SPIM.
The Programming course taught me about functional programming, recursion and induction, iteration and invariants, types, lists, and imperative programming.
The Web Design course introduced me to the differences between web design and graphics design, colours, fonts, and layout management, planning of a website, definition of user requirements, organization of information, design of navigation systems, usability heuristics for the web, accessibility (a11y) with the W3C Accessibility Guidelines, the Stanca Act, the X/HTML language, structural tags, formatting of text, links and navigation, how to add images, tables, audio and video, CSSs, syntax rules, how to add styles to an X/HTML document, inheritance, CSS positioning, and RWD (Responsive Web Design).
A little bit of stuff, isn’t it? Keep in mind that I listed only three courses.
Would I enrol at University again?
Absolutely! University has given me an excellent general preparation on all the fundamental aspects of IT, from computer networks to how a CPU works, from the C language to how a website is created. But let me be clear: I really spent so much, both in terms of money, time and effort. University is a firm commitment that must be faced with adequate seriousness; otherwise, you will only lose.
Now, before going on, we need to make a clarification, something that I’ve already revealed.
Almost all the IT stuff is indeed available online, but the market most of the time require a degree or some other qualification. It’s also true that even if you can follow a tutorial online, it can be incomplete and hurried. University classes are never shallow: they’re well organized and extensive. They’re absolutely not like something you can just follow online. But there are exceptional cases in which it’s not always true.
Would I recommend a Computer Science course at University?
In the end, it depends. Going to University can only bring advantages, as long as a person can bear the costs. As I said, I believe no other area than IT is suitable for self-taught people. With a PC at your disposal, you can really afford to get much-needed knowledge on the market. A degree is not necessary to build a website. A degree is not required to create a Java program. A degree is not essential to create a database. With a PC, a lot of goodwill and time, you can roll up your sleeves and get a more than discreet knowledge of the various areas that interest you. If a company wants to build a website, it looks for a web developer who can design one. They may, for example, require skills in these fields:
- the Bootstrap front-end framework;
- the WordPress CMS (Content Management System);
- SEO (Search Engine Optimization) practices;
- a11y (accessibility) practices.
You can get these skills on your own. You could stop reading this article now and google “How to learn HTML”, “How to work with Bootstrap”, or “How to create a website with WordPress”. The difference between you and other self-learners is based only on the time you invest in the learning process, in the effort to learn new things and to thoroughly test your understanding. The web is full of tutorials, courses, lessons and articles from the most different sources. There’s everything you need, and you can easily access it where, how and when you want, while you’re on the metro or lying comfortably on the couch of your home.
Once you assimilate the information, you can put them into practice immediately, without the need for any tools other than your great, old computer. This is the accessibility feature that characterizes this discipline, and it’s beautiful. Without knowing a single line of HTML code, a 13-year-old boy could look for how to write a basic web page. Then he can open the
*.html file with his browser and see his work come to life. As a developer, I experiment this every day, and I awfully love this side of computing: to be able to test the result of my effort and hard work immediately.
Would I recommend a Computer Science course at University if you want to be a web developer?
No. If you’re sure that you want to dedicate your life to web development, you don’t need to take a degree. As I said, University provides a solid understanding of many different topics. No course can keep pace with something as mutant as web development.
So, what is my point of view?
Considering University as a waste of time is a misleading and rude opinion, mainly if you have never frequented it. I personally had to deal with people who denigrated University simply because they enjoyed to belittle students, saying: «In any case, you won’t find a job». They were so annoying and hateful. Actually, University proposes you a set of classes specifically designed to give a solid understanding of the most critical aspects of a branch. If you don’t attend University, Computer Science allows you immediate access to all the resources necessary to learn the required skills. This will let you create the knowledge you need, although this can never be compared with the cultural baggage University gives you. For most people, I believe this’s enough.
You want to learn a topic that inspires you, and you would like, one day, to work in that field. Computer Science allows you to do it, but again only in specific areas, and only if companies don’t require qualifications obviously. As an example, many people who work in a firm without a degree are web developers. Why? First, because they love this area, and second because web development is “easy to learn online”, in the sense that you can learn it comfortably. HTML and CSS feel natural, intuitive, and almost everyone can understand how to build a website from scratch. They’re absolutely not as complicated as other programming stuff. Web development is definitely one of those areas where you can develop your skills without attending a major.
In the end, I can list these cases:
- Do you want to learn more about Computer Science and do you have the needed resources (money, time, and goodwill)? I suggest you enrol a Computer Science major.
- Do you want to learn a specific topic, but you don’t have the needed resources? You can probably find material online (tutorial, courses, lessons and more), but keep in mind that’s not always true. It’s valid only for some specific topics (web development is absolutely one of them).
- Do you want to learn web development and find a job in that field? You don’t need a qualification, but you can enrol a major if you want a more solid foundation of programming in general.
These are my experience and point of view. I hope I was able to help you, especially if you’re about to decide what to do in your future.
If you have any questions, ideas, advice, suggestion, or if you want to tell me something or get in touch with me, please: do it! You can find me on Twitter (you can click on the profile picture on the homepage to send me a Direct Message), or you can e-mail me.