Many companies have a need for extra developers and are actively trying to fill their positions either with internal personnel or with contractors. Most of those companies also have an Agile way of working. Unfortunately, I see those companies still have “traditional” requirements for developers which don’t fully support the Agile environment that they will work in. In this blog, I discuss the need for different requirements, things that are important and things that are not important when looking for an Agile developer.
Before we can take a look at what’s important and what’s not important to look for in developers, let’s first look at the context where those developers need to work in:
Development > programming
Software development is more than programming. In an Agile environment, the activities of a developer go way further and also include refining, designing and quality assurance. I would even say that the biggest impact a developer can have is when a fit solution is devised (during refinement) instead of when building it.
Responding to change
We work an Agile environment, so we want to optimize our way of working to accommodate responding to change, now and in the future. That has consequences for the way we develop and how we deal with quality. High quality becomes an enabler for speed and speed in delivery means faster feedback.
Continuous Improvement and learning
Responding to change also applies to the knowledge of developers: knowledge inflation (devaluation of knowledge in the future because new technologies arise) is a big challenge in software development, so continuous improvement and learing is important.
Teamwork & communication
Developers are working in a team, working on a shared result. There’s no or only a small gap between business and IT, which makes communication an important topic.
So what are traits to look for when hiring developers? We are looking for things that comprise a foundation on top of which developers can build great products. Things that you can’t easily learn within a short amount of time and can take years to become proficient with:
Creativity and out-of-the-box thinking
This is in my opinion the most important quality, because developers are problem solvers, not code writers. We want to come up with fit solutions for a problem during refinement and maximize the (unnecessary) work not done. Like I said earlier: this is where a developer can be most effective.
Development practices that support responding to change
These practices help to deliver fast with high quality, now and later:
- Object Oriented Design, design principles and patterns
- Test-Driven Development (TDD)
- Quality & Agile testing
- Emergent Architecture
- Continuous Integration and Continuous Delivery (CI/CD)
- Working in a team
- Communicating clearly
- Being result driven instead of focusing on own tasks
- Being able to clearly explain ideas and concepts to both IT and non-IT people.
Continous improvement and learning
Look for things that indicate that someone structurally works on keeping him/herself up to date. That could be by attending trainings, but also by reading blogs, experimenting with new frameworks or tools, working on open source projects, joining hackathons etc.
What’s less important
What’s less important, but unfortunately often gets way too much attention is knowledge of and experience with a certain framework or technology. This is something that you can easily learn by reading a book, attending a training or by team members helping you out. Good developers will have no problem with learning a specific tool or framework and can get up and running in no-time.
To give an example: in the Netherlands, Sitecore (a CMS) developers are sought for but not that many are available. There are not a lot of Sitecore developers who also have all the traits mentioned above. I’d rather have a good .NET developer who has the ‘important’ traits and less experience with Sitecore than an experienced Sitecore developer who has none of the traits mentioned above. That’s because a good .NET developer can quickly get up to speed with Sitecore, while the Sitecore developer will have more difficulty developing the traits we labeled important. What’s even more dangerous, is that the Sitecore developer will probably have more difficulty thinking outside-the-box: coming up with a solution that doesn’t involve Sitecore.
Another quality that is generally less important is domain knowledge: while this is something that probably takes a longer time to develop, it will not block a new developer in working on a small feature during a short iteration. Domain knowledge will grow over time. The availability of automated acceptance tests which describe the business rules will speed up this process.
Finding good developers is hard. That’s why it is important to focus on the right requirements when trying to fill a position or placing a job offer. Don’t pay too much attention on certain frameworks, tools, technologies or other things can you can easily learn. Instead, look for traits and practices that form a solid development foundation.
Want to learn how to be an excellent developer in an environment where Scrum is the way of working? And get certified by Scrum.org while you’re at it? Check out the three-day Professional Scrum Developer course and gain a real-world view of what it’s like to build software with Scrum.