I remember being a little kid playing with Lego bricks. I would just make things. What kind of things? Who knows- not even I knew what I was building. I would just put pieces together until maybe later on I decided that I wanted to make a house. Perhaps I started with little bricks first, and in order to make bigger rooms, I needed to include the larger bricks. This would leave things uneven so I was playing around with bricks until it all fit and clicked together. In the end, maybe I created a "house." It was probably, or most definitely, far from perfect- maybe I used one too many little bricks or a piece was missing or sticking out. Maybe one room had no window or the entranceway was lopsided. But despite being a messy, little thing, it was a house where my little Lego person could live happily.
I think of that little child who started without knowing exactly what her creation would be in the end. It was a chance to be creative - to let the imagination flow and to even get your brain thinking of ways to solve minor problems (if you consider how to build a pool without enough blue bricks a problem).
Nowadays though, I'm nearly terrified of starting any project - what if I don't know enough? What if it gets way too overwhelming? What if I get bored? What if I don't finish it? What if I can't actually pull this off? All of these thoughts I'm sure many of us had before (or even have now) during our learning journey. We overthink, over-plan, overreach, and soon end up in analysis paralysis - too overwhelmed by our own overthinking to even start.
But what if we just channeled our inner child and just started, even if we don't know how to? What can be learned from just starting? Well, the best way to learn how to code is to start coding. We may feel overwhelmed, underprepared, and not ready to start a project, no matter how small, but who cares?! Start, even if you don't know how to.
Start off with something small, pile your bricks one by one until something clicks. Often we think of projects as large apps and user interfaces, but even among those big projects, there are many little projects there. Build a navigation menu, a user profile, a portfolio grid. Within a major project that seems too overwhelming to begin is a mini project we can tackle.
It was simple and small, and yet I spent a lot more time on this mini project than expected. It was a lot of work for a small feature, but it was the perfect opportunity to learn. So don't be fooled by those small projects, there is always a lot to be learned!
I'm pretty sure my first Lego houses were less than aesthetically-pleasing, and I'm pretty sure I could say the same about my code from each of my projects' earlier days. Especially if you are starting without much of a plan, things can get really messy really quickly (side note: as someone who loves to organize her CSS to the point of creating a table of content for my files, the thought of messy code makes me super anxious). But this is okay.
The point is we want our code out there, and hopefully, at the very least work (although there is plenty to learn from code that doesn't work!). It will not be the best code you ever written- sometimes you'll have too many conflicting CSS statements, sometimes you'll use jQuery and vanilla JS in the same document, sometimes you'll use a framework or preprocessor you don't really need, and sometimes your code will not be responsive and/or accessible. Things will get messy, so accept it, at least for now. There will be time to refine it later.
The good thing about building messy little projects is that if they get too messy, we not only can just let them be, but if we ever wanted to, we can return to them without becoming overwhelmed.
I had been wanting to do a Sailor Moon-themed project for a while and started coding up a mini project. What was I trying to do? I'm not even sure myself. If you look at my CodePen profile, I've got at least three versions of this mini project created over the past few months. The first two are absolutely messy and with no clear outcome, while the latest is not great, but it's better. I didn't feel bad about abandoning the first two, and I'm actually proud of this last one. The latest uses some of the code from the first two projects but actually includes a feature I hadn't even thought of (theming with CSS variables).
It's okay if you don't finish your mini projects, it's okay if you do, it's okay if they turn into something entirely different. Every chance at coding is a chance at learning. So finish your little projects ... eventually (maybe).
Go back to old projects, refine them, and learn, but don't forget to repeat! I cannot stress this enough - repeat, repeat, repeat! Learning to code could get incredibly overwhelming, especially with a lot of new information coming at you at once. So even if you've grasped a concept or managed to code a solution in record time, do it again.
My Sailor Moon color theme project involved buttons, which I used to always practice but hadn't in a few months. So I'm surprised but also not surprised that it took forever for me to try to do something as simple as add an event listener. Now I know better- keep practicing buttons.
Repetition will help you retain your new knowledge and skills, and soon it will be muscle memory. But not only will you remember things faster, but if you take the time to also refine your code, then the better your coding skills will become. Lego houses get better with time and practice- more symmetry, using less or better bricks, and having lots of room for a kitchen, garage, and a pool; same thing with coding. You'll find the more you work on the same or similar projects, the better they will become! And no, your code won't get better overnight; we won't go from small homes to castle estates within a day! But with small projects, small victories are still victories, small bits of knowledge are still knowledge. Keep going, learn more, and get better. Refine, learn, repeat.
This goes without saying - have fun! I started doing mini projects as a way to unwind- to step away from larger projects but still take the time to learn and practice, all while having fun. But what they've done for me is so much more. They help me to step away from my perfectionism; they remind me that there's always a lot to learn and that learning (and my code) could get messy. Mini projects remind me that I don't have to get it perfect or even right the first time. With this attitude, I'm able to include the fun factor! And don't you ever forget the fun factor- otherwise building messy little things might just feel like work.
If you want to learn how to code, build messy little things.
- Start, even if you don't know how to.
- Don't be fooled by small projects- there is always a lot to be learned.
- Things will get messy. Accept it (for now).
- Finish your little projects ... eventually (maybe).
- Refine, learn, repeat.
- Have fun!
Cover Photo by Kelly Sikkema on Unsplash