< BACK TO FAQ

Triplebyte Archetypes

We've found that the types of engineers companies look for tend to fall into a number of discrete buckets. Archetypes describe these types of engineers. We use archetypes to match candidates with open roles at companies.

Back-End Engineer

Business Logic/API Engineer

This is a back-end engineer who focuses on building APIs and supporting complex business logic. They are familiar with multiple back-end programming languages. Databases are an area of strength. They are strong in system design (caching, API design, schema design). They likely have some familiarity with DevOps (deployment, containerization, CI/CD). However, their experience stops short of true large-scale distributed systems.

CS-Focused Back-End Engineer

This is a back-end engineer with strong CS fundamentals. They are comfortable doing complexity analysis and reasoning about binary heap data structures. They enjoy solving mathy programming problems. Their experience is in back-end engineering (and they want to work in this area). However, what stands out about them is their skill solving hard programming problems.

Data Engineer

This is a back-end engineer who works on data systems. This is not a machine learning specialist, or data scientist. Rather, this is an engineer who builds data systems to support machine learning pipelines (or other types of data systems). They may be familiar with technologies like Spark or Hadoop. They may have some knowledge of machine learning. However, what stands out about them is their experience building data pipelines.

Scaling/Distributed Systems Engineer

This is a back-end engineer with experience with high-scale systems. They are familiar with multiple back-end programming languages. Their area of strength is system design, extending to discussions of horizontal scaling—sharding, consistent hashing, read replicas, heartbeat protocols, etc. They can explain how Akamai uses a bloom filter to optimize edge node performance. Interestingly, they may not have as much experience with basic low-scale web applications (because most of their experience may be at a large company).

Front-End Engineer

Architecture-Focused Front-End Engineer

This is a front-end engineer who focuses on application architecture. They stay up to date with the front-end ecosystem (build tools, testing frameworks). Modern front-end engineering requires every bit as much attention to architecture and performance as back-end engineering, and this candidate focuses on these things. They are less likely to focus on visual design, and more likely to focus on data models, code modularity, and performance.

CS-Focused Front-End Engineer

This is a front-end engineer with strong CS fundamentals. They are comfortable doing complexity analysis and reasoning about binary heap data structures. They enjoy solving mathy programming problems. Their experience is in front-end engineering (and they want to work in this area). However, the most important thing is that they are good at solving hard programming problems.

UI-Focused Front-End Engineer

This is a front-end engineer who focuses on user-facing product. They are strong in CSS and HTML (as well as JavaScript), and they like thinking about pixels and user experience and design. They work well with a designer or product person. They are a productive, iterative engineer, with a bias for getting things done rather than thinking about the perfect architecture.

Full-Stack Engineer

API-Focused Full-Stack Engineer

This is a full-stack web engineer who focus mostly on building APIs and back-end business logic. They step in and do front-end work when needed (in order to own a feature). But their strength is on the server side. They are strong in multiple back-end languages and have experience with databases and schema design.

CS-Focused Full-Stack Engineer

This is a full-stack web engineer with strong CS fundamentals. They are comfortable doing complexity analysis and reasoning about binary heap data structures. They enjoy solving mathy programming problems. Their experience is in full-stack engineering (and they want to work in this area). However, what stands out about them is their skill solving hard programming problems.

Product-Focused Full-Stack Engineer

This is a full-stack web engineer who focus on building user-facing products. They are comfortable with databases, and step in and do back-end work as needed to own a feature from end to end. However, they tend to focus more on the front-end, building user-facing products. They are strong in JavaScript.

Productivity-Focused Full-Stack Engineer

This is a full-stack web engineer whose most notable characteristic is their productivity. They do both front-end and back-end work (and can own a feature from end to end). But what really stands out about them is their high level of productivity. They are a move fast and break things programmer.

Generalist Engineer

Architecture/Design-Focused Generalist

This is a generalist engineer. They may have a variety of different technical backgrounds (back-end, systems, etc). Regardless of specialty, they have a strong focus on software architecture. They write clean, modular code. They do very well on software / OOP design problems. And they reason well about the interactions of complex systems.

CS/Math-Focused Generalist

This is a generalist engineer. They may have a variety of different technical backgrounds (back-end, systems, etc). Regardless of specialty, they have strong abilities in math, statistics and computer science. They are comfortable talking about complexity analysis, perhaps including esoteric topics like whether radix sort has complexity less than O(n log(n)). They solve hard mathy programming problems for fun.

Productivity-Focused Generalist

This is a generalist engineer. They may have a variety of different technical backgrounds (back-end, systems, etc). Regardless of specialty, they have great productivity. They follow an iterative process. They are a coding machine. They are a move fast and break things programmer.

Low-Level Systems Engineer

Embedded Devices/Firmware Engineer

This is an engineer who works on software running on a custom, special purpose device. They probably have experience in C or C++ (although they may use other languages). They are comfortable with thinking about memory and power usage. They may have experience with real-time computing.

High-Performance Software Engineer

This is an engineer who has experience working on high-performance applications, like databases and servers. They have experience in a systems language like C, C++, Go or Rust. They probably take a slower but precise approach to programming. Concurrency is an area of strength for them. They can explain how a B-Tree is cache efficient.

Linux Internals Engineer

This is an engineer who is comfortable working with Linux (or Unix-like) operating systems at a low level. They may have experience working on device drivers. They are comfortable thinking about scheduling, interrupts, file systems system calls. They can explain Spectre and Meltdown, and how they were mitigated.

Mobile Engineer

Android Product Engineer

This is a mobile engineer who focuses on building Android applications from a product perspective. They know Android Studio and Android UI libraries inside and out. They focus on UI and product (and less on performance or systems-level Android development).

Android Systems Engineer

This is a mobile engineer who focuses on the lower levels of Android applications. They may work on an SDK with no UI, or on networking or performance of an application. They may run Android on custom hardware. They view Android devices as small Unix-like systems. They are comfortable with concurrency and manual memory management.

iOS Product Engineer

This is a mobile engineer who focuses on building iOS applications from a product perspective. They know XCode and UIKit inside and out. They probably work primarily in Swift. They focus on UI and product (and less on performance or systems-level iOS development).

iOS Systems Engineer

This is a mobile engineer who focuses on the lower levels of iOS applications. They may work on an SDK with no UI, or on networking or performance of an application. They view iOS devices as small Unix-like systems. They are comfortable with concurrency and manual memory management.

React-Native Engineer

This is a mobile engineer who uses React Native. They may have a mix of mobile and front-end experience. They probably take more of a product approach to what they do.