In 2021, I came to two realizations in my coding journey: I wanted to make coding a career and I needed to rethink how I was learning.
Like many, I have done all the lessons on Codecademy and I have completed the certifications on freeCodeCamp. I have a pretty good idea of how to write and structure my code. But when I would open a new, blank file I was lost.
I realized that I was learning how to code but not how to build. I needed to start applying what I was learning to real-world projects. And in order to start building I needed to stop being a perfectionist!
You'll Never Be Perfectly Prepared
Perfection is the enemy of progress. -- Winston Churchill
The best way to master a tool is to use it. It's too easy to watch lectures or follow along with lessons and construe/interpret that as learning. In the moment you feel like you are retaining all of that knowledge. When it comes to your coding journey there are so many learning paths for you to follow. First steps, gotta learn HTML and CSS. Then it's off to learn JavaScript. Now we can finally start building! But wait, I really should learn a framework first.
Do you see the problem? We don't want to start until we are perfectly prepared. Perfectionism is holding you back. There's always one more thing we need to learn before we can start building. We never actually master any of the tools we are learning.
(Side note... career roadmaps are extremely useful! They are like like signposts on a trail, helping guide your learning. Just don't feel like you have to follow them step-for-step. I'm a big fan of roadmap.sh.)
Creating a Building Mindset
I have found the following steps to be helpful in transitioning from a learning mindset to a building mindset:
- Always be Building
- Work in Drafts
- Keep it Simple
- Revisit, Improve, Repeat
1. Always be Building
Be intentional about including building into your learning. If you find yourself flying through lessons and courses, it may be time to slow down and build something. One of my favorite ways to apply something I just learned is to replicate the lesson from memory. A lot of times you are building a project alongside your instructor, challenge yourself to build it from memory. It may take multiple attempts before you can do by yourself but it's worth the extra time!
2. Work in Drafts, Make Mistakes
Guess what you will never do? Write perfect code the first time.
There are steps to every creative process:
- create an outline (pseudocode or a wireframe)
- create a first draft, and be okay that it will not be perfect
- revise that draft (most likely multiple times!), with each iteration it will improve
- publish the final draft
By not expecting your first effort to be a perfect, final end product you give yourself the room to start with vague ideas. You don't need to have all the answers immediately. Each time you revise your draft you are sculpting and carving your initial ideas into a final version.
By acknowledging that your first draft will be less than perfect you have the freedom to create and make mistakes.
3. Keep It Simple
It can be very tempting to look at all the technologies, designs, and projects that are available to us as web developers and want to do it all!
For beginners, one of the most important lessons is to keep it simple. That applies to your learning and to the projects you are building.
Learning
Learn one thing at a time. It doesn't benefit you at all to learn ten different topics at one time and master none of them. Focus on one lesson or topic at a time and take the time to understand the material. And don't forget lesson one, always be building. Apply your new knowledge!
Projects
It can be too easy to bite off more than you can chew with your first websites or projects. Similar to keeping your learning simple, set realistic expectations for your first projects. You can always add more features as you learn more (but wait, I'm getting ahead of myself).
4. Revisit, Improve, Repeat
The best part about code? It can be updated and improved. Welcome to refactoring.
After you publish, your code is not locked in amber never to be touched again. Coding is an ongoing cycle of updating your code. You can simplify existing code, remove redundant or broken code, or add new features.
Stay in the building mindset, you are never done improving your code.
Go Forth and Build!
The fight against perfectionism does not go away. Even as I write the final draft of this post I am wondering if anything can be improved. But at some point we just need to decide that it's time to build. To publish. To ship.
We are going to make mistakes, we are going to run into challenges. That's how we get better! The journey is the experience. Every time you make a mistake or get stuck, that's an opportunity to learn. Just don't forget to apply what you learn.
I can't wait to see what we all build in 2022!