5 Things to Consider Before Learning to Code

9319854408_f6833477b3_b

Teaching yourself to code is basically the new black, but don’t jump into the project before considering these basic questions. 

By Jennifer McFadenn (Contributing Writer, Women 2.0)

You can’t go to a cocktail party or tech event in any major city right now without bumping into someone who is trying to, or thinking about trying to, learn how to code. Learning to code is basically the new black. However, before you spend all of your spare moments trying to figure out the difference between a markup language and a programming language, or a string and a variable, it is worth coming up with a plan of action.

I recently decided that I was going to take my tech skills to the next level. I have spent the past few years on the business side of the tech industry and am interested in taking on a more technical role. I have a part-time consulting contract that gives me the time and flexibility to construct a fairly rigorous program of study over the next six months. I have an idea for a web application that I’ve spent some of my spare time scoping out and I plan to use this project as the capstone for a course of study that will enable me to build up my front end development skills, while also spending some time learning basic Ruby and Ruby on Rails. I’m creating a formal course of study, which I’ll share in a future post. In the meantime, I thought that I’d share some thoughts on how you can get started down the path to learning to code.

Take the Time to Figure Out Why

Before you begin, take the time to figure out why you actually want to learn to code. Are you facing a wall at work and need to acquire new skills to move up the ladder? Do you hate your job and want to switch to a new industry? Do you want to build a viable, scalable web application that you hope to turn into a business? Or, do you simply want to know enough about the process, logic and capabilities of Ruby (or any other programming language, for that matter) to be able to work better with your technical team or the developer that you found on Craigslist? Are you willing to put in the time and mental energy to learn a new skill or are you just looking for an escape from your current job or for something to talk about at cocktail parties? Be honest with yourself. The approach that you take in creating a game plan is going to be dependent upon your overall goals.

Find a Project

This is a corollary to point #1. The easiest way to start and stick to a study program is to have a project that you are madly, passionately, totally in love with and that you simply have to launch. If there is a problem that is keeping you up at night, nagging at your conscience during your afternoon meetings, and distracting you when you’re supposed to be sitting and enjoying a lovely dinner with friends, that’s usually a good place to start.

If not, find something that you think would be fun and useful. And, stick with it. When you’re creating your curriculum, you need to have a clear sense of what you are hoping to build. Once you start moving down the path toward learning a new skill, it is important to understand how close you are to achieving your end goal. And, equally important, when you’ve achieved this goal and need to move onto something else.

Prioritize Your Time

Part of prioritizing your time is figuring out what you know already and what you need to know to make sure that the project gets completed. In my case, I have a very specific project that I want to work on. I have taken the time to consider the basic product requirements for the initial launch and have thought a lot about how to maximize my time and contribution to the product. It is a sports application with social elements, so the overall success of the project is going to be more dependent on the design, branding and user experience, than on the back end—at least at launch. In other words, we’re not developing any new technology that would require me to know how to create a highly complex, scalable back-end built using technology that doesn’t even exist today.

My goal is to become an amazing front-end developer. I want to be in charge of the front of the house—the HTML/CSS, Javascript, jQuery, and overall design. With a background in business and a love of great design, my strengths are strategy, user experience, and branding. This means that I am going to focus a significant portion of my studies on front-end development and design. However, I don’t intend to ignore the back-end altogether. My goal is to know enough about the back end so that I can hack up a quick prototype and have a better understanding of the underlying technologies—in this case, Ruby, Rails, and MySQL—to be a better product manager. By having at least a basic grasp of these concepts, I hope to be able to understand what these technologies can do and how long it should take an outside developer to execute. I want to be able to understand the language enough to be able to ask the right questions.

Do a Skills Assessment

I have already built several one-page websites and spent some time customizing WordPress, so I have some experience with HTML/CSS, have dabbled in Javascript, and have played around with some jQuery. I know basic HTML5 and CSS3, but not enough to feel 100% confident. Since these are critical skills for any front-end web developer, I plan to start with HTML5 and CSS3, and then take a deep dive into Javascript and jQuery (which is simply a Javascript library that helps speed up development). Once I’ve tackled these, which I expect will take about eight weeks of intensive study, I will move onto Ruby and Ruby on Rails. There are many people who suggest that you skip Ruby and just learn Rails first so that you can hack something together. I thought of this and talked to a few friends who were developers and decided that it was important to take the time to actually learn a little bit of Ruby before jumping into Rails. I’m not saying it is the only way to go, it’s just the way that I’m going.

Select your Tools

I used Lynda when first dabbling in HTML/CSS, than moved onto Treehouse and Skillcrush*. There are benefits to each of these and I recommend them all. If you can afford it, sign up for as many coding tutorials as you can and see which suits you best. Each has it’s own personality and you will want to be sure that you’re using tools that fit with your learning style. If you live in a city, look for offline classes that might be offered either via the tech community or at a local college. Organizations like GirlDevelopIt and GeneralAssembly offer many in-person introductory courses. There are also more intensive programs such as Flatiron School, Hacker School, The Starter League, and Hackbright Academy, which provide residency-based programs spanning anywhere from three to nine months. These programs usually offer placement opportunities to some or all of their graduates and can be a good option for career-switchers.

The best book that I found for learning HTML/CSS is Jon Duckett’s guide. He is also coming out with a Javascript guide at the end of October that I’m looking forward to buying. There are a ton of great online resources, including on the W3 Schools site. Skillcrush has a library of easy-to-digest tech terms that can help you get up to speed as you first start. And Codecademy has free, interactive tutorials that you can use to practice your skills. The most important thing for you to do is to just start.

As for Javascript and jQuery, I’m starting out with Treehouse. I also bought the QuickStart Guide to Javascript, which comes highly recommended by my Javascript friends. I will likely do some additional practice on Codecademy. I think that it is a good idea to create a balanced curriculum that incorporates design thinking, as well as development skills, so I’ll be integrating the Hack Design lessons into my plan. I am also working through many of the suggestions made by Karen X. Cheng in her great post about how to become a web designer.

As for Ruby, I’ve started reading “Why’s Poignant Guide” in a very superficial way, digesting it in the same way that a might a novel before bed. I am not going to jump into Ruby and Rails until I’ve made it through responsive design, HTML5, CSS3 and Javascript, but I think that it is worth spending the time to begin to become familiar with the structure and vocabulary of Ruby, and Why’s Guide is a really fun way to do this.

Advice for True Beginners

So what should you do if you’ve never even peeked at the source code behind your favorite website or drafted a stylesheet? Begin with HTML and CSS, which are the building blocks of the web. They are relatively easy to learn and there are a number of free or cheap resources online to help you get started. The only tools that you need to write and render HTML and CSS are the Notepad or TextEdit apps on your computer and a browser. More importantly, you will get some serious instant gratification from seeing a page that you just built rendered on the screen. It’s a little bit like getting past your first five mile run when you’re training for a marathon—it will give you the confidence to move forward because you can see the results of your hard work!

From there, find a path and stick to it. Scope out your idea, including all of the relevant functionality. Then talk to developer friends to see which languages are most relevant to your particular interests and needs. Find a friend who is willing to jump in with you and schedule a time each week to get together and review your code—heck, you could even add some wine and turn it into the next generation book club! Most importantly, just get started!

*Disclosure: I’m one of the co-founders of Skillcrush, which teaches technical skills to women. I’ve tried to be as balanced as possible when discussing tools and to provide you with the same advice that I would give a friend. Clearly, I think that Skillcrush is a great product. But there are also other amazing products out there that I’ve used to learn along the way. The best thing to do is to try a number of products and then decide which is best for you.

Have you taught yourself to code? What tips would you pass along?

jenJennifer (@jen_mcfadden) is founder of HappyMade*, a strategy and innovation consultancy. She is also a co-founder and advisor at Skillcrush. She served as an adjunct professor at the Tow-Knight Center for Entrepreneurial Journalism and is currently working on building FlipFly, an online community to connect people around sports.

Photo credit: Alaina Percival via Flickr