In the past two decades, the landscape for computer science has changed. Part of this comes from a general increase in education availability: from traditional CS degrees to online learning and coding bootcamps like ours, nearly everyone has access to learn programming if they want to. The other part stems from the technology itself. In the 1990s, coding was based around singular purposes — enterprise applications, self-contained games and custom databases for corporations. In the 2000s, the rapid growth of always-on Internet connections and the emergence of smartphones added new layers of security, small phone-based apps, cloud-based interfaces and databases, and increasingly complex web environments. Now, software systems power everything from tablets to car systems to home appliances.

As a result, the United States job market is undergoing a dramatic shift, such that by 2020 nearly one million coding jobs will be unfulfilled based on projections from the U.S. Bureau of Labor Statistics. With the field of computer science rapidly expanding, key traits for smart hiring in the field have changed from even just a few years ago.

I’ve experienced this firsthand in hiring for MakerSquare. We teach software engineering, so this is of particular interest for us to get right. When hiring instructors, we see how they would handle a particular situation they might encounter with students. For example, how they would explain a topic on the spot. We also ask them questions like: Are you able to admit when you don’t know something; do you work alongside a student in researching a problem if they don’t know the answer off the top of their head; are you able to communicate concepts effectively in a one-on-one setting, a small group, or a large lecture? All of these are crucial situations to put a candidate into before committing to hiring them. It also helps the employer, as well as the applicant, better understand the needs of the organization, and helps with retention and a quicker onboarding process.

To acquire the best talent while future-proofing skill sets, I’ve found that today’s CTO should prioritize the following five areas when considering job applicants:

1. Technical adaptability: More so than any other individual skill, a person’s demonstration of technical adaptability is the biggest quality to look for. This is for two important reasons. First, technical adaptability means the ability to integrate new skills and capabilities in a fast-moving computer science landscape. This is helpful for learning new things. Second, it shows that the candidate can thrive in a wide variety of situations. This reflects well on his or her personality and traits outside of the purely technical area of coding. Someone with strong technical adaptability may not already own a particular skill, but can quickly learn it.

2. Strong communicators and collaborators: Coding has evolved from a singular or small-team process to a truly collaborative effort for many projects. In many instances, teams work remotely via the cloud, which puts an emphasis on coordination, communication and teamwork.

3. Willingness to keep learning: Both the technology itself and the technology job market have demonstrated the quick speed of the industry. New platforms, new opportunities and unpredictable variables mean that there’s always something new to learn. Ideal employees demonstrate proactive thinking when it comes to education — a mindset that helps to future-proof your company.

Article courtesy of: Harsh Patel, and originally appeared on Forbes.com.