
In practical terms, you do not need a university degree to become a programmer because, unlike law and medicine, software engineering is not regulated. You just need to have the skills. This concern is even bigger in the AI era. People wonder if going to college is still worth it. “I can make a React web app using ChatGPT without knowing tons of JavaScript and data structures.”, they say. Some youngsters may have been programming since their 8s or 10s.
I am here to say “Yes, it is worth it!”. But maybe not for the reasons you might think. I will discuss AI too.
Yes, go to college!
In general, going to college to become a software developer/engineer or like is a good idea. However, it is not because of the course content. You do not need to formally enroll in an “Introduction to Programming in Python” course at the university to learn how to program in Python. This would be beneficial, but not strictly necessary because there are a lot of free online materials for you to study. I am not talking about a YouTuber’s tutorial on Python. I am talking about high-tier university courses taught by the best Professors in the world. Examples are the MIT OpenCourseWare, Stanford Online, and complete courses on YouTube: Harvard CS50 – Full Computer Science University Course, CMU Intro to Database Systems, etc.
Now, some of the reasons why going to college is worth it are the following:
- Getting into a good university is difficult. If you overcome this challenge, it will prepare you for other things.
- The university gives you various opportunities outside the classroom, such as contact with professionals and researchers, all sorts of events, internships, exchange programs, and the first experiences with teaching (“Teaching Assistants”), research (Bachelor research projects), science outreach, etc.
- Your classmates may become valuable networks in the future. While you study together you are in the same position. This is like buying shares when they are low, but they can go up later, giving you profit.
- The whole process of completing a STEM degree is not easy. Overcoming this barrier makes you better prepared for other things in life.
- At the university, you have opportunities to acquire and train soft skills in a controlled environment, such as when managing a group project, presenting assignments, and interacting with your classmates and teachers. If you mess up, you will not be putting your job at risk.
In summary, the university opens up a world of opportunities and multiple learning environments that will definitely be beneficial for almost anyone who wants to become a programmer, even if you are already a self-taught coder.
When is it not worth it?
In some particular cases, going directly to college may not be feasible. I am referring to the unfortunate situation wherein the person does not have enough money or time. For example, an adult who has to work 8 hours a day to sustain a partner and a kid, but who wants to shift from the current job to software engineering. Because this person faces urgency, money, and time constraints, it may be better to learn practical skills that can lead to a Junior position as soon as possible, such as JavaScript, HTML, CSS, and some frameworks for web development. I am not saying this is the best path for a person in this condition. I am just saying this person has to deal with a lot more issues than an 18s who is supported by the parents.
But AI will code for me…
Current AI systems cannot be much better than an average programmer because a lot of important codebases are not open-source (meaning it is available online to be web-scraped), and a huge amount of open-source code is composed of repetitive ordinary Python and JavaScript projects or code snippets. In other words, the training data is not so incredible… Moreover, the so-called “hallucinations” (unexpected undesired token outputs) are unavoidable by design. Even if they were rare (but they are not), this would be enough to raise concerns about the idea of employing LLMs in a pipeline executing numerous operations per minute without human supervision. This can be addressed by error handling techniques and data validation, but I do not know if this can solve the problem. In some use cases, this might not be a major problem. However, for sensitive applications, this would easily become a serious issue. Imagine an LLM deleting entries and updating databases. Even if it makes 1 error out of 1000 prompts, the problem can quickly scale in a large system handling thousands of operations per minute.
In the video below (in Portuguese), Lucas Montano, a senior programmer, gave Devin root access to his VPS to work on his small hobby project. It is very entertaining and revealing about AI systems programming capabilities. Asked to execute simple instructions, Devi made catastrophic errors, deleting important files and committing thousands of lines out of the blue. The funny thing is that after being questioned, Devin lied and said it understood… Lucas, as an experienced programmer, spotted all the issues and rolled back the codebase while unsuccessfully trying to make Devin do things correctly. Devin’s behavior is not a surprise. It just does not understand anything. It does not treat texts as containing meanings, which must be understood and used to guide future actions, but as sequences of tokens. Devin’s job is to guess the next tokens using probability and linear algebra techniques. Our interaction with Devin is not communication, but a wider window of context (more tokens) for him to try its luck at guessing the rest. There will always be absurd errors like those. Incremental progress is expected but major advances would require novel AI paradigms to guarantee the consistency and quality of the AI system outputs.










