PROGRAMMERS` PROFESSIONAL DEVELOPMENT MONITORING SYSTEM
As IT industry has an ever increasing growth, more IT professionals are required than the education systems are ready to offer. Also, even after hiring, companies invest heavily in programmer training, however, large employee turnover rates are characteristic for the industry. More personalized and automatized e-learning systems are required to increase the efficiency of on-job training programs. One of the first steps for implementing a more personalized training system are the initial and continuous assessments of developer skills in order to devise the best interventions for correcting found lapses or bad practices.
In this paper we present a prototype for a system that monitors the developers` skills over time and also monitors the efficacity of training interventions. The programmer`s code is monitored on each relevant commit in a versioning system (centralized or distributed). For the initial prototype we have focused on the Java programming language (in high demand in Romanian IT industry). When the programmer commits code, a hook on the repository is triggered and the code is piped through more static code analyzer tools. Examples of such static code analyzer tools are PMD, Findbugs, Checkstyle, detecting issues from code formatting to correct object oriented design. The reports for each tool are aggregated and parsed in a unique report written in a semi-structured and extensible format (if more tools are added in the future). The reports are saved in the developer`s profile and can be queried by managers.
Another feature of the system is detecting the effect of training sessions on each developer. By analyzing the evolution of his reports correlated with the history of training interventions HR department can better plan future, more effective interventions.
In the article we present the current state of the art, the architecture and initial development. Such a system can be further enhance to quantify, predict and suggest not only targeted training sessions but also changes in development process or suggest the structure of teams for projects.