Bad code is the first step towards good code
As a part of my job at General Assembly, I sometimes get a chance to mentor our students who are learning to code. They're smart, motivated, and care deeply about getting the right answer. We really do attract awesome people, and most of the time they stay on the right track.
But there is one unfortunate side effect of putting so much energy into learning to build web apps the Right Way™. I’ve noticed it in a few students, and it reminded me of what I felt like when I was going through it.
What these students don't realize, and what I have learned in my years of building web apps, is that you have to do things the wrong way before you can do them the right way. Allow me explain what I mean by this.
When you're getting started as a programmer, you quickly get to a point where you know enough to turn many of your ideas into functional prototypes. But if you're anything like me, you probably waste a lot of time and energy worrying about whether or not you’re doing things Properly.
Is your CSS truly modular and object oriented? Are you using properly RESTful routes? Is your database schema completely normalized?
You let your inner developer-snob paralyze you.
In struggling with the answers to these questions, beginners tend to add unnecessary complexity to their applications, and suffer a great deal of stress. It takes the joy out of building things, and it's generally unhelpful.
Yes, there are such things as best practices in software development, and they have legitimate value, but as a beginner you are not obligated to internalize all of them at once. Just stop worrying about it! Make something you're proud of, then improve it little by little. Learn one thing at a time and make incremental progress.
Most of all, remember that bad code is always the first step to good code. Never let any experienced programmer tell you otherwise.