The career of a web developer is an interesting one with many slopes. Considering a learning curve this steep, you can fully expect to live through periods of frustration, enlightenment, self-righteousness, and every mindset in between. In this article, we'll have some fun, by reviewing each of these phases through the lens of a meme!

Phase 1 - Noob

We all have warm feelings for the early days of our careers; the period when you have absolutely no clue what you're doing. Like a fish out of water, each new line of code is a mystery. Doctype? Huh? What the heck does a <div> do? The first phase is an intimidating, scary, but exciting one. How many dang languages are there?

Perhaps your greatest advantage, though, is that you have no idea how deep the rabbit hole goes. Learning HTML is the baby step.

Phase 2 -The First Steps

Though it takes a while, you'll eventually learn enough to begin taking your first steps into the coding world. While Phase 1 is the overwhelming "how/where do I start" period, Phase 2 is the one in which you slowly begin building your skill-set. Sure, the syntax for defining styles with CSS still feels foreign, but at least you're able to make a change in your freshly bought code editor and see it reflected in a web browser. That's a wonderful feeling!

Phase 3 - Complete Frustration

Imagine being lost in a cave, shining your flashlight down each tunnel, as you search for a way out. With each step, you hope to see a glimmer of light. Unfortunately, the learning curve in our industry is a steep one. That speckle of light won't come for a long time, I'm sorry to say. Expect to spend hundreds of hours in this phase, reading technical books over, and over, and over, as you desperately try to make sense of the madness!

If the frustration becomes too overwhelming, find peace in the fact that every one of us felt that exact way at one point or another in our careers. You're not alone. Stick with it, and, before long, you'll reach the aha phase!

Phase 4 - The Aha Moments

An "aha" moment is one of the greatest feelings in the world: that brief instance when, suddenly, you "get it." "Ohhhhh, now I see!" Personally, I've found that these coding break-throughs occur late at night, when the rest of the world is sleeping. After the eighth read, what was once blurry is now, at least somewhat, clear!

This is the phase when all of the technologies and languages you've been learning begin to click.

Phase 5 - Fragile Code

Like it predecessors, the Fragile phase is a lengthy one. At this point, you are successfully building applications and achieving your desired end result, but the underlying code is one client feature-request away from popping. In this phase, your methods are dozens of lines long, and the concept of testing hasn't yet entered your brain.

But at least you're building things! For now, though, keep your GitHub pull requests limited to documentation and typos fixes. Don't underestimate how helpful that can be!

Phase 6 - Copycat

The copycat phase is an important one. There's no better way to learn proper coding techniques than to spy on the code that your heroes write - even to the point of reproducing their code line by line. Don't feel badly; every artistic career has its copycat phase! Luckily, GitHub has made this form of silent envy easier than ever before. Of course, copying will only get you so far, but it's an excellent start! Mimic the people who inspire you, and, eventually, you'll begin to develop your own style.

Phase 7 - Cocky

At this point, you're finally beginning to get into a groove. There's certainly vast room for improvement, but your confidence is quickly rising - perhaps too quickly! They say that, in the first few years, you still don't know enough to realize just how little you know!

Resist the urge to become too cocky at this stage. It benefits no one, and will only make your future, far more talented, self look back and shake his head. When you feel the need to leave a sarcastic "learn how to code, dude" comment in a GitHub, Reddit, or StackOverflow thread, don't. It wasn't too long ago that you, yourself, were a complete noob. Pay it forward; don't knock people down. We're all in this together - just at different phases.

Phase 8 - Learning Vim

If you've ever looked over a fellow developer's shoulder, and found yourself amazed by the speed at which they maneuver in their code editor, then, chances are, they were using Vim. Though it comes with a massive learning curve, once you've reached the top, your workflow, too, will look like magic to onlookers!

This is the phase when you begin harnessing, not only your coding techniques, but your workflow as well. Proper tooling is equally as important as technique.

Phase 9 - When Code Becomes Art

Though it takes thousands of hours, one day, you will look at your code and the ease with which you breeze through the command line, and realize that it's nothing short of art. Your code is under version-control, well-abstracted, perfectly testable, scalable, and easy to read. At one point in your career, you might have prided yourself on your ability to write cryptic, confusing, but functional code. Leveraging every possible language quirk or hidden feature is not a sign of a mature developer. Neither is reducing complex logic down to a single line, all for the purpose of patting yourself on the pack for being so clever. It instead signals a cocky developer who doesn't think about the future maintainer of his code.

Code becomes art when its readability is easily as important to you as the action it performs. In this phase, you code for human beings; not machines.

Phase 10 - Seasoned

When code becomes instinct, you've reached the next phase of your career. No longer do you think in terms of language or framework. Instead, you simply see problems, and choose the correct tool from your coding tool chest to provide the solution. A seasoned developer understands why the cowboy path is rarely the correct route. Each new feature is discussed with all members of the project, whiteboards are prepared, stories are written, and tests are generated...all before writing a single line of production code.

You've become a mature, thoughtful developer who others want to work with. Congratulations.

Phase 11 - Rock Star

Few make it this level. The rockstar phase is the tip of the mountain. In addition to your day job, you regularly speak at conferences, serve as the lead behind countless popular open source projects, yet still find time to participate and contribute to the future of the web through mailing lists, while simultaneously assisting newcomers on IRC. You're the type of person who writes compilers and parsers for fun.

You're what others refer to as rock star or ninja, despite the fact that you hate such labels. You know better than anyone how much more there is to learn!