There are lots of ways to learn; some people learn best through listening, some through visuals, and some through projects. I would argue that regardless of your learning style, the best way to reinforce what you learn is...
Play!
Play is honestly one of the most underrated things that we do. As kids, we learn through play. Exploring the bounds of the world by grabbing anything and everything in sight, biting things, and closely inspecting every inch of where we are. As most of us go through school our goal shifts from learning through exploration to conforming to standards and "doing well".
How do you learn through play
Well this one is easy. Learning through play is about two things:
- Making lots of mistakes
- Enjoying the process
That's all well and good, but if you're like me, both of those things are very difficult to do after some time working as an adult, having gone through school, and putting lots of pressure on yourself to do well. When you look at social media; you see people doing productive things, excelling at things they're trying for the "first time." I can't tell you the number of YouTube videos I've seen titled along the lines of "Making my first game, my dream game" and it's secretly the result of leveraging assets or skills built up over years. There's nothing wrong with that, of course! Don't take it to heart though, the narrative that you see at a glance.
Why is this important
Well I'm glad you asked. Recently I realized that I was taking myself and the code I wrote way too seriously. Granted some of this is just the byproduct of working with smart people. And there are many smart people in the world 😊
One part of our code that stuck with me in a recent project was a bit of code that wasn't working, and looked something like:
val screenState: ScreenState =
repository1.getSomething()
.merge(repository2.getSomethingElse())
.map(r1, r2 -> {
// Do a bunch of complicated stuff here
})
And if I needed to touch this state object I was immediately thinking "okay, this has to not only never break if I touch it, but also I have to make sure I don't write any code that looks hacky or dumb.. And also I should be able to write this code within the day, otherwise I'll look dumb..." My brain could come up with a billion reasons, an endless spiral of stress without a single keystroke.
Now some of this is just how I'm wired. Perfectionism with unrelenting standards poured over my ice cold ADHD? That is truly a cocktail that can be dangerous if not carefully directed.
So what broke me out of the spiral?
Making mistakes.
The first thing I did was just break the code. I had a vague idea of what I wanted to do, but I don't do good with surgical code changes. I follow the break it down and then rebuild it. Great for code and art, not so good if I ever wanted to do anything in the medical field.
Once I had made the first error, it was easy to just keep making more in the direction I wanted to go in the first place. Some things are complex, but arranging broken things is quite easy. After you lay the foundation of what you want to do, well then you just play around with it till it works again.
This was a game changer for me because I was able to play once I had already made the first mistake. Without making that first mistake, I would have been trying to do things the right way, and I would have stumbled into the solution that fixed the bug I was working on
Summary
No one cares if you make mistakes. Chances are people won't even know you made them! Or they won't know how drastic they are! There's even a chance that they'll assume that it was intentional; you had thought of some approach that was actually better than what they've considered!
Go play. Embrace mistakes. They're what keeps life interesting.