Love it, but y’know…mess.
Interpret the intention of the list however you wish. I softly advocate you follow it, I think it’s a good, thorough, natural progression of steps to follow, however, and most importantly; I think you should identify yourself on this list, look what you’ve achieved and then look what’s coming next, if only to gain some perspective.
Without further ado, the list:
Everyone who’s used a computer* can copypaste. Sites like Dynamic Drive were made for this stage. Absolute minimal thought needed, just a goal. The code almost looks foreign to you, but you’re more interested in the result, and less about the implementation.
* not actually proven
Copypaste hack hack
You’re still copypasting, and you’re still seeing the immediate gratification of the code, but your developer curiosity kicks in and you start to change a few values in this algebraic expression. Things change. Things break. Some things work. The code is starting to feel less alien to you and you’re not only tied to other people’s code, but you’re Googling and peeking at Stack Overflow and seeing how you might create your own scenarios and results by bending this piece of code to your will.
jQuery ft. jQuery plugins
$('.myButtons').magic();. This is a very comforting stage to be at. With the popularity of jQuery and it’s plugin ecosystem, you can get by by learning how to Google “thing I want to achieve” and appending “jquery” to your search.
Hi, I <3 $(document).ready()
.animate() calls, maybe even form validation. All these terms are becoming second nature to you. You’re confident performing most tasks thrown at you, but your code is very unstructured and all shoved in one
Maybe even two calls*
* I have done this.
You’re very used to scrolling down a very long
script.js file in search of that one form submit handler you added…somewhere…sometimes…oh who knows…
Making your own jQuery plugins
Again, this stage is only made possible by jQuery and it’s flexible nature and extensibility. And I would also say that this stage is the first stage where you’re taking a little more control over your code and how it functions. However, you are still in #plugin4lyfe mode and wrapping (fairly) messy code in
validate objects with a few methods and maybe even some state! DRY is etched into your mind when you close your eyes and you’re starting to create abstractions in your code and refactor more intelligently. The idea of using a jQuery plugin makes you feel a little queasy.
Code organisation, again, being top of your list to nail. You’re also thinking more about state, how different events and interactions from the user and your code may be affecting other parts of your code. This is where your biggest challenge is managing the relationship and intercommunication between the different components & modules of your code. Terms you’re familiar with: asynchronous operations, callbacks, modules, splitting code into different files, race conditions, Promises, event delegation, etc…
script.js file with a
“If you’re incompetent, you can’t know you’re incompetent. […] the skills you need to produce a right answer are exactly the skills you need to recognize what a right answer is.” - David Dunning.
The more you climb up this ladder, the more you realise how much more there is to learn, different approaches to consider, more risk. However, you will only climb this ladder if you have a genuine need to.
Anyway, I hope this has helped somewhat and provided a small amount of insight into where you might feature on the ladder and what lies ahead…