About Nenad Sabo

Analysis of software developer’s competency – Choosing a right team member

In this post I shall try to explain an approach for estimating developer’s skills. The approach is still as a concept, which lacks some concrete decisions, but you can choose the thing which suits your case best.
There are number of methods for estimation of developers skills, my favourite being the developer competency matrix. This method is very good, and it prooved to be useful for general estimation of different skills, for example as a part of a general employment assesment.

But here it is relevant to estimate competency with relation to specific project, for example when choosing a right team members for a specific project, assuming we have a list of potential candidates to choose from. I would also like to automate this process, so the approach excludes the personal qualities for that reason – being not quantitative.

This is no easy task due to vast space of different skills one might have, so I shall restrict myself only to most common types of software development, which are web and app development for the most common platforms.

Additionally, most developers I work with are also involved in organizational activities, such as team management, customer relations, communication… I shall try to isolate these qualities out of this analysis and focus on pure technical skills.

We shall try to represent this software developer skill space with different dimensions:

programming language

tools and libraries

platform

application type

experience (lenght)

role (depth)

These dimensions are basically factors which are taken into account for the competency analysis. There may be other relevant dimensions added.
Programming language dimension is pretty obvious, it is a distinct list of items such as c, c++, java…
Tools and libraries dimension represents various IDE tools, compilers, editors, frameworks, and libraries which are used when developing software.

Platform dimension is representing the environment in which application is deployed, and encapsulates both hardware and software environment. It is also a distinct list of items, such as windows, linux, iphone, desktop, silverlight, flash…

Application type dimension represents the domain in which the software is being used, and it is also a distinct list of items such as “information system”, “online sales”, “banking”, “medical device”, “web portal”, “social network”…

Experience dimension represents simply the length of experience for particular development which has already happened in the past.

Role dimension represents level of the development activity and may contain items such as “apprentice developer”, “medior developer”, “senior developer”, “software architect”, “platform architect”…
With these dimensions one should be able to define a metrics system for measurement of general competencies, or a measurement system for a specific project.
Simplest thing to do is to represent the metrics as a linear combination of the dimensions, but there may be other useful methods as well.

For a specific project different weights are given to any value in each dimension. This way, basically, we define what are we looking for in a candidate. If we accept only Java developer for a position, we would give other programming languages a zero weight. If we need a candidate to be a senior, but also accept medior developer, we assign appropriate weights to these values.
Our candidates need to fill their values for every relevant dimension, or we extract that from the CV or an interview, giving us values we can work with.

Then, for each candidate we calculate the metrics, and choose the one with the highest score!
It would be interesting to create a web app which would allow online calculation of the competency based on a given criterion.

Not to be forgotten, there are other – more human factors which need to be considered. I shall reflect on that in a separate post.

Join Us

With 1,240,600 monthly unique visitors and over 500 authors we are placed among the top Java related sites around. Constantly being on the lookout for partners; we encourage you to join us. So If you have a blog with unique and interesting content then you should check out our JCG partners program. You can also be a guest writer for Java Code Geeks and hone your writing skills!

Disclaimer

All trademarks and registered trademarks appearing on Java Code Geeks are the property of their respective owners. Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries. Examples Java Code Geeks is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.