university degree: worth it?

yet another software engineer’s point of view …

Photo by Pixabay on Pexels.com
Photo by Pixabay on Pexels.com

Would you be hired as software engineer working in FAANG (Facebook, Apple, Amazon, Netflix, or Google) if you do not have a university degree? Can you be a successful software engineer without a degree? Is it worth spending time and money (especially in United States) to get a degree?

My answers to the above questions are Yes, Yes, IDK. Someone can start programming at the age of 7-8 years old, take online courses, and watch online tutorial. The person can be good at programming after 5-6 years of learning and practice. I think the person’s interest in programming and problem solving play a big role in making him/her a good programmer. These days, it is easier to be a self-taught programmer because there are abundant of materials online. We just need a laptop and internet connection to learn.

Many software companies are hiring and there is a shortage of programmers. In order to attract good ones to join them, they are paying good compensation packages such as base salary, stock options, health insurance, 401K matching, bonuses, etc. During job interviews, applicants just need to demonstrate coding skills in any programming languages, and sound fundamental computer science knowledge. Most of these companies require candidate to attend 2 to 3 sessions of job interviews. Each session is approximately 4 to 5 hours. With a lot of practices, I think motivated and smart individuals can be successful in these interviews.

Why do we spend time and a fortune on undergraduate school?

Education systems are structured in a way that students do not specialize in one field until they are in university. Students learn a variety of things in Elementary, Middle, and High Schools to have a breadth of knowledge across different subjects. At these levels, the most important things are to

  • take instructions and understand them
  • read and write proficiently
  • socialize and work well in a team
  • think logically and understand social responsibility

In university, undergraduates major in the field(s) that they are interested in. The curriculum focuses on core fundamentals in the field-of-studies, and it can be intense (that’s average students struggle to pass the tests). The goal is to equip students with the knowledge and tools to be specialists. In the field of computer science, students are introduced to data structures (not restricted to the simple list, stack, queue and hash map), theory of computation, databases, advanced algorithms, soft skills, etc. Students learn to be creative in solving problems; and work harmonically with others.

The university degree is a certification from the university that an individual has met the requirements to be a specialist in the field. Since new graduates do not professional working experiences, employers require this form of certification. As a matter of fact, school projects, GPA and degrees from prestige universities are also taken into consideration.

Can programming be taught in university? In the university, students learn to become a good programmer such as understanding requirements, cultivating good programming habits, acquiring problem solving skills, etc. Programming is not just about writing code, and it is also about understanding the problem domains, modeling the problems, finding solutions, writing code, developing unit and integration tests, and deploying the solutions. An analogy is practicing martial arts. Practitioners go through a series of grading tests before they receive their black belts. Black belt status certifies that an individual can execute the martial arts moves and use them correctly. The individual is prepared mentally, physically and spiritually to begin the in-depth studies of martial arts. Hence, it is just the beginning.

During my university days, I was fascinated by many interesting ways to find good solutions for complex problems. There were many aha moments when I was learning the works of great computer scientists and theorists. And, some of the interesting stories behind some algorithms such as Dijkstra’s shortest path algorithm; and the famous George Dantzig's homework story. Certainly, there are many things that I would not have learned if I skip undergraduate and master’s programs.

What is the shortest way to travel from Rotterdam to Groningen, in general: from given city to given city. It is the algorithm for the shortest path, which I designed in about twenty minutes. One morning I was shopping in Amsterdam with my young fiancée, and tired, we sat down on the café terrace to drink a cup of coffee and I was just thinking about whether I could do this, and I then designed the algorithm for the shortest path. As I said, it was a twenty-minute invention. In fact, it was published in ’59, three years later. The publication is still readable, it is, in fact, quite nice. One of the reasons that it is so nice was that I designed it without pencil and paper. I learned later that one of the advantages of designing without pencil and paper is that you are almost forced to avoid all avoidable complexities. Eventually, that algorithm became to my great amazement, one of the cornerstones of my fame.

— Edsger Dijkstra, in an interview with Philip L. Frana, Communications of the ACM, 2001 

It happened because during my first year at Berkeley I arrived late one day at one of [Jerzy] Neyman’s classes. On the blackboard there were two problems that I assumed had been assigned for homework. I

copied them down. A few days later I apologized to Neyman for taking so long to do the homework — the problems seemed to be a little harder than usual. I asked him if he still wanted it. He told me to throw it on his desk. I did so reluctantly because his desk was covered with such a heap of papers that I feared my homework would be lost there forever. About six weeks later, one Sunday morning about eight o’clock, [my wife] Anne and I were awakened by someone banging on our front door. It was Neyman. He rushed in with papers in hand, all excited: “I’ve just written an introduction to one of your papers. Read it so I can send it out right away for publication.” For a minute I had no idea what he was talking about. To make a long story short the problems on the blackboard that I had solved thinking they were homework were in fact two famous unsolved problems in statistics. That was the first inkling I had that there was anything special about them.

– Prof. Dantzig own description (found at https://pdfs.semanticscholar.org/c34e/25620eefab5db4fa2865ad65f54fe9c6f129.pdf)

In general, employers require candidates to have university degrees so that hiring risks can be minimized. A candidate without a degree shall be considered if candidate is able to demonstrate special skills and/or achievements such as won very competitive programming competitions; started successful companies; or worked in reputable software companies for many years.

In my opinion, there are values in undergraduate program where students are challenged academically; and learn to work in a team. Then, some people may fall in love with academic life, and/or get academic intrigued; and go on to pursue master’s degree and PhD. In the United States, the tuition fees for public universities are too high. Hence there is always a question: “Does it worth doing it?”. The tuition fees in most European countries like Denmark, Germany, France are free (or at a very low cost). A friend was telling me that France has significantly more budgets on Education and Advanced Research than Military, and United States has more budgets on Military.


Comments

Popular posts from this blog

OpenAI: Functions Feature in 2023-07-01-preview API version

Storing embedding in Azure Database for PostgreSQL

Happy New Year, 2024 from DALL-E