Recently I saw a Locals post that asked "Is there a downside to programming?" Presumably to illustrate the question, the post linked to a video titled Harsh Truths No One Tells You About Programming. It was one of the most horshit videos related to programming I've ever seen. Here are some real harsh truths about software engineering.
1. The dominant paradigm in our industry is Meme Driven Development. People often structure their work and use tools based on popular ideas that nevertheless have absolutely no grounding in reality. Such ideas are spread virally, often through conferences and websites.
2. One side-effect of Meme Driven Development is never-ending churn. Popular technologies and practices change often and without any profound reason. The justifications given are usually just another set of memes. Even the oft invoked notion of technology as a "rapidly evolving field" is a lie. Real, objectively measurable progress in software engineering is very slow. Nevertheless, any change that occurs is reflexively presented as progress.
3. Software engineering field can be accurately described as the world's biggest self-licking ice-cream cone. The majority of people working in the industry spend the majority of their time on issues created by other people in the same industry. The output that reaches end users is a tiny fraction of the total effort spent on running the machine.
4. The language we use to talk about software was developed for influencing people, not for explaining things. Therefore, it is often impossible to make concise and true statements about some property of an applications. The vocabulary for statements simply hasn't been developed and popularized.
5. Good software often loses to bad software in the long run. It doesn't matter how exactly you define "bad" and "good". On the individual level, this means quality of your code does not correlate to its longevity. On the global level, it means the notion that software products are getting better and better via market competition is yet another meme.
6. Software industry is rapidly expanding, so by definition the majority of people working in it are inexperienced. Worse, it's currently an industry where you can get high salary with little to no education, skills or knowledge, so a large fraction of developers are tagging along just for the money. Thus, the percentage of software people who are both capable and interested in making things better is unusually small. This is true even in hyped-up big tech companies, despite their carefully cultivated PR image.
This is not an exhaustive list. Moreover, issues above have complex interactions that produce more issues. Every single item here can serve as a basis for a much longer article, but I think that's more than enough red pills for one page.