The landscape of computer science, programming, and related careers has changed dramatically since I first took an interest in it. A common pattern I have observed is that (prospective) students are often unsure whether they are cut out for programming, so I will attempt to answer this from my own perspective.

The job market

When I was younger, I could still hear echoes of the “Learn to Code” movement. In principle, there is nothing wrong with children learning to code as an activity intended to foster abstract reasoning and general scientific skills. The significant push towards STEM and computer science as the new fashionable and well-remunerated field has resulted in record numbers of graduates from CS/CE programmes, marking a 2.8x increase over the past decade. There are many reasons to pursue computer science. Some began tinkering with computers early on, treating it as an enjoyable hobby that could easily become a career. Some were enticed by the financial rewards. Others were pragmatic enough to run the numbers and view it as a career path that is neither particularly joyful nor dreadful. I have met all of these archetypes, and once upon a time, they all found success.

The current situation in the job market - short-sighted executives seeking to cut the largest source of expenditure, the widespread misconception that scientists will soon be replaced by LLMs, previously overzealous hiring practices, the increase in supply of programmers, and the generally poor state of global financial markets - all make matters more challenging for new programmers.

The early 1990s brought CASE (Computer-Aided Software Engineering). Under the premise that code produced by human programmers is substandard, but that they are nonetheless excellent at modelling and creating specifications, we attempted specification-driven code generation for the first time. Around the same period, UML was invented. How is it that you have (most likely) never heard of it? The principal problem with CASE is that it never worked. When generating code, the best the tools could do was create all the classes for you and perhaps define the methods for the class. The tools could not provide an implementation unless they also managed the implementation within the tool itself, which was dreadful.

Regardless of the actual long-term implications of the current situation, opportunities for computer scientists are rapidly disappearing. The skill level and degree of productivity now required of programmers, as well as further qualification requirements, have increased sharply. Keeping up with the rules of the game has become more difficult, and there is room for fewer programmers, relative to the number of people qualified to do the job, than there was previously. It is increasingly apparent that computer science is no longer the popular field that guarantees a consistent income and good working conditions for the average graduate. Regrettably, many of my friends who never truly took a deep interest in programming have not succeeded, and I seem to have largely lost contact with them.

My thoughts

There appears to be some truth in the common advice never to turn your passion into a career. I have always pursued my interests without regard for their value to the world and thus ended up specialising in all the obscure and undesirable parts of computer science (compression, compilers, embedded systems, machine learning, and so forth). Frankly, it is almost exclusively these areas that I find enjoyable. The thought of tweaking PyTorch for a fictitious and pointless AI start-up, or writing JSX for a cryptocurrency website, or maintaining a decades-old enterprise Java 5 codebase that implements a point-of-sale system, makes me feel physically ill. I cannot force myself to do things that do not seem enjoyable. Of course, the majority of your work as an industry-affiliated programmer will be the unenjoyable parts; you can either accept this or leave it. Given the current state of the market, you will be grateful to do whatever is assigned to you, and I am certain that many programmers I know would be happy to accept even a data entry position. Despite having commercial experience, it is irrelevant due to the obscurity of the technologies involved (e.g., C). It is also likely that employers in 2025 would be unwilling to hire me for ideological reasons, such as my sex/gender or nationality.

It may seem that academia is an easy way to escape this. In reality, I have always found coursework frustrating and sought to avoid it. I did not wish to study for exams and memorise things that felt useless to me, nor did I want to have to constantly prove myself to someone or explain my actions to someone who cannot even know that they are wrong - one of the reasons I am not receptive to anonymous criticism on HN, Lobsters, and similar platforms. Ironically, the only exam I have ever failed in my life was a data compression exam. Western stipends are insufficient to live on by themselves, especially for someone like me coming from an Eastern European country. It is also not as though anyone is looking to offer me a stipend, as many universities are more pressed for money than ever, with students trying to avoid entering industry given the current circumstances.

I am beginning to realise that I have dedicated my life to something that is not marketable and have pivoted to a field that is not at all merit-based. Perhaps I am unlucky or underqualified to pursue anything computer science-related as a career, but I know deep down that this would not have been a problem had I chosen a different career path to support myself and continued to pursue what I enjoy as a hobby in my free time.