I’m sure that most of these lessons are old news to a veteran software developer, but as someone who is now graduating from self-described beginner to self-described intermediate, these lessons seem worth sharing with other beginners:
Everyone is always talking about iterating for a reason
Start small and iterate. When I started building JuxtaposeJS (at the time, it was just “Before/After Slider Maker”) I had grand visions of how the authoring tool would look and all the bells and whistles it would include. But a front-end interface is not much use when you haven’t written any of the code for the sliders themselves.
I started first by displaying a red square and a blue square, then by changing the solid colors to be images. Over time I added features, fixed bugs, and moved on to the next problem.
For all I’ve heard about the power of iteration, I needed to experience it for myself to understand why the process works so well. If you are curious, you can see all of the changes that were made in Juxtapose’s development on its GitHub commit log (and while you are at it, fork Juxtapose and make it even more awesome).
Version control takes away the worry
Version control lets you break everything and not have to worry about putting the pieces back together. Whether it’s seeing how a radical design change looks or rewriting a large chunk of code in an ultimately futile attempt to fix a bug, using GitHub and making regular commits gives you so much flexibility in writing your code. In retrospect, I wish I had experimented more and taken advantage of Git’s ability to create project forks to try new things.
C'mon, you can do it
Challenge yourself. At one point early on, JuxtaposeJS was dependent on jQuery and it was working. I was really excited about this and when I showed it to Joe (Knight Lab’s Chief Nerd), he said “Great. Now see if you can make it work without using jQuery.”
Challenging yourself and trying things you aren’t comfortable with is the only way to learn new skills.
A lot of this advice may sound familiar — I’d heard it many times before. It’s not new and it’s not that original. But the only way I could learn them, was to build a part of JuxtaposeJS, fail, and keep going. Which is the most important lesson, I guess. Build things. Build things. Build things. Build smaller things, then medium sized things, then bigger things. Because the only way these ideas ever start to actually mean something is by building things yourself.