Adrian Horning's Blog

How to get a job as a software developer

#software-development #job-hunting

June 13, 2020

Learning how to code

Let me just say, I knew absolutely nothing about programming, and now I get paid to write code all day. And let me tell you, if I can learn it, anyone can 😆

And also, learning to program is very difficult. It isn’t easy. It is exactly like learning another language like Spanish or German.

I’m assuming that you will be starting from 0 knowledge of programming, just like how I started.

So where do you start?

Programing language

Well first, you will learn a programming language.

The programming language is how you’ll tell the computer what to do.

I recommend learning JavaScript first. JavaScript is the programming language that web pages use to do stuff. Like when you click on a button on a website, it will most likely be JavaScript that will used to do something after you clicked the button.

Ruby is also a very beginner friendly language.

But I feel like JavaScript is probably more popular than Ruby, so you’ll have a better shot at landing a job. 🤷‍♂️

I have never learned Python, but that also seems fairly beginner friendly.

There are lower level languages like Java or C#, but those will be much harder to learn if you are a beginner, imo.

Ok sick, you’ve picked a programming language.

Now what? 🤷‍♂️

Now you have to figure out how to learn the programming language.

Online Courses

When I was learning to code, it was hard to know whose course was good or reputable.

Here are some courses/websites/creators that are very respected in the web dev community

Note: these are pretty much solely frontend/JavaScript resources.

If you are learning JavaScript from scratch, I recommend these courses:

Getting help from a real person

Unless you’re some super genius, you will need someone to help you understand these new and foreign concepts.

Getting help and helping other people will help you learn the material better and faster. So find ways to meet people who are also learning how to code.

I believe that all the above courses have some sort of support. I know Gordon (watch and code) has weekly office hours, and Wes Bos (Beginner JS and JS 30) has slack groups you can join.

You should also find in person meetups in your area. Here are some resources:

  • Find meetups in your area of people learning how to code. Or just talking about the programming language you are learning and ask for help. I think most people would be flattered if you asked for help. Just be respectful of their time.
  • There are also freeCodeCamp meetups. Technically these are for people going through the freeCodeCamp curriculum, but pretty sure the people there don’t care who comes as long as they’re learning to code.

I can always help if you’d like. Hit me up on Twitter and I am more than happy to answer some questions.

Use Twitter!!!!

This article changed my whole outlook on Twitter. It can be a powerful tool to connect with awesome people who can help you.

This is especially true in the software development community, because a lot of software developers spend time on twitter.

While you are learning to code, use the hashtag #100DaysOfCode.

I wish I would’ve done this. That hashtag will get you a lot of engagement on twitter. I have seen a lot of prominent people like and share posts with that hashtag.

Everyday I would post what you are learning and questions you have and include that hashtag. I think you will be surprised with the amount of engagement you will start to have.

Here are some people you should follow:

Blog about what you are learning

I would blog weekly about what you’re learning.

I think a good cadence is tweet daily, blog weekly.

It doesn’t have to be long, and it can sound totally stupid.

I wish I would’ve tweeted daily and blogged weekly. Even if you have no idea what you’re talking about, or even if you may be wrong, I think blogging weekly can really help you gain an audience which will greatly help your career in the future.

I think the other advantages are:

  • By reviewing what you’re learning you’ll remember the material better
  • It is so cool to see the progress you’ve made when you can look back on it in a year or two
  • A way for potential employers to find you
  • Potential employers will be impressed that you’re going the extra mile by keeping a weekly blog about what you’re learning

An easy way to create a blog would be Wordpress or Github pages. If you’re more ambitious you could create a static site with Gatsby (what this blog uses). Or even use Wix or Squarespace. You could use Medium, but then you don’t own the content, but it is a fast way to start blogging.

At this point, it doesn’t matter what you use or how it looks, you just need to put one up.

When your skills improve you can always upgrade your blog.

Other Resources

Bootcamps

Ah yes, coding bootcamps.

Now at this point, you will be at a point where you could build some projects on your own, or, go to a coding bootcamp.

Coding bootcamps are typically a “school” you go to for 3 months and then get a job.

Coding bootcamps will want you to have some level of understanding of a language. If the bootcamp doesn’t require any prior knowledge than it’s not a bootcamp worth going to.

Now, I did go to a coding bootcamp called App Academy. But it cost me $28,000. 😬

I only had to pay $5,000 of that upfront, but still, that is pretty insane.

Looking back on it, I wish I would’ve just built projects on my own. Here are the reasons:

  • Bootcamps are increasingly getting a bad rap. Some bootcamps churn students out who can’t contribute from day 1.
  • It is more impressive to employers to say that you were “self-taught”, it looks like you have a lot more passion for programming

    • There is a stigma that people graduating from bootcamps are just in it for the big salary
  • I think back in 2012-2014 (when bootcamps were first started), companies were in such desperate need for software developers, 3 months was all you needed to get a job. Now, Junior roles are more competitive.
  • They are insanely expensive
  • The online courses I’m sharing with you here are the same ones we used at my bootcamp

The one bootcamp that seems pretty legit is Lambda School. They are a 9 month course as opposed to 3 month. And like I said above, it seems like it’s become harder to get Junior Dev roles, and this seems like a great way to get a leg up on the competition.

That being said, they take 17% of your first 2 years salary, so it’s not cheap.

Build a Web Application

Whew 😅 we’re finally at building a web app!

This is for people who are choosing the “self-taught” route.

Ok first things first, we need to decide what to build, and pick a tech stack to use to build that app.

For your first ever web app, I recommend just cloning an existing app. I think that it’s basically like training wheels. Setting up an app is so confusing that it will be much easier to just copy another app before you build your own custom one. Especially learning HTML/CSS. Because you can look at app’s code using the browser’s dev tools.

I would say some good apps to clone would be Asana, Trello, Slack, or Discord.

I think these are good because their core functionality are not too complicated, but they’re not super easy to create either. I think the level of difficulty for a beginner to clone these will be a very good challenge.

Alright, now you have to decide technology to build your app with. Your “tech stack.”

What the heck is a tech stack?

The tech stack is what your app is built with, and the technologies kind of “stack” on top of one another because they kind of start from the ground level, (where a user can’t see), and go to more top-level (where a user can see).

Now, this might be a little overwhelming at this point, but you’re going to have to use a lot more than JavaScript to build this app 😅

I know, if you weren’t super overwhelmed already.

The good news is if you’ve learned JavaScript, you can learn anything!

Ok so let’s talk a little about the tech stack.

You’ll need:

  • A Database, to store the data
  • A Backend that will get data from your database and serve it to the frontend
  • A Frontend that will give your user a nice user interface to interact with your data

Here are my recommendations:

The reason I recommend these is that these are very popular options. The backend is tricky because backends are written in many many languages. But the majority of companies will use a MySQL database and some sort of JavaScript framework (the most popular right now being React.)

Let me explain what these things are…

Database

A database is where you store data. Think of it like an excel spreadsheet. You have columns and rows. You can name the columns anything you want, and you insert rows. A database is basically like an excel spreadsheet that lives on a computer.

SQL

SQL is another programming language, but instead of talking to a web browser or server, you are talking to a database. You are either inserting data into the database, or getting data out of your database to display it to a user.

Not gonna lie, SQL is pretty gnarly 😅 But if you use an ORM (Object Relational Mapping) though you won’t have to do raw SQL queries, and I think the courses I’ve provided don’t require you to do many raw SQL queries. And I don’t think employers expect Junior Dev’s to know much SQL anyway.

There aren’t too many great resources out there to learn SQL. This one is pretty good: https://sqlzoo.net/

But yeah, it’s something you will pick up throughout the course of your career. But even if you can do some basic SQL queries, that will set you apart.

Backend

A backend is where you’ll fetch data from the database, manipulate it, and return it to the frontend so the user can see it. The backend code lives on a server, which is basically your computer, or someone elses computer.

Backends can be written in basically any language 😆 Java, JavaScript, Ruby, Python, etc.

Frontend

A frontend is what the user sees. This is the code that is talking to the web browser.

The frontend is made up of:

  • HTML
  • CSS
  • JavaScript

Which all create the beautiful web pages you see on the internet.

What are the differences between these things?

Think of HTML as the skeleton of the page. It creates the structure of the page. The bare bones.

CSS basically just makes the page pretty. It provides the smooth edges, nice fonts and fancy colors.

JavaScript actually does things. For example, when you click on a button, JavaScript will tell the browser what to do next. Or when you are typing text onto a page, JavaScript is doing that.

Courses

Ok now you’ll need a course to follow along with.

To be honest I haven’t taken this course, but it looks like it has everything you need: https://www.udemy.com/course/full-stack/

I have taken this one, and it’s good, but the database is MongoDB, which, in my opinion is not as popular as a SQL database. However, your potential employer probably won’t care if you don’t know a lot about databases/SQL as a Junior Dev. But it doesn’t hurt. https://www.udemy.com/course/node-with-react-fullstack-web-development/

I am always a fan of Wes Bos. Here is his Fullstack Advanced React course https://advancedreact.com/. But the technologies he is using are super new and are not used by the majority of companies today. Tech moves fast so maybe in 5 years most companies will have migrated over. But unless you are working for a brand new startup, you will probably not be using GraphQL, Prisma or Apollo.

After you’ve cloned a web app, I would make 2 more web applications to have a nice group of 3 projects you can include in your portfolio.

Sorry there aren’t more tutorials either. If you check out the sites that I’ve shared, there are a lot of great tutorials there, as well as YouTube.

Note: I always felt like using tutorials is cheating, but honestly, I and many software developers still use other people’s tutorials to learn. 🤷‍♂️ So use them liberally.

Algorithms/Data Structures

An important part of Computer Science are Algorithms/Data Structures. Algorithm just being the steps to take to solve a problem, Data structure meaning how you store the data.

For a junior dev role however, I don’t know how important it is to thoroughly know about these topics.

Bigger companies like Google or Amazon will care, but a small startup probably won’t. Unless they’re doing some intense computer sciency thing.

Interviews used to heavily test you on this stuff, but I think now it’s becoming less popular.

Many interviews now give you a project to do.

However, this stuff is still good to have a basic understanding of.

Cracking the coding interview is the classic book on this stuff, but I found that book insanely confusing 😆

I’ve heard good things about Outco.io. They will specifically help you work on getting better at interviewing. If I was self-taught, I would consider using them. Seems like a good investment.

Here are some other resources:

Sorry I can’t be more helpful there 😅

But I think this next part is a MUCH better investment of your time than learning data structures/algorithms.

Job Hunting

Ok wow we are finally ready to start looking for a job!

Should you start polishing your resume?

No.

Resume’s and cover letters are relics from a bygone era.

Resume’s are great when you have a great resume, but in your case, you’re just starting out as a software developer who doesn’t have any real world experience. Your resume is going to be looked over immediately in favor of someone who has even the tiniest shred of work experience.

Now I’m not saying totally neglect it. It has to look presentable. But it’s a lot less important than people think.

Ok. How about reaching out to people on LinkedIn!?

Eh. Wrong!

LinkedIn was cool, but it’s really crowded and impersonal. Managers at top companies get bombarded on LinkedIn for requests.

Ok, well, I guess the only other option is networking right?

Well, if you don’t have anyone in your network that can help you, you’re screwed right?

Wrong!

There is a MUCH better way to “apply” for jobs.

It will increase your response rate by 50% at least.

You ready to hear what it is?

You sure?

Wait for it…

It’s emailing hiring managers directly!

Think about it.

How many hiring managers have applicants emailing them directly? I would venture not that many. Which lets you stand out. It makes you look like you take initiative, which you do.

And you’ll be reaching the hiring manager in their work email, where they check all the time.

And you get to the actual decision maker. If you apply online, some recruiter or HR professional probably has no idea what they are looking for and will screen you out.

So how do you find hiring managers emails?

Piece of cake.

Go onto LinkedIn and find people who work at companies you want to work for with these job titles:

  • Engineering Manager
  • Director of Engineering
  • CTO
  • CEO
  • Founder

Then get this chrome extension https://clearbit.com/.

It will give you an extension within your gmail to look up that persons email.

So go to gmail, click on the clearbit extension and search for the person.

Many times the person will pop right up. If they do, sick.

If not, it’s pretty easy to guess what their email is.

Look at what others’ emails’ are at the company, and then just match the pattern.

To keep it simple, most emails are just firstName.lastName@company.com

Ok so you have their email, but what do you say? What is the ask?

Well first of all, DON’T ASK FOR A JOB!!!!

That is like the worst possible thing you could do.

Doing that will make this awesome hack not work for you.

Here is the template that I used, from Arthur Meyster, and it is 💰🔥

Hi ${firstName},

Very impressed with what you all are building at ${companyName}, as well as the great engineering team you have put together as well.

I’m a software engineer who has worked extensively with JavaScript, Ruby on Rails and React/Redux so I’d be able to hit the ground running and contribute a lot on my first day.

I know you’re super busy, but I would love to buy you a cup of coffee and chat about what you’re building, as well as tap into your advice about the industry. You can find a link to my portfolio below.

Thank you! ${yourName}

Then send that puppy off.

If they don’t respond, send a follow up email.

In fact, send 5 follow ups if they don’t respond.

Keep the follow up email short and sweet like this:

Hi ${firstName}!

Just wanted to make sure you received my last mail and bump this in your inbox.

Best, ${yourName}

Here is a video explaining the process.

If they can’t do coffee, I found that a phone call was just as good if not a better ask.

And then it’s all up to you to get an interview from there. Many times they’ll just connect you with the recruiter to set up an interview, which is obviously the ideal situation.

And when you bomb the interviews, just learn from it and know you’re coming one step closer to that job offer.

Negotiating

Ok you’ve got an offer!!! Congratulations! You have worked your butt off to this point.

You could just accept the offer, but you could be leaving thousands of dollars on the table.

Haseeb Qureshi has a crazy story about how he turned a $105K offer from Yelp into a $250K offer from AirBnB.

Dude is a MASTER negotiator and a brilliant guy.

You can read about his job hunting journey here: https://haseebq.com/farewell-app-academy-hello-airbnb-part-i/

And his tips on negotiating here: https://haseebq.com/how-not-to-bomb-your-offer-negotiation/

He also has some job hunting articles that are way better than this one, so be sure to check those out too. Honestly just read everything on that guy’s blog.

He was a bootcamp graduate by the way.

Closing

Well once you accept the offer, congratulations!

Even if your offer isn’t like Haseeb’s, that’s ok. That was the situation I had, but the next year I leveraged my work experience to get a significant pay bump. Keep using your experience to keep leveling up.

If I’ve left things out, or you feel like I need to update something, feel free to tweet at me.

Keep moving forward 💪 and good luck 🤞