Problem Solving
I'm a novice software developer.
Sure, I've been tinkering with computers for as long as I can remember. I've dabbled for years in HTML/CSS, Java, C#, etc. just trying to solve small problems. I've built my own PC's, goofed around in CLI's, etc. And that’s all well and good…except that I never systematically attached my menagerie of isolated fun facts into a systematic understanding of the skill of problem solving via programming.
I only recently started a disciplined, formal program to learn C++ and Javascript. On the one hand, I’m excited to finally be filling in all the knowledge gaps that have plagued me for years. On the other hand, it always reminds me of how much farther along I could be, had I started sooner. C'est la vie.
One aspect of systematically learning coding that I really enjoy is my growing ability to break complicated problems down into bite size chunks.
There’s a flow state that starts to happen as you get deeper into writing the program that is quite satisfying.
I also can’t help but run into another, deeper truth: a key component of skill mastery is the ability to enthusiastically embrace mistakes.
I used the word “enthusiastically” there, and I meant it.
The reason is that there is a prerequisite level of self-awareness that must occur for one to move past basic acceptance of a mistake, and be able to be excited about discovering that they are wrong about something. Accepting that you are wrong is good. But taking some joy in discovering that you’ve corrected another error in reasoning, is quite rewarding. It puts your ego in a very contextualized space, and allows for broader growth.
Programming is a really tangible path to learning all the ways that intent and execution aren’t actually the same thing.