Category Jr. Engineer Mid-Level Engineer Sr. Engineer
Category Jr. Engineer Mid-Level Engineer Sr. Engineer
Configuration Has installed Linux from scratch (TUI) previously, using command-line editors to configure the system

Has done this with multiple flavors of Linux / BSD
Understands system-level settings related to logging (including rotation), setting up users, networking, mounting, etc.

Knows the differences between init managers (systemd vs. Upstart vs. SysVInit)
Has deep knowledge of system settings, including TCP settings, web server (e.g., Apache, NginX) instrumentation and how it interacts with the system

Treats configuration as code, understands development vs. staging vs. pre-prod vs. production environments

Knows to have a healthy fear of / respect for systemd, may like openrc
Networking Has a good understanding of subnetting and network communication (TCP / UDP)

Knows the OSI chart
Has implemented custom routing on Linux machines Has deep knowledge of advanced topics such as peering (BGP)

May have used PXE, familiarity with TFTP

Familiar with CARP

May have impelemented VOIP

Has designed / implemented network topologies for specific effects
Virtualization and Containers Hasn't worked with containers / virtualization before Has experience with virtualization / containers Has created virtualized environments and / or containers for deployment (e.g., Docker, Kubernetes, Vagrant, etc.)

Understands the difference between containers and virtualization, their tradeoffs and benefits
Computer and Network Security Understands the 8 principles of security (

Has implemented proper permissions / ACLs

Knows how to harden a Linux / BSD system

Can lock down users using chroot jails
Has implemented the 8 principles of security and can explain the what and why behind each one in the stack

Can test the hardness of the system using local and remote exploits

Watches for affecting CVEs and ensures patches are delivered in a timely fashion

May look like
Common Services Has run a web server (e.g., Apache / NginX)

Understands a multi-user system, including SSH key set up and key forwarding

Can monitor system performance using tools like (h/if)top, free, etc.

Knows how to use chkconfig (and write init scripts that have chkconfig headers)
Has run DB servers in a clustered environment

Has run Tomcat (or other servlet containers), WSGI, and / or Passenger and integrated with Apache / NginX

Knows how to diagnose performance bottlenecks and eliminate them

Should have worked / set up at least one paging system (e.g., OpsGenie, PagerDuty, etc.)
Has run NTP, DHCP, DNS, VPN servers

Understands software and hardware load balancing

Comfortable using netfilter / iptables for pre and post routing

May have run hardware firewalls
NoSQL / Caching Has no NoSQL experience / doesn't understand the NoSQL use-case Has implemented NoSQL in the cloud (Elasticache, Redis / Memcached).

Can describe NoSQL at a high level.

Understands when to use NoSQL vs. relational DBs.
Has implemented a NoSQL database for application consumers in both cloud and traditional environments, particularly one requiring understanding of a distributed file system (e.g., HDFS).

Understands Map Reduce implementation under the hood.

Understands their underlying distribution / replication / lookup mechanisms.
(BA)SH Writes BASH scripts regularly, using it to accomplish repetitive tasks Uses BASH to accomplish all tasks, knows where the boundaries lie between BASH and a more advanced language (e.g., Python or Ruby) Lives on the command-line, using eLinks in place of graphical browsers

Uses BASH to solve complex problems
Automation and Code Has worked in an environment with automation using one or more toolsets (e.g., Jenkins)

Automates common tasks with BASH, and Python and / or Ruby
Is very familiar with at least one automation framework and the accompanying scripting language (e.g., Puppet or Chef w/ Python)

Can write automation scripts (e.g., using Chef recipes, BASH, etc.) for builds and deployments
Familiar with multiple automation frameworks and the accompanying scripting language

Has implemented at least one automation framework from scratch for builds and deployments

Understands things like (but not limited to) Git webhooks
Cloud Services Has worked in AWS or similar before, understands what the majority are services are and when they are often used Has implemented architecture in AWS or similar before, including databases, load balancers, web servers

Understands the Amazon security model and Cloudwatch metrics (or similar)

Understands networking within AWS (e.g., how to implement subnets, availability zones, and regions) (or similar)
Has integrated Cloudwatch metrics with auto scaling to create no-touch scaling (or similar)

Can provide cost estimates (both spend and savings) based on auto scale and historical data

Has done automation and integration with AWS, either using the API or utilizing an automation framework (or similar)

Has implemented Route53, VPCs, IGs, etc. (or similar)
Version Control Has used Git and/or SVN Uses Git / SVN, has created and managed one or more repositories Understands full engineering process, including branching, squashing, and merging strategies
System Design Has installed at least one system to specifications provided by a consumer Understands how code will interact with a system, is able to decouple code dependencies to avoid issues with build and deploys

Architects full solutions and point solutions as needed
Has full understanding of how systems will interact, includes this as part of architecture of solution

Able to effectively communicate final architecture including system components with specific examples
Process Participates in planning / prioritization and wrap-ups / reviews Helps to enforce good process amongst more jr. engineers

Has good estimation abilities during planning / prioritization

Identifies areas where process can be improved and escalates this to management / senior engineers
Helps to develop good process, improving process where it already exists or implementing new process where it does not
Written and Oral Communication Communicates effectively with peers Communicates effectively with peers and business stakeholders

Communicates up / escalates when needed

Can effectively describe technical problems in plain English
Communicates effectively at all levels

Prompts the audience to understand level of understanding discreetly, adapts to the situation as needed
Industry-Specific Knowledge Knows what the business does (revenue streams) Has domain-specific knowledge (in this case ad-tech), e.g., ad tags, universal site tags, exchanges, DSPs, DMPs

Knows about industry topics such as fraud, viewability, targeting, and how they related to different advertising channels
Understands how the ecosystem fits together

Deep understanding of industry topics, e.g. how the various types of fraud are actually committed and how they are typically combatted
Agility Requires multiple days of investigation before implementation begins for complex tasks. E.g., implementing something in a new framework.

Requires several further days for implementation.

Requires several further days for incremental improvements.
Requires 1-2 days of investigation before implementation begins for complex tasks. E.g., implementing something in a new framework.

Requires multiple days days for implementation.

Requires multiple further days for incremental improvements.
Requires <1 day of investigation before implementation begins for complex tasks. E.g., implementing something in a new framework.

Requires multiple days days for implementation.

Requires few days for incremental improvements.
Adaptability Works hand-in-hand with a subject-matter expert on new tasks.

Able to take previous learnings and adapt them to new situations.
Able to understand new and complex tasks and research each component to come up with solutions (to be approved by a subject-matter expert).

Can easily pick up new frameworks for a language in which they are strong, e.g. new modules in Ansible easily inegrated with existing playbooks.
Able to drop into new frameworks and languages in familiar paradigms, e.g., move from Python / Ansible to Ruby / Chef.
Thought Leadership N/A Investigates upcoming technologies

Shows an interest outside of work in software development and technology

Identifies problems that may effect the organization and escalates them to management / senior engineers
Makes technology recommendations to the organization

Creates trainings and presentations for internal and potential technologies

Acts as a subject-matter-expert, writing on a subject or subjects of expertise (being published somewhere is preferable)
Leadership N/A Works with jr. developers to help them to understand difficult topics

Is able to guide jr. developers with respect to problem size estimation
Works with jr. and mid-level engineers to help them to understand complex topics, architecture, and provides problem-solving strategies and learning opportunities

Is able to assign work based on skill-level
Interpersonal Skills Works well with others

Takes direction from senior engineers and management

Asks questions respectfully

Shares opinion openly and honestly, but respectfully

Escalates interpersonal issues to leadership for aid with mediation
Works to clarify needs from management and business stakeholders effectively

Disagreement with colleagues are managed with respect and purely on the merits of the issue

Actively builds relationships across the organization
Aids in conflict resolution using analysis and information vs. opinion

Helps to resolve conflict in a timely manner

Executes decisions made by the team and/or management with a positive attitude, regardless of personal opinion

Independently resolves conflict

Manages expectations with stakeholders, identifying and informing key stakeholders at the right times

Asking the right questions of stakeholders to ensure successful execution of projects
Self-Awareness Internalizes feedback.

Can take constructive criticism and use it to improve.

Understands shortcomings and actively seeks to improve with the help of manager / senior engineers.

Actively solicits feedback both professionally and interpersonally to improve skills.
Actively and quickly course-corrects in response to negative feedback (percieved or actual).

Understands short-comings and self-improves through individual learning, coursework, or otherwise.
Career Ownership Self-motivated

Takes an active part in their career path, asking questions and taking guidance from management / senior engineers
Defines their own quarterly goals / MBOs

Takes accountability for delivery and communication of their projects and/or components
Actively learns new skills, languages, and tools to enhance their technical and business acumen

Takes accountability for delivery and communication of cross-functional projects (even when dependent on other resources for execution)

Makes plans for development and executes effectively
Problem Ownership Tasks are assigned by manager / team lead.

Completes tasks to the best of their ability.

Requires help from subject-matter experts to overcome obstacles encountered during delivery.

Delivers tasks on time.
Takes accountability for problems / tasks.

Identifies solutions and their timelines for problem resolution.

Raises issues early related to the issue and /or delivery and communicates them to tech lead and / or management

Takes responsibility for failings, perceived or real.

Identifies more than one way to resolve a problem, requires the help of a subject-matter expert to make decisions.
Organizes tasks to buffer for potential issues, setting clear expectations with consumers / management.

Course corrects quickly when problems arise, taking responsibility and working towards a resolution without hesitation.

Identifies more than one way to solve a problem and is able to communicate the cost/benefits of each one and why they chose one solution over another.