Four years, which is the typical length of a bachelor's degree program in the United States, is long enough to where economic conditions could change substantially. When I was a freshman at Cal Poly San Luis Obispo in 2005, the advice I heard around me was that majoring in computer science was a mistake since the dot com bust decimated Silicon Valley and all software jobs were going to be sent to India. I majored in computer science anyway, partly because I was more interested in pursuing a research career instead of a software engineering career anyway, but also because computers were (and still are) my passion and I felt that I'd rather take my chances in a tough job market than to do something I wasn't passionate about. In my situation, the software industry recovered in ways many of us couldn't imagine. The rise of cloud computing, mobile computing, social media, and big data in the late 2000s helped spark a long-running tech boom, especially after 2011 when the economy started recovering from the 2008 housing bust. I ended up going to graduate school in a failed attempt to earn a PhD, but my classmates, who also majored in computer science out of passion, largely went to industry after completing their bachelor's degrees (or after sticking around an extra year as part of the university's 4+1 BS+MS program) and ended up having highly successful careers, working for major companies like Google and Microsoft during the long tech boom of the 2010s. Some of them did well enough to purchase homes in Silicon Valley in their late 20s and early 30s, which is no small feat given the extraordinarily high real estate prices here.

To make a long story short; we don't know what the economy is going to look like in 2028 when your son graduates. Four years is a long time.

In addition, a university education is not job training. I could expound on this in great detail, but to keep things relatively short, a university education is not sufficient for a job in any field. Even during the boom years, a computer science degree alone is no guarantee of a job, because what employers want is different from what many computer science programs teach. CS programs train students in computer science, but employers want to hire software engineers, site reliability engineers, data scientists, system administrators, etc., but they don't typically hire computer scientists unless they are hiring researchers with graduate-level degrees. Yes, knowledge of computer science is essential for the aforementioned careers, but often doing well in those roles require knowledge that is typically not gained in most computer science courses. One of the best ways of filling this gap is doing internships, where companies are willing to give college students the opportunity to learn how to work in industry. Also, in the tech industry internships not only pay, but they pay very well, enough to help reduce dependence on student loans. At Cal Poly, my peers who did summer internships or co-ops (these were longer internships with opportunities to earn college credit) were more likely to receive job offers from top companies than those who didn't do internships. Other ways of gaining such experience include part-time work in the industry (which is rare, but sometimes exists) and contributing to open source projects.

So, to sum it up, if your son is passionate about computing, he should major in computer science. However, he should also take deliberate steps to prepare for a career after completing college, and he should keep in mind that he may need to pivot his career throughout his working life, whether it's due to economics, life circumstances, or changes in interest. I wish him well with his time in college this fall!