People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.
Donald Knuth
- It's humbling
- It's also empowering
- You begin to question things at a deeper level.
- It encourages you to be a team player
- It encourages you to be analytical
- You can actually contribute to the body of human knowledge
- It rewards persistance, resourcefulness, and hard work
- It gives you a renewed appreciation for education
- It rewards curiosity and a love for learning
You get to work with really smart people. Also, if you haven't followed the traditional route of getting a computer science degree, you learn how to deal with facing higher barriers of entry to the field. You learn to deal with the fact that some people are just going to be more competitive candidates than you, and that all you can do is strive to be better.
While there are differences in people's ability, you realize that you have more or less potential as anyone else to contribute positively to the world. Programming solves problems.
Programming is effective at eliminating assumptions about the way something works. You become better at evaluating your own false preconceptions, often of which, to your surprise, there are many. This way of thinking inevitably expands into other areas of your life. You become slower to jump to conclusions. You begin to question what you're told, and learn that you need to find out for yourself. As a result, you become more effective in your work and life, and you tend to trust yourself more. You have fewer opinions and tend to value evidence-based approaches. This begins to apply on a wider and wider scale.
Sometimes you have to put aside your own thinking for the team, which ultimately is linked to the goal of the project itself. You discover that you can accomplish more through working with others.
The more understanding you have of something, the easier is becomes to solve a problem related to it. You think about the reasoning behind a certain approach.
While human advancement has often been portrayed as the lone genius having a stroke of insight, the reality is that progress is built on the groundwork of others. Other more academic fields such as physics or biology have a high bar of entry -- you have to have been studying them long enough to contribute to a niche area. With programming it's fairly easy to add to the common body of knowledge.
You often come across problems for which you can't find solutions on the internet and have to come up with it yourself.
When you've had to slog through hours of debugging or learning to code on your own, you gain such an appreciation for someone telling you how to something. Then you suck the information so hard from their brain that they never have to tell you again, and now you are a 10X more efficient programmer. It makes you understand the value of education, which is to enable you to think critically and solve problems. As a consequence, it makes you want to help educate others.
It's a privelege to be able to do something that is intellectually challenging, where you get to learn something new everyday.