I loved studying computer science at a university! I met lots of like-minded people (nerds) whom I could join at the computer lab solving problems till late at night while getting “paid” (in student loans and credits).
I think it’s mostly about the mindset you learn to implement. At the university, you learn how to approach problems theoretically, and you learn to think in a new way. You rewire your brain. At the university, I learned object-oriented programmming, functional programming, assembly, and I don’t know what else. I learned high-level languages and low-level languages. Mostly, I learned how to solve problems.
Of course, you can learn all that by yourself, and many people do. That’s very different from actually using programming as a practical tool, however. I did not learn any frontend programming at the university. I didn’t learn git (well, I learned it myself, like people who don’t go to universities). I didn’t learn how to make a website, or a GUI application, or how to make a node.js application with dependencies, or how to use an IDE. In short, I didn’t learn to work as a software developer. And that’s OK!
But I learned how to learn. I learned how to learn any programming language. I learned how to write a compiler for a programming language. I learned how to write an emulator for a video game console. I learned how stuff works, under the hood, and how the people who made that stuff thought, and how the computer thinks.
I really agree with you on the meditation/relaxation. Programming is very meditative. I can’t count the number of times I’ve realized the solution to a problem while meditating, or taking a walk, or listening to music, or sleeping.
Programming is creative, and requires lateral thinking. It helps to let your brain enter its “diffuse mode”, as it’s called in this story about Magnus Carlsen. Programming isn’t chess, but they still have a lot in common.