The software development industry is full of assumptions from non-technical people including the idea that if any developer doesn't have experience with a specific language or even a specific framework then they are unable to fill a specific role. With this article I want to explain how this is an over generalized assumption and how to better guage candidates based on the most important factor: Their ability to learn.
Software Development is an ever evolving field of study, when people are first learning how to program and jump to a second language they begin developing a skill outside of software development which is "learning how to learn". There are many similarities between programming languages and there are many differences. What sets many developers apart from others is the ability to use that learning skill they may not even know they have to learn new technology at rapid pace.
Many main stream programming languages can be broken down into a couple common categories:
- Functional Languages
- Object Oriented Languages
These two paradigms are very different and require some experience in either to really understand what you're doing as a Software Developer. However once you have experience with one it's fairly simple to jump to another assuming that you are familiar with the language concepts which are quick to pick up on you can simply learn a new syntax and you're good to go.
During interviews I like to ask a few questions to guage the candidate's familiarity with software development in general and their commitment to the career, here are some examples you can use when interviewing candidates to get a feel of how they learn and how they will do in this ever changing industry.
- Do you do any personal projects in your free time?
- Are you familiar with [Object Oriented/Functional] programming?
- How many programming languages are you familiar with?
- When you learned your last programming language, what steps did you take to learn it?
- How quickly were you able to understand the syntax of the last programming language that you learned?
- What motivates you to learn new programming languages?
The idea is to get a feel for how they learn, how quickly they learn and their willingness to learn more about their industry. Motivation is a huge factor for distinguishing between successful Software Developers and people that are likely to fall out of the industry relatively quickly. It's also a determining factor for recognizing people who can rapidly pick up new languages and technologies.
What do you think about using the ability to learn vs languages known as a measurement of candidates qualifications? How do you measure candidates qualifications for a specific role? What do you think about different programming languages and their similarities and differences?