We all wish we were more experienced in life or that we had more and better information when we had to make an important decision. How many times do we tell ourselves something along the lines of ‘Oh, I wish I knew that back then…’? Unfortunately — or fortunately — that’s not how life works. There is a famous proverb that says that ‘experience is the comb life gives you when you are bald’. We can’t change the past, but we can and we should learn from it to help ourselves and the next generations.
This article should be particularly relevant to people interested in software development and similar Information Technology (IT) roles. My objective is not to try to tell younger people what to do or not to do, because I’m not in a position to do that, nor do I want to be. I’ll mention a few facts, but I’ll spend most of the time sharing my experiences and personal opinions to explain why I believe going to university might not be the best way to become a software engineer. At least not for everyone. I’ll be playing devil’s advocate, in a way, given that my opinions might be controversial.
What’s my background? Well, when I turned 18 —before I started university— I joined a small software development firm in Argentina and since then I’ve had various roles in different companies, mainly in Argentina and the UK. These positions ranged from junior developer up to development manager, leading various teams of software engineers. I’ve worked across various industries, company types and sizes. I’ve been interviewed tens of times and I’ve been lucky enough to interview probably between 100 and 150 candidates for all sorts of roles. While working full-time, I got a Bachelor’s degree in Information Technology in Argentina and then an MSc in Management with Business Innovation in the UK.
In an industry in which only 37% of software engineers in the UK and Ireland consider their formal education as important or very important, I’ll speak about my experiences, hoping this will make a few young people think twice before blindly going to university if they are aiming to become software developers/similar.
It’s important to note that everyone is different, so each of us might have unique goals. This means my advice won’t fit everyone’s needs.
Information Technology — one of a kind industry
To begin with, it’s important to explain why IT is a unique industry. No matter how long you’ve been a part of it, and to what extent you are involved, you’ll probably have figured out that IT and a small group of other industries are very different from the rest. This usually applies to the vast majority of positions in IT. However, I’ll focus mainly on the software development roles. The main distinctive characteristics of the industry, in my opinion, are the following:
- High demand for individuals, with low supply: generally speaking, there’s a lack of people in the industry in the majority of developed countries. In fact, software developers are the most in-demand profession in the Organisation for Economic Co-operation and Development (OECD) countries. This has various consequences, mainly positive for software developers, which include high salaries, excellent benefits and an incredible amount of opportunities available. For the companies, of course, the situation is not that beneficial.
- Exponential grows and a bright future: IT is a popular industry now, but most importantly, it will most likely continue growing exponentially in the next few decades, as it’s not showing signs of slowing down. In my opinion, the gap between the demand of individuals and supply will be broadened even more over time.
- A license or a certificate is not needed to work: unlike other industries, such as medicine, accounting or civil engineering, you can usually participate in the process of developing software without having a degree. Maybe some companies would require individuals to be graduates. Nevertheless, the vast majority of the software you use on a daily basis, if not all of it, has lines of code that were programmed by someone who doesn’t have a degree. And I think that’s great.
- Easy to move around the world: given that you normally don’t need a degree to work, being a developer in Europe is almost exactly the same as being a developer in Argentina, the United States or Japan. Not only that but since software engineers are needed everywhere, being sponsored and getting a visa to work in a different country is easier than in other industries.
- Industry dominated by Millennials: people in IT, compared to other industries, are much younger. According to StackOverflow, 70% of the software developers in the UK are Millennials.
Millennials —those who were born between 1982 and 2000— have different motivations, goals and values when compared to the previous generations. This means that IT people tend to be more modern and flexible when it comes to old and long-established approaches, such as believing that studying at traditional universities is the only way to go.
Why did I decide to go to university to study IT?
When I figured out I wanted to pursue a career in software development, I considered going to university was a good idea because:
- I thought it was the best way to learn how to be a software engineer.
- I believed a university degree would lead to better job opportunities.
- I thought it was the ‘normal’ thing to do. And, continuing with the previous point, I was scared of missing jobs or struggling to get one as a consequence of not having a degree.
I realised a few years ago that these three reasons no longer make sense to me.
What are the problems with universities and why are they not the best place to learn how to be a good software developer?
I want to clarify one more time that universities might be great for some specific roles and other industries. But not for all software engineers. Here’s why:
- Courses and modules are outdated: technology evolves quickly. Too quickly, to be fair. Universities are massive organisations characterised by bureaucracy and regulations. No matter how proactive in keeping its modules and career plans up-to-date a university is, it’s nowhere near the pace at which technology advances. So, by the time you are being taught about a programming technique or methodology, it’s probably obsolete in the working industry. Yes, of course, in many scenarios, things have been the same for years, but that’s not always the case.
- You don’t learn by sitting in a classroom. You learn by doing: this statement may sound a tiny bit extreme, but if you want to learn how to be a good software engineer, you need to practice and do, like with most of the exact sciences. You can read or listen to all the theory you want, and you might even think you’ve understood what you’ve read, but, unfortunately, you won’t have a clue of what it really meant until you sit in front of your computer and get your hands dirty. Not once, not twice. Many times.
Yes, universities have practical assignments and tests, but again, many times they are based on obsolete techniques and they are rarely good enough. In my experience, they are sometimes too strict and heavily influenced by what the lecturer wants you to do, not leaving enough space and freedom for creativity. Software engineering, even it might not look like it, is a very creative discipline.
- The best software engineers are not teaching at universities: this is one of the biggest problems. Except for a few countries, in which university professors are the best professionals in the industry, and some special cases of excellent developers who are passionate about teaching, the majority of the lecturers won’t be at the level you would expect and need. The best engineers are usually building software. For big companies, for startups, for themselves, for open-source projects, etc. Going back to my previous points, if you are not doing and working with cutting-edge technologies, methodologies and best practices, you probably won’t know them or you won’t be as good with them as you should be to be teaching others.
- You go as fast as the lecturer and class dictate, and not as fast as you should go: if the class goes too slow, you are wasting your time when you could be learning faster. If the class goes too fast, well, you’ll struggle and then you’ll be taking learning shortcuts to improve your chances of passing the exam, so in many cases, you don’t end up understanding the concepts properly. Let’s say you attend a class with 50 people. Think about how many of them are on each side of the scale and how many are learning at the pace that is just right for them.
After spending too much time, energy, and a significant amount of money to go to university, I realised that it just wasn’t worth it. Not for me. Time and energy are limited resources. So is money, at least for the vast majority of us. We should try to spend our resources in the most efficient possible way. I consider wasting your time to be one of the saddest and most frustrating things you can do.
I believe that 90% (and maybe even more) of my knowledge and skills do not come from things I’ve learned at university. On top of that, I consider only around 15% of the things I was taught at university were truly useful. If you ask me, I’d say spending years and years to build 10% of my professional capabilities and realise that only 15% of my time at university was worth it, sounds like a bad deal.
I spent around 7 and a half years at university while working full-time. If we measure this just by time (excluding the energy, money, and other factors that could be also considered), approximately 6 years were useless purely from a learning point of view.
While you are spending crazy amounts of energy in learning things that are not useful, and in which, more often than not, you don’t even have a real interest, you are missing much better opportunities on which to focus. In other words, the opportunity cost is huge.
I’m someone with a curious mind and I’ve always been keen to learn and try new things. Once I graduated and stopped going to university, I started spending more time and energy on things I wanted to do. I’m not just talking about leisure activities here, although I believe these are absolutely necessary, but also about professional stuff. I started reading more books, I started taking online courses and training, and I quickly confirmed that I was learning much more from these things and work than from university.
In terms of money, there are various factors that make it hard to analyse so I won’t go into too much detail on this. However, I’m going to say that depending on the country you live in and your own personal situation, you might be able to go to a respected public university for free, or you might have to pay thousands of dollars to go to a not-so-great school. It really depends.
I‘m lucky I attended universities that were affordable, especially since I was working and I could pay for them with part of my salary. But that’s not the case for the majority of people in many countries. I think having to be drowned in debt (either you or your parents) just to go to university to study IT is ludicrous.
The possibility of networking is another factor that some people might consider as a reason to attend university. You can meet great people at university. But you can meet even better professionals outside it, so don’t be fooled by this.
Last but not least, one concept that I think is interesting is that the value of a university degree will decrease over time. If you have a degree and one year’s working experience, it might be worth something. However, if you’ve been in the industry for 20 years, the degree will most likely be close to worthless.
Do you need a university degree to get a job?
I don’t think it’s necessary to have a degree to get a job. Remember what I said before about how high the demand is for software development positions and how, in an industry dominated by Millennials, only 37% of software developers consider their formal education as important or very important? These are the people that will be hiring you. They won’t ask you to have something they don’t think is important. Some may, but not the majority.
In addition to that, with such high demand, companies can’t afford to be very picky when trying to find candidates. What you will need in the beginning, when you don’t have a lot of work experience, is to be able to show the right attitude. What do I mean by this? Demonstrate how passionate you are about learning, how you’ve spent time trying to understand and practice the basics, how keen you are to get a job in which you can learn by doing, etc. Once you’ve been working for a while, your experience will be a great addition to your CV to go for better jobs.
Of course, at some point, you’ll most likely come across some companies that will require a degree to work for them. What happens in that case? Well, you should ask yourself if that’s the right place for you, no matter if it’s your 1st or 15th role. That requirement shows that the company and you are probably focusing or giving importance to different things. This and many other characteristics that may not seem totally relevant on the surface, such as having a formal dress code, or a flexible working hours policy, say a lot about the culture and mentality of a company. Remember once again: we are lucky to be in this industry in which you can say ‘no, thanks’ and interview with tens of other companies almost immediately, so if a company tells you that you should get a degree and you think that it doesn’t make sense, you can thank them for their time and then move on.
A more complex scenario could be that 20 years into your career you have the possibility to become a Chief Technology Officer (CTO) of a big company, and for some reason they want you to have a degree to get the position. The solutions are very similar to the previous situation: first of all, you should ask yourself if you want to get that position at that company if you disagree with their way of thinking. Secondly, if you can be a CTO in that company, there will probably be several other companies that will offer you the same role without the need for the degree. As a last resort, sometimes these companies would even pay for your degree or training, most likely in management rather than IT or computer science if it’s a CTO role, so you’d be covered in that case too if that’s what you want.
Let me tell you something else: there hasn’t been a single occasion in my career or my interviews that someone made a significantly positive or negative comment about my degrees or the lack of them (when I hadn’t graduated yet or even before I started studying). During interviews, nobody has really ever asked me about my university studies. Not now, and not at the beginning of my career. Nobody cares about which university I attended, my grades or my dissertation. I don’t blame them.
I don’t remember asking candidates I’ve interviewed if they went to university or not. When I read someone’s CV, I don’t even check if that person graduated from MIT or if he or she didn’t go to university at all. In fact, when writing job specs to fill positions for my teams, I remove any sort of degree-related requirement.
Does having a degree gives you an advantage when competing with another person for one position?
Personally, as you can imagine at this point, I don’t think it will give you a significant advantage over other candidates. Nevertheless, not everyone thinks like that.
Let’s assume, hypothetically (since it’s an impossible scenario), that you have two almost identical candidates. The only difference is that one of them has a university degree and the other one doesn’t. Yes, most likely, many of the interviewers would favour the one with the degree. But here’s the thing: I don’t think the solution is for you to spend years of your life getting a degree. I think the solution is that you make sure you are not similar to the other candidate, but better so that the degree stops counting in the other candidate’s favour.
Let’s take a look at it in a different way with two candidates who are not identical, which is more realistic. By the time candidate A has a degree, candidate B will have, depending on the circumstances, around 5 years of working experience, as long as he/she is working, of course. Having 5 years of working experience will, in the majority of the cases, make a person a better developer and professional than the other one who just graduated. Even if candidate A was studying and working, if candidate B was dedicated and smart enough, he/she could have used the time in a more efficient and useful manner to be a better candidate than A.
What should you do instead of going to university?
Hopefully, if you made it this far in the article, you’ll get the gist of my ideas and recommendations. The main thing is to work. Get a paid job as an intern, or as a junior developer. Start working and start building your knowledge and experience by doing and learning from your colleagues. Change jobs once you feel you are not learning anymore or as much as you should.
However, that’s not sufficient. In the past, one of the only ways to learn was going to university, because that was where the knowledge was. It was either that or going to a library to read the books that were probably the same that were being used in universities. But now we are living in the Information Age, in which you can access pretty much all the information that you need, and more, as long as you have a device with an Internet connection.
You now have access to courses of all sorts of disciplines done by the very best in the industry. Many of them are free and some of them are paid, but if you compare them to the universities’ tuition fees, you could say they are very cheap. Learn how to identify which online resources are good and which ones are not so good. Ask your colleagues or more experienced friends for help and recommendations to decide if a learning resource is good or bad. Then, when you’ve found a relevant and interesting course, smash through it.
Learn about software development algorithms, data structures, specific technologies that you are interested in, solutions design, and more. Improve your communication and leadership skills from day one. Attend seminars and meetups. Talk to experts. Ask questions when you don’t understand. Try to contribute to some open-source projects. Create your own personal projects to practice and improve your skills. Read books. Try to detect your weakest points and then train until your weakest point is a different one.
One vital aspect that many software developers lack is soft skills. I’ve met outstanding programmers who can’t interact with people. Don’t stick to just coding. Software development is no longer about one guy with a computer isolated in a corner. Producing software nowadays is about teams, sometimes huge, building complex solutions. The different components of these solutions work together and have to integrate seamlessly for the business to succeed. The same needs to happen at a human level. So, make sure your communication skills are top-notch. You should be good at talking to both tech and non-tech people. Ensure you are a professional, empathic, and positive team player. These skills must be a part of your continuous training.
English is the universal language for software development. If English is not your native language, improve it. If English is your mother tongue, learn a second language to integrate better with this global world we live in.
If you do all these things and you work, I strongly believe nobody will even realise you don’t have a degree —and I’ve seen this before—, because you’ll be a fantastic and complete software engineer, with plenty of useful skills and proven full-time working experience in the industry.
Are there cases in which you should go to university?
Yes, absolutely. Sometimes, universities are the way to go. Here are the main scenarios, in my opinion:
- If you want to: sounds silly, but it’s the most important of the reasons. If getting a degree is important for you or you’ve always dreamed about going to university, do it. In the end, all that matters is what you do with your own life. Try to do what makes you happy.
- If you need a lot of structure and support: if you struggle to study or train by yourself and you are only motivated by the ‘fear’ of not passing an exam, maybe going to uni is a good idea. Many people say that going to university is important because it teaches you how to learn or how to be structured. I don’t disagree with them, but once again, there are other ways to achieve this.
- If you want to work in academia: if your goal is to be a researcher or a professor at a university, it’s a no-brainer that graduating from university is almost a must.
- If you want to be a hardcore computer scientist: if you want to work on information theory, machine learning, computational theory, numerical analysis, or similar, getting a degree in computer science, mathematics or physics will most likely help you.
- If you want to have a backup just in case you change industries in the future: if you ever get tired of IT and want to change industries, it can happen that the other industry will ask you for some sort of university degree. One option is going to uni to study something else other than IT. Many people study economics, physics, finance, management or arts and then work as a software engineer.
If you do decide to go to university, I strongly recommend you do it while working as a software developer. If possible, work full-time and study part-time. It will take longer to graduate, but this is not a race.
On the same topic, I believe a worthy alternative is to go to university after you have worked in the industry for a while and you can assess if you want the degree or not. I think the way we, as a society, structure our lives is wrong. We force ourselves to make life-changing decisions, such as what we want to do for a living for the rest of our lives, when we are 18, and well, we don’t know much about life at that point. So, what would be the problem if you decide you want to go to university when you are, let’s say, 25?
Would I be in the same position —with my successes and failures— as I’m today if I hadn’t been to university? Definitely not. I’d be in a different place. I’d probably have lost some opportunities and seized other ones that I’ve actually missed. And that’s the main point of the article. You will shape your career depending on the choices you make. If you feel university is the best choice based on your personality, context and professional goals, go for it. If you think perhaps it’s not the right thing for you, at least at this point, then don’t go. There’s no right or wrong way to approach your career, so do your own research, make mistakes, learn from them, and re-adjust the direction. Try to follow the advice of people with more experience than you, but don’t forget to build your own path and do what fulfils you and makes you happy.