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 General Software Engineers
What is model serving?
What is multimodal?
What companies hire for computer vision?
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.
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)
What is a programming language?
What are the different types of roles?
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?
Why do some people leave their LinkedIn profiles blank?
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.
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?
For a more comprehensive resource, see https://glossarytech.com/.