WEB Advent 2012 / Landing on Your Feet

I recently served as an instructor for an online course teaching the fundamentals of the Web. Before class started, we polled the students in order to learn, among other things, what kinds of skills they hoped to learn by the end of class. More than one student responded with “confidence.” I found this to be incredibly charming, but it gave me pause: teaching tech skills I could do, but confidence? It’s not easy to convince someone to have faith in their abilities when they are just beginning.

A tan cat giving a small orange dog a mean left hook.
The definition of confidence.

But as I thought about it more, I realized how important confidence is for new and veteran developers, alike. The following are the values and practices that I use to keep up my confidence. I hope that they can be encouraging to anyone just starting out, or considering starting a journey into the Web, as well as good reminders for those up to their elbows in code.

You will never know everything about everything

The world of the Web is huge, and it’s changing all the time. If you start out wanting to learn it all right away, you will feel overwhelmed pretty quickly.

I wrote my first “Hello, world!” in early 2009. When I was first learning the fundamentals and came across something new, I immediately wanted to know everything there was to know about it, and would get frustrated that I didn’t. Allowing myself access to this kind of impatience and frustration hindered my ability to think clearly and logically, and made it hard to let things sink in.

Even though it’s been almost four years since the beginning, I still consider myself relatively new to development. I’ve learned a lot of things along the way, and it’s fun to look back even just a year or two and realize what I didn’t know. Yet, I still experience many of the frustrations that come along with being a new developer.

One of the things I’ve learned is that there is a huge difference between learning how to write code and learning how to implement code. When it comes to implementing code, there is so much to learn, from security to debugging to caching and optimization, and they all involve understanding how to architect your code and applications. They go way past the fundamentals, and even now I feel like I’m only just beginning to really feel confident in these areas.

Secondly, I’m still getting the hang of how to pace myself as I learn. It’s easy to fall into my old way of thinking and to expect myself to know everything right away. The best approach is not to take on too many challenging things at once, but also not to shy away from things that are just out of reach. It takes a lot of dedication, time and practice to become fluent in all of the different areas of the Web. Don’t expect to gain all this knowledge in the first few years.

Stay out of your comfort zone, and learn to love the pain

Don’t overwhelm yourself, but it’s critical to also stay out of your comfort zone. It’s really easy to keep doing what you know, because it makes you feel great about your ability. While I agree that this is a good confidence-building approach, it prevents you from learning new things. “Stay out of your comfort zone” implies being in a state of discomfort, and sometimes it’s true! This pain is a path toward gaining new knowledge and confidence.

Practice, practice, practice

The best way to get better at writing code is to write it — lots of it! Find examples online, ask your colleagues if they need help with their projects, even try to recreate your favorite web sites. Take a look at some of your old code, because you’ll most likely see errors and will be able to refactor it based on new knowledge. Practice is progress, and every bit of progress counts.

Some days are good, and some days are bad

Every developer has a story about an embarrassingly awful and impactful error they’ve made.

Mine was a few years ago, when I was rushing to implement a new feature, and I forgot a really important bit of code to check whether or not a save was successful, which essentially broke validation. Oopsies.

An orange kitten with his paw over his forehead.
Me, after I realized what I had done.

Luckily, my teammates and I noticed right away, and it only created 80 botched records. But it could have been much, much worse. The it-was-me pill was a hard one to swallow — I had to admit to 80 users, never mind my managers, that I had made a mistake. The only thing I could do was own up to it, fix it, and move on. As a developer at any skill level, you are going to make mistakes, and sometimes you might make really bad ones. This is OK.

It’s easy to remember the bad days and easy to forget the good ones. When you feel a sense of accomplishment, take a moment to pat yourself on the back. You’ve earned it. These feelings are the ones that will keep you going when you make those mistakes.

Know when to ask for help

My mentor used to tell me to “stop staring at the code waiting for Jesus.” If I ran across a problem I couldn’t figure out, I would stare at the code, thinking that if I were a developer worth my salt, I’d be able to discover the solution. It took me a long time to accept that sometimes I needed help, and that admitting that was not admitting defeat, but instead was the smartest, most efficient way to solve the problem.

When it finally was time to ask for help, I always felt a bit embarrassed to show people my code. What if I’d made a silly mistake? What if I’m doing it all wrong? I had a hard time accepting the fact that I was new, and other people were not. This self-consciousness inhibits progress. Time spent worrying about someone judging you or your code leads to missed opportunities to learn.

Teach other people

You don’t need to be an expert on the Web to teach someone else about it. Teaching someone what you know, no matter how little it is, will reinforce those skills in your own mind. Your student, mentee, whoever it may be, will most likely ask you lots of questions, and you’ll learn new things in the process of answering them.

A white cat with glasses and a bowtie, standing at a desk with lab equipment.
Science cat wants to teach you things.

Heather Payne of Ladies Learning Code says that sharing your knowledge, “means a lot to the people you help.” I can say this is true in my own experience as a new developer and as an instructor. The inspiration that comes from teaching goes both ways. Students feel confident and excited, and teachers feel great about helping others to feel that excitement. This pay-it-forward approach is also one of the main reasons why the tech industry is so healthy and strong. If you learned through mentors, user groups, and friends who spent the time to teach you, you should give back!

At the end of the day…

Remember that learning how to be a web developer, above all else, should be fun. Don’t do it for the money, don’t do it so you can impress people with your mad programming skills, and don’t do it because you can’t think of anything else to do. Do it because you love it and it makes you happy. I love being a web developer because I know that the possibilities are endless. I can make any web site, application, or game I want, and there are countless ways to create them. Who wouldn’t love that?

Other posts