Technical Recruiting Guide for Non-Technical People

This guide is for non-technical people to understand how to recruit technical software engineers. This guide is geared towards a particularly narrow field of software engineers who work at companies like Google, Facebook, and Amazon.

Note: This content is kind of out of place for SiliconValleyGuide.org. After it's developed, the content will be transitioned into its own website.

Disclaimer: I'm not a recruiter. This is from an engineer's perspective.

Sourcing Channels

Sourcing General Software Engineers

  • University recruiting

    • Most universities have alumni job posting sites.

  • Events. Unlike business people, engineers don't go to events to network. Instead, engineers attend events to learn new things or build stuff.

    • Meetups. The Bay Area has a very high concentration of engineers. Meetups are a great way for engineers to learn about specific technologies, such as blockchain, virtual reality, and deep learning.

    • Hackathons. You can sponsor hackathons. When the hackathon winners win your prize, you can try to recruit them. Uber successfully did this with a couple of their hackathons. I've also had people try to recruit me after presenting at a hackathon.

  • Online. In particular, the following sites are well-known to engineers:

  • Recruiting start-ups. Due to the extremely difficult process of recruiting technical talent, new startups have sprung up to help with the process. These sites are very friendly to the engineering talent that is being recruited. These include TripleByte, Woo.io, and Hired.com. With Hired.com, engineers apply once and then companies ask to interview you, giving you an upfront salary and equity number before you even start the process.


Sourcing Researchers

Recruiting for research is more specialized than software engineering. There are academic-focused resources you can use to source:

  • Conferences. Each subfield has their own conferences, some of which are hot and others are not. For Computer Vision, the most popular conference is CVPR.

  • Google Scholar / Arxiv. Researchers are incentivized to publish papers. Google Scholar allows you to search for papers and Arxiv is a hosting site.


Machine Learning

What is model serving?

You can think of a model as just a file that people run to create predictions. In some cases, it can be very large. In other cases, it may be slow to run. Model serving refers to putting the model somewhere so that people can run it at scale. For example, some models may run thousands of times per second.


What is multimodal?

Multimodal refers to being able to process vision, audio, and/or motion simultaneously. For example, a model may process both the image frames and audio from a YouTube to classify what the video is about.


What companies hire for computer vision?

There are some companies into computer vision:

  • Microsoft

  • Google

  • Facebook

  • Nvidia

  • Amazon - for their Amazon stores

  • Snap - for their filters

  • Pinterest - for visual search

Usually specialists like computer vision engineers work on the same team. You can use the LinkedIn "Visitors also looked at" feature to see people with similar profiles.


Case Study: Mortgage Company

Let's say a mortgage company wants to apply natural language processing to improve the efficiency of refinancing. Specifically, people upload their mortgage documents and the system should automatically extract information like name of the mortgage lender.

Let's walk through the end-to-end life cycle for a machine learning engineer.

Prototyping. The ML engineer will take a few sample documents. He might try some simple rules (look for term "Lender") to see if it works okay.

Collecting training data. Machine learning model is built off of data. The data is called "training data". The mortgage company probably already has millions of example mortgage documents with the data already extracted. The engineer can use this as training data.

Training models. The ML engineers trains a model on the data. The training time varies depending on task. For small data sets it can take a few minutes. For large sophisticated models it can take weeks.

Model selection. The ML has several options for what type of algorithm to use. Even for a given algorithm, there are many options. It's kind of like buying a car. You have different models that have different strengths and weaknesses. Even for a given car, you have options to customize the interior (e.g., sunroof option, etc.). Choosing a model has the same type of optionality.

Typically the model that has the highest accuracy is chosen.

Deployment. After the model is selected, the ML engineer can provide the code (in TensorFlow or Pytorch) to deploy it into whatever application that needs it.

FAQ

What is cloud?

The cloud refers to running applications on another companies server. For example, Netflix doesn't own its own servers to stream movies. Instead, they store and serve the movies from Amazon Web Services (AWS). Amazon has to take care of constructing data centers, buying the computers, connecting them together, and maintaining them.

There are 3 major cloud vendors:

  • Amazon Web Services (AWS)

  • Microsoft (Azure)

  • Google Cloud

What is a programming language?

A language, like English, is a way for people to communicate with each other. A programming language is a way for an engineer to communicate with a computer, telling it what to do. For example, if a programmer wants to make the background color of a web page red, the code may look like this:


body {

background-color: red

}


The language above is called CSS.


What are the different types of roles?

Software engineering is a very broad area. For example, a software engineer working on self-driving cars may not know anything about creating web pages.


Front-end engineers - building what you see

Most software has a display that people interact with. For example, for YouTube, the interface is a video player, comment section, related videos, etc. Front-end software engineers build these types of visual elements.


Programming languages: HTML, CSS, JavaScript


Backend engineer

Also known as: server-side engineers, infrastructure engineers


Backend engineers build everything that is unseen. For example, for YouTube example, the backend handles incrementing view counts, receiving videos for upload, generating captions, etc.


Programming languages: Python, Java, Ruby


Full-stack engineer

A full-stack engineer can do both front-end and backend work.


Why do employees leave for startups?

The answer will vary depending on the individual, but these are common reasons for engineers to leave for startups:

  • Faster pace. Large companies tend to move very slowly. This is due to (1) internal politics, (2) legal departments.

  • New products/features. At large companies, there are many legacy products that require many engineers to maintain. At a startup, you get an opportunity to build something new, which is much more fun for engineers.

  • Opportunity to learn new things. Engineers tend to get bored after around 2 years. If they are pigeonholed in a company they may find it more appealing to go to a startup where they can learn about a new area. This includes topics like new programming languages or trends (e.g., blockchain, deep learning).

  • Stock options. Compensation at startups can be potentially much higher, but the risk is also much higher.

  • Promotions in title. Startups tend to be more willing to give higher titles.

  • Career trajectory. A startup may be an easier path to get promoted than at a large company. Michael Lynch posted a story about his struggles to get promoted at Google.


What's the difference between a software engineer and a software developer?


I don't believe there's a difference. "Software engineer" sounds more prestigious. Some claim that software engineers focus on building widely used software (e.g., Google, Facebook).


Some countries, like Canada, require a license to be called an engineer, so in Canada the programmers are called "Software Developer".


Why do some people leave their LinkedIn profiles blank?


There are a certain set of people who are so high profile and getting paid so much that they're not really interested in looking for other jobs (example).


Why do companies prefer specific languages (as opposed to all of them)?

Many job postings will list a specific set of programming languages (e.g., Java, Python, C++). The reason is that it's more efficient for a team to work in a single or small set of languages.

It's similar to human languages (e.g., English, Spanish). Here are some analogies:

  • Some languages are closely related. For example, just as it's easy to learn Spanish if you know English, it's easy to learn Java if you know C++.

  • Just as Japanese encompasses some Chinese characters, C++ can encompass all of C.

  • Some languages are long-winded. Just as German is known for it's very long words, Java is known for its verbosity.


Is embedded software engineering backend or frontend?

Backend and frontend typically refer to web-based applications. Embedded software engineering typically refers to something more hardware oriented. So, I wouldn't classify embedded software engineering as either.


Why don't potential candidates respond to my email or LinkedIn message?

High quality candidates receive several emails from recruiters every week. It gets tiring to responding to every one of them.


What should a recruiter email say?

This thread has feedback from developers on how to craft a good recruiter email. About 80% of the responses suggest including compensation information.

https://www.levels.fyi/ provides relatively accurate compensation information. Sites like Glassdoor are very misleading because they don't include the level information (example).


What's the difference between DevOps and a infrastructure software engineer?

DevOps are more involved with running the day-to-day operations to keep servers up. Infrastructure software engineers are more focused on writing software.


What are some common technical terms when recruiting a full-stack engineer?

  • CSS - programming language for front-end for styling web pages. For example, programmers use CSS to set the colors or fonts on a webpage.

  • HTML - programming language for front-end. HTML specifies the structure of the webpage. For example, you use this to place the video player on the top and comments on the bottom.

  • JavaScript - programming language for mostly frontend. This is used for controlling actions on a webpage. For example, JavaScript is used so that when you click on the "play" button, a video starts playing.

  • Python / Ruby - programming language for backend

  • Django - Python framework for web applications (mix of front-end and backend)

For a more comprehensive resource, see https://glossarytech.com/.


Analogy

It may be easiest to understand the above by using an analogy of building a house. Pretend you are a construction manager with several workers who speak different languages. Here's what it might look like:

  • You speak CSS to specify how the wallpaper should look inside the house.

  • You speak HTML to specify the structure of the visible parts of the house (e.g., where the light switches should go)

  • You speak JavaScript to specify how the light switches are connected the circuits internally to turn on and off the lights.

  • You speak Python or Ruby to specify how the pipes are connected for water.

  • Your Python-speakers use Django, a standard for how pipes should fit together, or connecting the pipes together


Spectrum Perspective

It's probably easiest to visualize this on a spectrum between backend and frontend technologies: