Interviews are challenging for everyone with candidates obligated to summarize a career’s worth of experience within a cohesive narrative while interviewers must evaluate what was said and not said against an array of factors ranging from the candidate’s emotional state to their technical expertise. Interviewers have a responsibility to verify that candidates have the knowledge to work on current projects with minimal onboarding costs; hiring the wrong developer can cost thousands of dollars in direct employment costs as well as much more in indirect costs associated with poorly implemented code. In the increasingly agile world of software development where more projects are being deployed concurrently in shorter iterations, interviewers must also identify those candidates with the skills required to transfer knowledge to new problems and technologies. It is up to the candidate to demonstrate their capabilities, but that can be challenging when most the questions are focused on specific technical knowledge and not broader software development skills. The following five questions may help you better identify candidates who will evolve with your company.
Which emerging software development topics are you most interested in learning?
Finding someone in tech that is not excited about new technologies is not difficult so this question is a great icebreaker. More importantly, it allows the candidate to describe their approach to unstructured, continual learning and how they foresee their skills and knowledge evolving with technology and changing business requirements. Experienced software developers consider the ways in which new knowledge affects their work and how it creates additional value for the company. Software developers who are motivated to learn new skills and technologies are more productive during inevitable technological transitions, such as migrating legacy code to new architectures.
How did your last project benefit its end users?
When people discuss agile software development, they focus mainly upon the project management practices that streamline the build/deployment pipeline. Less frequently mentioned are the user-centric principles that guide projects towards providing real solutions to real problems. Focusing on tools and processes does little to avoid the costly design implementation errors that either fix the wrong problem or cause more pain for end users. The better developers understand user stories, the more likely they will solve inconsistencies between design and implementation – especially when the requirements are fluid or not fully defined, preventing costly design errors from cascading in both cases.
Describe how you solved complex programming challenges in two different projects.
Our minds are amazingly flexible problem-solving machines. Yet, usually we rely on a limited set of strategies to solve challenges; sometimes choosing a less efficient solution than necessary just because it was the first to come to mind. Most experienced software developers have used the same approach to solve similar problems during their career, as it was the best solution in both cases. However, they should also be able to describe how they evaluated two different problems and chose the most appropriate solution for each.
Have you used any outdated technologies and how did they improve your work?
Given the constant evolution of software development, most seasoned software developers have worked with at least one legacy technology. In fact, legacy systems are still common and often considered to be too costly to replace. For example, one state still uses mainframe applications written over forty years ago for motor vehicle registrations, as these systems are considered too complex to rewrite. One could dismiss older technologies as being inefficient and burdensome, those limitations often required creative and to utilize problem-solving techniques that still apply today. To demonstrate their ability to transfer knowledge and skills to new technologies, job candidates should describe one technique they learned while using a legacy technology and how they used it on a different project.
Describe a situation where you disagreed with a project manager, scrum master or product owner and how the disagreement was resolved. Looking back, who do you think had the stronger case?
Given the complexity of software projects, disagreements over how best practices should be applied are inevitable. Experienced software developers realize this and understand that they are often working with a different view than other team members. However, they have also witnessed how scheduling and budget pressures have adversely affected projects. These situations are learning experiences and this question is a great opportunity for developers to highlight how past experience has made them better team members. After all, the most productive and least costly solutions usually require a balanced blend of both technical expertise and business knowledge.
- In order to remain productive and efficient during transitions between projects, generalist software developers must be motivated to learn new skills and technologies.
- Writing quality, useable software requires a solid understanding of the value that is being created for end users and the organization in addition to coding expertise.
- Although many coding challenges can be solved in multiple ways, experienced developers understand how to evaluate possible solutions for efficiency.
- Developers who embrace the learning opportunities that legacy technologies provide have the mindset required to work on simultaneous projects and navigate changing business and technological requirements.
- Increasingly developers work within agile teams that blend technical expertise with business insight to deliver solutions more effectively than previous approaches. To be productive team members, developers must think beyond technical requirements and manage inevitable differences of opinion.
This article was co-written by: