How to grow as a web developer

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:

Writing a simple seconds countdown timer with vanilla JavaScript

It’s the final countdown:

10

For this script, all you need to do is surround the number you want to start counting down with:

<div id="countdown">10</div>

Then use the following JavaScript:

<script type="text/javascript">
  var seconds;
  var temp;

  function countdown() {
    seconds = document.getElementById('countdown').innerHTML;
    seconds = parseInt(seconds, 10);

    if (seconds == 1) {
      temp = document.getElementById('countdown');
      temp.innerHTML = "all done, bye bye";
      return;
    }

    seconds--;
    temp = document.getElementById('countdown');
    temp.innerHTML = seconds;
    timeoutMyOswego = setTimeout(countdown, 1000);
  } 

  countdown();
</script>

Goals for 2014

Better late than never. I have some goals for 2014.

Restructure Blog: Write More Content, Refine Old Content

I write about a lot of things here. I post personal stuff, I post photos, and I post code tutorials. I need to restructure this in a way that makes a little more sense and put my Information Science degree to work. 🙂

Looking back on my content is … a little cringe-worthy right now for me. I want to focus my content a little more on this blog and really start pumping out some good stuff. I’ve learned a lot in the past year and have only written a few articles about what I’ve learned. There are even some articles that are in severe need of an update because I’ve learned a lot more since originally publishing. I already have a decent list of post topics in a Google doc, I just need to write them.

Author a jQuery plugin

The second most popular post on my blog is a post where I (primitively) explain how to position a footer at the bottom of the screen using jQuery. I get a lot of traffic from that one post and I actually feel bad about it because I already know of a better way to handle that problem. Thus, in 2014 there will be a jQuery sticky footer plugin that is completely customizable.

Author a free WordPress theme

WordPress is almost an extension of me at this point. I spend a lot of time within WordPress in and out of work. It’s my web solution of choice for just about everything. For my theme, it’s going to be a starter theme, meant for hacking. It is going to be based on Underscores but with Bootstrap pre-baked into it. I’d like to add grunt support for those who use grunt for WordPress theme development.

Write an(other) Android app

I’ve written an Android app once before, but I’d like to stay current and write another one. I have a few ideas that will help me stay healthy, maybe someone else will get some use of it too.

Keeping up with the Joneses? Nah, go with what works for you

I just read a nicely thought out post by Addy Osmani about front end development paralysis. A major point of the article is that there’s just so many solutions and frameworks out there, how can we ever decide which one we’ll use? He writes:

Instead of being happy with our decisions, we’re filled with anxiety. Did I pick the wrong one? Would I have been better off with something else? What would my friends have used? Should I ask them? I don’t want to seem stupid. We’re stuck in a rut pondering whether we’ve missed an opportunity for something better. How many times have you second-guessed your technology stack?

Addy Osmani

This quote touches on an interesting point. One that I have noticed in my short time of being a front-end developer. There’s so many articles out there by talented developers claiming that they have found an extremely efficient way to handle their technology stack, it makes me feel like no matter what I pick, I could potentially find out I’m doing it wrong.

I catch myself getting caught up in this vortex of efficiency doubt. Instead, ask yourself, “Does my technology stack work for me?”

Are there any pain points in your development process? If there are none or a minimal amount, then what you’re doing is fine. If you sometimes hate developing because of all the menial tasks you’re doing, maybe it’s time to read some of those articles by talented developers to get into a new workflow.