Becoming great at what you do should be what we all strive for. Especially if we enjoy what we do for a living. There is no "how-to" manual for how to grow into a profession though. As someone having ZERO programming knowledge 4 years ago, I can tell you that getting up to speed in the web developer world can be challenging, but also a lot of fun if you have the right mindset.
These are a few of my thoughts and opinions on my journey over the past few years. Throughout the article I'll link to resources I believe are important. Feel free to agree/disagree/yell at me in the comments. :)
A little about my journey
After years of floundering with the question of what I wanted to be when I grew up, I eventually had to make a "final decision" and do something. I wasn't getting any younger, so at the ripe old age of 26, I made the decision to go back to school for computer science. I ended up minoring in computer science and majoring in information science, but I digress.
Being in class with so many talented young people made me feel "behind" in some regards since they were 18-20 and I was 26. I used this feeling to light a fire under my butt to work hard. Now at the age of 29, I'm gainfully employed and have had multiple job offers. If you told the 25 year old me that just 4 years of hard work would result in a job where I don't have to wear a name tag, I don't think I would believe him.
But believe me; talented, competent developers who can explain themselves and get along in groups are in high demand.
Formal education is a good start, but you need to actually do something
Going to school and getting a degree is step one, but its not the only step, and you could even argue it's not even necessary. You have to do things outside of school. I did freelance web development for really cheap. I built up a name for myself in my community, gained incredibly valuable experience, and earned some extra money on the side. If you don't want to do that, you can make a Github account and try contributing to someone else's repository. If you don't want to do that, make an Android app. There's tons of stuff you can do so when you're ready to get a job you can point to your resume and say, "Look, I already have done some things."
This is extremely important because as much as you learn in school, the real test is whether you can apply the knowledge. You can follow a lecture at school and understand it, but the minute you sit down in front of a blank text editor and try to create something from nothing, it'll really test if you know your stuff. You might be able to wax intellectual all day about computer science terminology, but employers want to know if you can actually do something.
There are certain growing pains that come from this time and employers know that. There's a thousand little road blocks on the way to becoming a good developer. Learning shell commands, learning git, configuring frameworks, learning JavaScript, learning PHP, learning LESS/SASS, determining the right tool for the job, and much more. If you took the initiative and tried getting some of those growing pains out of the way before entering the job market, the more employable you become and the more you grow as a result.
Have a desire to always better yourself
I had a job interview with a guy 2 years ago who asked what I used to develop websites. When I told him WordPress, he laughed at me and told me Joomla was the greatest CMS ever. He said it powers most of the web and is by far the most popular CMS.
I have absolutely nothing against Joomla, I'm sure its a fine CMS, but this guy flat out had no clue what he was talking about. He became stuck in a time where Joomla was king and didn't care to look at facts after that. As he told me this, WordPress was estimated to power 20% of websites.
The fact is, he became stagnant and was no longer concerned with learning new things. On top of that, he was arrogant enough to think that what he used was the only solution.
Be open about what the "best" way to do something is
This mentality is very important if you aspire to be a (good) developer. The web changes fast and you have to be willing to go with the flow and stay up to date.
I thought I had a pretty good workflow down for my projects. Then I started to hear some stuff about node.js and grunt, the javascript task runner. I looked into it and I can't imagine a workflow without these tools now! Keep reading for a video about using these kinds of tools.
Google search is your best friend
Unless of course you have a real, knowledgable friend that you can ask, Google will be your personal tutor in learning how to be a better developer. Any problem that you have, learn to Google it. If you can't find the answer, refine your search and Google it again. Rinse and repeat until you have the answer. If that doesn't work, ask StackOverflow. If that doesn't work, get into an IRC channel and ask someone.
Do you see where this is going? The web has so much information, 99.999% of the time, the answer IS out there, you just haven't looked in the right place. Becoming a competent problem solver will take you a long way. And the web is amazing at helping you solve problems if you know how to use it.
Get involved & stay connected
When I decided to go back to college 3 years ago to study information & computer science, I was entering as a transfer student. When I went to transfer orientation they gave a statistic that 67% of transfer students won't end up graduating with a 4 year degree.
The reason? Lack of engagement. They don't talk to other students, they don't ask for help from professors, and they eventually stop coming to classes. This really stuck with me because I didn't want to be part of that statistic. I talked to other people, I sought help when I needed it, and I ended up doing very well in school and making a lot of good connections.
If you want to be a good developer, the same thing applies. Follow established developers on Twitter, make a Github account, fork repos, write blog posts, do something to engage yourself with the community. I've learned so much just from following some WordPress developers on twitter. The IRC server Freenode has a ton of channels for topics like wordpress, jquery, nodejs, and basically any other technology you can think of. Get out there and get involved. There are lots of people out there in cyber space that can help.
Myth of the genius programmer
I wish I knew about this video before I went back to school. Programming is difficult, you will make mistakes, just learn from them and move on. Everyone else that programs is in the same boat. This video went a long way in hammering that home for me.
Get rabid about your tools
You wouldn't expect a carpenter to come into your house to fix something and use crappy tools. By this same logic, web developers should choose the best tools that get the job done. This Paul Irish video really helped push me in the right direction as far as web development workflow.
There is no magic moment
4 years ago I didn't know how to program at all. There isn't a magic moment where you think, "Ok, now I am officially a web developer." It's a constant state of learning, growing, and getting pissed because something isn't working right. If you push through and persevere, eventually you realize how far you've come. It takes discipline to stick with this stuff, but the reward of building awesome things and solving problems far outweighs the growing pains. I can't wait to see where I'm at 5 years from now.
So there you have it - there's my thoughts on the subject. If you're still here and hungry to be a better developer, here's a short list of additional reading:
- Learning Git
- CSS specificity rules HIGHLY recommend if you use !important a lot in your CSS
- JavaScript Task Runners (Grunt) More about Grunt by Chris Coyier
- A Baseline for Front-End Developers
- Am I Really A Developer Or Just A Good Googler