In today’s market for hiring developers, companies need every edge they can get to secure qualified candidates. This starts with having recruiters that can communicate effectively with senior engineers and have enough technical knowledge to steer the conversation. This doesn’t mean they need to have a CS degree or know how to code, but even basic fluency in technical terms can help a recruiter connect with and land a top candidate.
To help you get started, here are the key terms every technical recruiter should know.
Software Engineering Fundamentals
Programming language
If you’ve ever come across terms like Python, C++, or Javascript, all of these are programming languages. A programming language is how engineers translate instructions to a computer to perform a specific task—everything from “turn on the screen when I press the power button” to “find me the most popular apple pie recipe when I type the words ‘apple pie’ in the search box.” Different programming languages are better suited for certain kinds of software development. See the Software Engineer & Developer Roles section below for more info.
Framework
Rather than build everything from scratch, engineers will almost always build based on a framework. A framework provides a generic template for applications that engineers can modify and tailor to their specific needs. This not only saves engineers from having to redo duplicative work, but also ensures better reliability as they build on a tried and true foundation. Some common frameworks for web applications are Django, AngularJS, and React.
Frameworks are a powerful concept beyond just software engineering. The benefits of reliability and reduced duplication translate to other domains as well—including candidate evaluation. For example, see how a skills evaluation framework is necessary for hiring software developers at scale, much like a software engineering framework is key to scalable development.
Library
Like frameworks, libraries help make development scalable. A library is a toolbox of predefined operations an engineer can easily reuse. For example, front-end developers will often use a library called JQuery to create interactive elements on webpages with just a few lines of code rather than having to create everything from scratch.
Software Engineer & Developer Roles
Front-end vs. back-end vs. full-stack
Front-end and back-end development are two sides of a coin. Front-end developers build the visual and interactive interface of a web application. A good rule of thumb is: if you can see it, a front-end developer probably built it. Common languages and frameworks used for front-end development include HTML, CSS, Javascript, React, AngularJS, Bootstrap, and Vue.
Back-end developers, on the other hand, implement the behind-the-scenes logic that powers the application, performing the necessary instructions with the application server. Common languages and frameworks used for back-end development include Java, Python (Django or Flask), Golang, Javascript (Node.js), Ruby (Rails), and C# (ASP.NET).
For example, imagine you need to build an online store. A front-end engineer would build things like the layout and design of the product pages, as well as the forms and buttons on the checkout page. A back-end engineer would build the logic to query the product database to get the relevant information to show on the page, and then update the inventory in the database after a purchase is completed.
Full-stack engineers are those who are skilled in both front-end and back-end development.
Mobile application developer
Engineers who build mobile applications for iOS or Android will have specific expertise for their respective platforms. iOS development will typically leverage Swift or Objective C, whereas on Android, development will typically leverage Kotlin or Java.
Site reliability engineer (SRE)
SREs focus on ensuring that a system stays up and running consistently. These are the folks that make sure that servers have enough capacity to handle traffic. In the event of an outage, SREs will also triage and work to get things back up and running as fast as possible. Some common tools used by SREs are Datadog or Kibana for monitoring, PagerDuty or VictorOps for automated incident reporting, and Terraform or Ansible for server configuration.
User interaction / user experience (UI/UX) designer
Often working hand-in-hand with front-end developers, UI/UX designers determine the look and feel of the application to ensure the user has a high-quality experience. While designers will typically not actually build the application themselves, they are responsible for figuring out the specifics of what to build and the interactions. Common tools used by designers include Sketch and Figma.
Data analyst / data engineer
As product teams become more data-driven, data analyst and data engineer roles continue to grow in importance. Data analysts will analyze trends in user behavior to evaluate the success of a particular feature as well as recommend new areas for improvement. Common tools they use include Python (Matplotlib, Numpy), R (ggplot), Hadoop, or Spark. Data engineers work to create the data pipelines and infrastructure to enable data analysis, often over massive sets of user data.
Data scientist / machine learning engineer
Data scientists and machine learning (ML) engineers build predictive models to power applications such as recommendation systems (for example, suggesting which products to purchase on an online store), often leveraging large amounts of data. Data scientists typically focus on building datasets, training models, and experimenting with different approaches. Key tools they will leverage include Jupyter and SageMaker. Machine learning engineers work closely with data scientists to implement models in the product. Their tools include Tensorflow and PyTorch.
DevOps
DevOps teams work with engineers to improve development and deployment processes. Their responsibilities include building automated processes to ensure proper testing and checks before new functionality goes live. DevOps engineers play a particularly key role when teams leverage continuous integration or continuous deployment (CI/CD). With CI/CD, DevOps teams put automated tools and processes in place so engineers who work on the product can get their changes into a live environment rapidly. Common DevOps tools include Jenkins and Bamboo to support CI/CD processes, JIRA for issue tracking, and Maven and Grunt for automated software builds.
Engineering Tools & Processes
Databases: Relational vs. Non-relational
Databases come in two common flavors. Relational databases (or SQL databases) store data in a structured tabular format of rows and columns (similar to what you might expect in an Excel spreadsheet). This database format is common and popular across many applications, especially those without massive dataset sizes, as the structure allows for easy processing and analysis. Common relational database tools include SQL Server, MySQL, and PostgreSQL.
Non-relational databases (or NoSQL databases) leverage some other non-tabular structure. Examples include key-value stores, where you can look up “keys” like words in a dictionary, and then find all the data associated with that key as the “value.” There are also more application-specific structures like graph databases where items are stored along with their connecting paths to other items. These formats allow for an additional level of flexibility that is often useful for larger scale datasets. Popular NoSQL databases include MongoDB and Redis.
Agile development process
A development process determines how teams plan out their work and timeline. With an agile process, work is planned in short sprints of a few weeks with regular quick check-ins and iterations. In contrast, a waterfall process plans out a project several months in advance and typically has minimal deviation or iteration on the project plan once execution begins. For web and mobile application development particularly, agile development is the preferred process as it gives teams the ability to rapidly adapt and takes advantage of the fast deployment cycles available on these platforms.
Version control
Software applications are often built iteratively, with multiple engineers working on the same application. Hence it becomes important to be able to track changes over the course of the project. A version control system helps track and manage changes to an application. Common version control tools include Git and SVN.
Unit Testing / Integration Testing
To ensure applications work as expected, testing is a core part of development. Unit testing consists of testing individual components of an application, whereas integration testing ensures that all the pieces work well together when connected.
A/B Testing
With iterative product development, teams will often run experiments called A/B tests to measure the impact of a particular feature. In an A/B test, a feature will be rolled out (made available) to a segment of the user base, while the rest of the user base will remain as a control group for comparison. By looking at key metrics across groups, a team will be able to isolate exactly the impact of the change. This helps the teams understand whether the feature is valuable and whether they should proceed with rolling out to the entire user base.
Conclusion
With knowledge of these key terms, a recruiter should be well on their way to engaging technically with software engineering candidates. However, technology is constantly evolving and the most important characteristic for anyone in the field is to stay curious and always keep learning.
Beyond just learning the lingo, the next step to landing a candidate is providing a great interview process. Here’s where CodeSignal has you covered: our platform provides an enterprise-ready solution to evaluate engineering candidates at all stages of the process. To see more, sign up for a free demo.