One of the best things about learning to code is that it can be an excellent way to build perseverance and help you learn to deal with frustration with problem solving.
One of the worst things about learning to code is that you spend a lot of time dealing with frustration while you’re trying to solve those problems. New coders especially tend to assume that they’re just not good at it when they hit these points when really, it’s a part of the coding landscape. If you spend any real time working with code or working in a coding field, you’re going to be working on novel problems that you don’t know how to solve yet, and that means you’ll end up doing a lot of research on Google and developer message boards. You’ll also (inevitably) figure a lot of things out by good, old fashioned trial and error.
When working with students who are learning to code for the first time, one of my most important roles is that of cheer leader. Any time someone struggles to learn something new, their self-efficacy takes a hit. When it comes to tech (and probably any STEM field, for that matter), it tends to hit especially hard because many people already equate tech with a higher level of difficulty than other subject areas, and sometimes they perceive frustration points as evidence that they’re just not smart enough to build any real, meaningful mastery.
In reality, though, there is no traditional mastery in tech. Languages are constantly changing and being improved and refined. The language landscape also changes constantly, with languages passing in and out of fashion over time. If you work as a developer for more than five years, you will almost certainly end up working with multiple languages and at least half a dozen tools over that time. No one builds any real mastery in a particular language or tool because that knowledge will be obsolete before long, and it’s much better to have a decent working understanding of a languages structure and syntax, and rely on coding dictionaries to help fill in the details.
The most important skills you need as a developer are the stubbornness to keep beating your head against (mostly) metaphorical walls, and the ability to keep learning every day of your career.
I did my dance with frustration last Sunday working on my first flutter project that didn’t come with explicit instructions. I could probably have gone back to re-watch some of the videos, but I admit that I am stubborn and I find value in wrestling with problems like this because it generally helps me to build a stronger understanding over the long term.
I thought I’d record myself mid-code battle and make a video to try and normalize this for other people who are trying to learn to code, just in case it helps them to feel less alone in their frustration points. I still haven’t totally figured out this first independent project, but I’m still working at it and making progress, and that’s the most important thing. And I’ve gained a much better understanding of basic Dart in the process, so hopefully the next project will be easier (or I’ll at least struggle with more advanced things)!
My favorite part is where Jilly Bean decided that it was time for me to take a break and cuddle with her!