So, you think you want to be a web developer?
About once a week, I get an email, chat, tweet, or other electronic communication asking me about some aspect of my job or how I made the transition from a non-technical career. The majority of the time, it’s because that person is considering applying to (or has already been accepted to) an intensive bootcamp-style web developer training program. This is what I say to those people.
Most importantly, above anything I can tell you about becoming a web developer: there are no short cuts. Going to an intensive bootcamp-style program already is a shortcut.
Who are you? And why should I listen? #
What makes me qualified to be someone that you talk to about this? Nothing official, and not much, really. At the end of 2012, after spending countless hours playing with Ruby and building CLI toys, I came to the decision that I did want to be a web developer. How? I loved it.
In April 2013, I quit a decent paying dead-end job to prepare for Dev Bootcamp. I started in May, “graduated” in July, and started my first job as an engineer in August. I speak about various topics in engineering, and I teach introductory classes in HTML/CSS and programming.
I don’t know you, and you don’t know me. But I love what I do, and I think I’m pretty good at it (all things considered). I recognize the gaps in my education and am actively working to fill them. So, no, I’m not the be-all, end-all expert on the subject. But if you’re here, you’re interested in my opinion for whatever reason. Know that everything listed here is something that I thought about before applying to Dev Bootcamp. Every person is different.
In the words of Ms. Eleanor Roosevelt:
“Do what you feel in your heart to be right — for you’ll be criticized anyway. You’ll be damned if you do, and damned if you don’t.”
Why do you want to do this? #
You should have an answer to this question even if you’re not sure you want to make the transition. Maybe the question you answer is “why are you interested in doing this?”
I’ve split my advice and opinions into two categories:
- Beginners
- Dabblers
Dabblers #
I considered myself a dabbler: I had built and maintained websites since my early teens. I wasn’t up-to-date on the latest HTML5 and CSS3 specifications, but I knew enough to get by.
If you have dabbled in HTML, CSS, JavaScript, and/or Ruby (or other language), and you really liked it, the hard part is not over. You have to decide if you want to transition careers, and how you want to do it.
Here are some things that I think you should do before considering an intensive bootcamp-style program:
- Go through the list of suggested projects for ultimate beginners. It’s never a bad idea to double check that you really do want to make a huge change in your life and career.
- No matter how much you love it, an intensive bootcamp-style program will not be easy. You’re cramming a bunch of stuff into your brain in a very short amount of time in a way that is suited to a specific learning style. The learning style might not work well for you, or it might be harder than you thought.
Beginners #
When I think of “beginners”, I think of people who have never:
- built or maintained a website
- worked with a database
- used a programming language
- written a single line of HTML or CSS (or cannot write it)
If you have dabbled but don’t know enough to build or maintain a website, you probably consider yourself a beginner. If that’s the case, then the following applies to you.
Forgive me for the horrible generalization, but this means your answer to this question of “why?” is likely one (or a combination) of the following:
- It seems like a really growing field and there’s a high demand for jobs.
- I don’t love what I’m doing now, so I may as well do something that pays better until I figure out what I really want to do.
- I have a lot of ideas about stuff I want to build.
- It seems cool, I’m curious to learn more.
- Everyone I’ve met that does this really likes their job.
- Someone told me that I’d be good at it.
- I think I’d be good at it.
None of these are bad reasons. It’s kind of like being a freshman in college and being asked to declare your major: how are you supposed to know at 18 years old what you want to do as a career for the next 40 years of your life? You can’t really answer that question without some experience. That’s probably how you got to the predicament you’re in right now: you made a decision in the past that didn’t pan out how you hoped, and you’re unhappy with your career for whatever reason.
My advice #
Before you quit your job or write a very big check:
Build a website #
Learn HTML5 and CSS3 right off the bat. They’re not that difficult to learn, although CSS can be a bit fiddly. Definitely try and use some JavaScript or jQuery if you’re feeling brave.
Did you like it? Was it frustrating? Did you enjoy the frustrating parts? Did you celebrate your victories? The answer to all of these questions should be yes.
Although, full disclosure: many engineers and developers abhor CSS.
Below are some resources to learn HTML, CSS, JavaScript and jQuery. This is by no means an exhaustive list, nor should it be considered an endorsement (or snub).
In-person classes
- Searching Meetup.com for groups in your area that focus on the topics you’re interested in learning is a great way to start.
- Girl Develop It. I’m a bit biased here since I’m a chapter co-leader in Chicago, but our classes are very affordable and geared for beginners.
Online options
Free options:
- Codecademy: HTML and CSS, JavaScript and jQuery, Ruby, APIs, Python
- Dash by General Assembly - HTML, CSS, JavaScript, jQuery
- Try jQuery by Code School
Paid options:
Some additional resources can be found here.
Write some Ruby #
I’m assuming Ruby is the language you’ve decided to learn. If it’s Python, or some other language, this advice still applies–just swap the language.
You can tinker with a little bit of Ruby in your browser using Try Ruby.
A word of warning (this is Ruby-specific): setting up your computer to do Ruby development can sometimes be a pain in the butt. If you’re just starting out, you can use Nitrous.io to get a Ruby box running (that’s my referral link - you’ll get extra box space for using it!). Nitrous.io also works for Python and Node.js.
The first real Ruby I ever wrote was:
puts 'Hello, my name is Liz.'
puts ''
puts 'I am writing lots of basic code while I learn.'
puts 'This is all from Learn How to Program by Chris Pine.'
puts ''
puts 'knit ' * 4
puts 'Extrapolating... can I use arithmetic? Probably. It is smart.'
puts 'I ' + 'really ' * 3 + 'love wine.'
puts 'Damn spaces.'
puts 'Ok, let\'s make an apostrophe!'
puts 'back\\slash'
puts 'Now with more backslash \\'
puts 'Now we\'re using proper punctuation. Whee!'
All that did was print out stuff in terminal. Woo! I’m not talking anything fancy here.
Some suggestions for scripts to write:
- A calculator with simple multiply, add, subtract functionality.
- Word play with the Ruby String library (get used to reading docs, you’ll be doing this a lot).
I highly recommend reading the book Learn to Program by Chris Pine. I read the entire thing and did every single code challenge.
Ask yourself the same questions you did after you finished your HTML/CSS/JavaScript/jQuery adventure. Are the answers still yes?
If they are, keep working on it. If you love it, think about what your life would be like if you did that all day, every day.
Shortcuts #
If something on this list sounds terrible to you and you don’t want to do it (or any of the alternative options presented), then you’re cheating yourself and you probably won’t be very good at it. You will waste your time and be in the same situation you were in before you started your journey. The things that I list above are what I consider to be essential things I need for my job on a daily basis.
If you think skipping over a few things to determine if you’ll enjoy and be good at your potential new career is a good idea, then, honestly, you’re being pretty stupid.
If your primary motivation is getting a job, then remember this: companies need engineers, but they’re not so desperate that they’re going to hire a half-ass hack who isn’t passionate about or even good at what they do. This field is full of people who love programming, and it will be very obvious very quickly if don’t feel the same.
Preparing for your program #
There are some things I recommend that everyone, regardless of their skill level, do before they start their bootcamp program. Most (if not all) bootcamp programs provide students with preparatory materials: these suggestions are intended to supplement that material, not replace it.
Absolutely upon a pain of death, you must:
- Learn the Command Line the Hard Way
- Become a Git guru: Try GitHub, The Simple Guide to Git, and Learn Git branching
If you’re interested in front end
- Try out Sass and CoffeeScript
Become familiar with Ruby - or your language of choice
For Rubyists, I recommend Learn to Program by Chris Pine.
Codecademy, Code School, and Team Treehouse all offer Ruby options. I used all three of these at some point.
Try out Rails
You may as well give it a go. You don’t have to - it might be a bit overkill to try and teach yourself Rails. But it’s really not that hard, and the more you know before you go into a program, the more you’ll learn while you’re there.
If you’ve gotten comfortable with Ruby, here are some easy and free options to familiarize yourself with Rails:
- Rails for Zombies by Code School
- Michael Hartl’s Rails tutorial
If you’re looking for something in person, consider Rails Girls or RailsBridge.
Kind words #
I love what I do. Learning to do it was really hard, and I still don’t know everything. The best part is that I will always be learning - and that’s what I absolutely love about being a software engineer.