Intro

Tech is eating the world. Tech companies will be the dominant hiring force for at least the next 50 years and they require a variety of programming and non-programming skills to keep their well-oiled machine running.

Whether you just finished a boot camp and you are looking for a new job or you know nothing, but want to

Please note that the compensation numbers are estimates. There are very wide varieties of pay between these roles depending on your geographic location.

Quality Assurance (QA)

Skills

  • Strong communication skills
  • Programming background

Compensation / Difficulty

  • $ / Low skill

What does a QA do?

Quality Assurance (QA) test pre-released apps. QAs try their very hardest to find weird edge cases that will break the app before the users find them. An example bug a QA might find is they could try putting words instead of a number in a text box. The engineer authoring the application may forget to validate the user-submitted text. If a user inputs text instead of a number, the website may crash. The QA would flag the error and ask the engineer to display a human-friendly message asking the user to use a number instead of text.

A typical day as a QA is you will get instructions to test out a feature. You will try various inputs to break the app and work with the engineers to correct any problems that arise. You are expected to write reports or short JIRA or Zendesk tickets describing how to reproduce the issue.

It is very common for junior software engineers to start their careers as QAs because they have an understanding of how computers work to know how to find problems. This is a great job to get your foot into the door at a company before transferring into a more traditional software engineering role.

Example jobs

Data Analyst (DA)

Skills

  • SQL
  • Strong communication skills / well organized
  • Basic Statistics

Compensation / Difficulty

  • $$ / Medium skill (learn in ~2 months)

What does a Data Analyst do?

Data Analysts (DA) help product managers, engineers, and business people answer questions about the company’s data. For example, a product manager might want to know “how many users logged into the website this week?”. Data Analysts will use SQL to query various data stores to collect this information. They may even leverage Machine Learning to find the answers to their questions.

These roles are great because unlike engineering roles, there are no on-call duties. If the website is failing, they can continue to sleep through the night :), but the next day DAs will need to report how many people were impacted by the failure.

Candidates must demonstrate writing SQL, with an understanding of JOIN and WHERE clauses. If you’re interested in learning SQL, I love the free Khan Academy Class that will guide you through the basics. For interviews, be prepared to answer questions about joining tables, basic statistics (e.g. how do you calculate the medium).

Example jobs

Product Manager (PM)

Skills

  • SQL
  • Strong Communication skills / well organized
  • Basic Statistics

Compensation

  • $$$ / High skill

What do Product Managers do?

Product managers (PMs) listen. PMs gather information from Data Analysts, Users, Engineers, sales, and business verticles to identify and prioritize problems that the engineers will solve. For example, a user may ask the website to allow them to import their data via a CSV file. The product manager will talk with the engineers to determine how long creating the feature will take and the PM will talk with other users and stakeholders to determine how important this problem is. Sometimes the engineers may say, “This feature will take 4 months to build” and the PM may decide this is not worth the effort.

PMs, tired of PMing, often switch to becoming Software Engineers and Software Engineers, often switch to become PMs. Technical PMs are great because they understand the limitations of software and can analyze data to find the lowest hanging fruit.

Product manager’s roles vary from company to company, because much of their work is defined by the company’s work culture. Read through the job description and make modifications to your CV/Resume as necessary to put your best foot forward when applying to these roles.

Example jobs

Technical Product Manager (TPM)

Skills

  • SQL
  • Strong Communication skills / well organized
  • Some programming experience

Compensation

  • $$ / Medium skill (learn in ~2 months)

What do Technical Product Managers do?

Technical Product Managers are similar to Product Managers, but they work much closer with engineers than sales or other business verticals. A TPM might be asked to analyze a 3rd party for integration, perform competitive analysis, or assist engineers with developing engineering specs that meet the requirements of product managers.

Many software engineers start their careers as TPMs and transition to software engineering for the higher pay and larger direct impact on the users.

Example jobs

Junior Software Engineer

Skills

  • SQL
  • Frontend programming language
  • Backend programming language
  • Database design
  • 1-2 frameworks for backend and frontend (like ReactJS or Django)

Compensation

  • $$$ / High skill (learn in 12 months)

What do Junior Software Engineers do?

As a junior software engineer, your job will primarily to implementing features that senior engineers define. For example, they may ask you to “make a JSON rest API for this MySQL table”.

Junior Software engineers take the most skill to learn. At large companies, junior roles are primarily filled by college students and recent grads with Engineer or CS degrees, so it can be challenging to break into this. Startups and consulting agencies have the lowest hiring bar because they struggle the most to have applicants. Startups typically don’t have enough money to compete with the larger companies, so they are great places to launch your software engineering career.

You should also consider joining Software Engineering consulting firms, especially if you leave in Asia or Eastern Europe. Typically, these companies are also desperate for talent as projects ramp up and customers need them to deliver products quickly. Consulting companies struggle to hire talent for similar reasons as startups, but also the work is less consistent. I helped a friend of mine land his first programming job as a part-time software engineer at a consulting company I worked at. 3 years later, he was working full time at Facebook earning more than I do!

Example jobs