Wednesday, June 24, 2015

How to finally land a coding job: The 80/20 rule for learning to code.

When will you stop dreaming and land a coding job?

I couldn't stop throwing up, I could hear my heartbeat pounding in my ears, the radio said we had set a Virginia heat record for the day.  I had just finished shoeing 16 large draft horses, I had changed my clothes twice and still my pants and shirt were dripping with sweat.  The inside of my thighs were raw and starting to bleed.

I was about to drive home, but my client insisted that I call my wife to come pick me up as I shouldn't be driving.  I laid down in the shade, took the garden hose and turned it on and tried to cool off.  When my wife pulled up I was having a hard time saying the 's' sound, She helped me into the car, handed me an ice cold Gatorade, and insisted I drink it.  3 minutes later I vomited it all out the window onto another car.

I remember thinking how proud I was of myself as a provider as I handed my wife over $1,000 from my pocket, most of it consisting of now sweaty cash.  It also started to dawn on me that I couldn't keep doing this long term as a career, this was my 4th heatstroke in the past 3 years.

4 years later I would be sitting in one of the tallest buildings in Reston writing front end code for ZipList, the A/C was so cold my glasses would sometimes start to fog :-)  Looking back I can see that I had no idea of how to break into the I.T. world, and had no clue on what skills I needed to learn.  Having helped 30+ people in the past 2 years land QA and coding jobs, I think I can offer some keys to actually learning how to code and actually landing a job whether it's in QA or as a developer.

First know what skills are required to know for the position you want, than only focus on learning those skills.  If I wanted to land a junior Ruby on Rails position, here is what I would focus on:

Http - Know how to do a GET and POST, then an UPDATE and DELETE.

Ruby - Focus on the 20% most used core of the Ruby language.

jQuery - Skip pure Javascript, use jQuery for everything you can for now.

Rails 4.0+ - Forget Rails 3, it will only make Rails 4 seem more confusing.

Html - You need to know the basics.

Css - Know enough to be dangerous.

Sublime Text 3 Plugins - Double your coding efficiency by installing the 30 most useful plugins.

Postgres - You will be using Active Record, but you need to be able to use the database from the command line and know what's going on.

5 MOST Popular Rails Gems  - Devise, Cancan, Paperclip, Twitter-Bootstrap-Rails, Better errors...

Git - Only learn the 8 - 10 most used commands,  this is all you need for 90% of real life work.

Rvm - For keeping track of your Ruby versions.

Brew - For installing everything in an orderly way that won't conflict with other installed programs, you'll thank me later for this :-)

Firebug/Chrome Dev Tools - Learn how to find Html elements using either tool, you will need to do this everyday once you are hired.

Make a Rails app to demo - Don't make the next Facebook, make something that uses a real API like Flickr, that's what I did.

Regular Expressions - Don't stress over it, simply understand the basics for now, when in doubt use Rubular.

Unix - Don't be afraid of the command line, start doing everything from the command line, leave GUIs behind, from now on.

Anything not on this list, skip for now, you will need other skills down the road, but first learn these skills if the goal is to land a junior RoR job.  Don't play with other languages or cool new things that you see on Hacker News, stay focused on the most important areas that you need to learn and understand them well.

What do I mean: "focus on the 20% most used core of the Ruby language???"

Here's what I mean in 4 simple steps:

  • Never write your own custom Ruby methods unless you absolutely have to, always start by looking in the Ruby docs for a method that will accomplish what you are trying to do.

  • Focus on knowing Arrays and Strings, you can accomplish 90% of problems with those 2 data structures.

  • The bottom line is always try to find the easiest, simplest way to solve the problem first before trying to wad into Ruby knowledge that is way over your head.

  • If you can complete the first 30 of these challengesFree Code Camp Challenges you are at a junior dev level of algorithm proficiency, if you can do more, great!  The challenges are written in Javascript, so you will need to figure out how to convert them to Ruby :-)

  • Find a mentor or coach that will help you 10x your learning speed, I was able to meet up with local devs for coffee every other week or so, make sure you have someone who can help you get unstuck and give you clarity and focus on what is important to learn for where you are at in your Ruby knowledge base.

I am not saying do a poor job or become a crappy developer, what I am saying is focus on the most important areas, and land your first job.  6 months at a real job is worth 2 years on your own, you will learn faster than you ever thought possible. 

Don't wander around learning anything and everything that looks shiny and cool like I did.  It took me longer than it should have when I was trying to change careers from a Blacksmith/Farrier to a junior dev.  Whether you want to become a QA Engineer, a junior RoR dev, or a Mean stack Javascript developer, focus on the most important areas for the job that you are trying to get first!  

If you want to know more about the coaching I offer check out: QA Coaching

Keep coding peeps, you can do this!