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.

Reference: Analysis of software developer’s competency – Choosing a right team member from our JCG partner Nenad Sabo at the Software thoughts blog.

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you two of our best selling eBooks for FREE!

JPA Mini Book

Learn how to leverage the power of JPA in order to create robust and flexible Java applications. With this Mini Book, you will get introduced to JPA and smoothly transition to more advanced concepts.

JVM Troubleshooting Guide

The Java virtual machine is really the foundation of any Java EE platform. Learn how to master it with this advanced guide!

Given email address is already subscribed, thank you!
Oops. Something went wrong. Please try again later.
Please provide a valid email address.
Thank you, your sign-up request was successful! Please check your e-mail inbox.
Please complete the CAPTCHA.
Please fill in the required fields.

One Response to "Analysis of software developer’s competency – Choosing a right team member"

  1. Simon Gibson says:

    You should probably include spelling as a useful indicator of ability.

Leave a Reply


+ four = 9



Java Code Geeks and all content copyright © 2010-2014, Exelixis Media Ltd | Terms of Use | Privacy Policy | Contact
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.
Java Code Geeks is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.
Do you want to know how to develop your skillset and become a ...
Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you two of our best selling eBooks for FREE!

Get ready to Rock!
You can download the complementary eBooks using the links below:
Close