A computer program product, encoded on one or more non-transitory computer storage media, comprising instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:
- receiving a definition of a target developer entity, the definition specifying (i) one or more individual source code developers in a population of source code developers and (ii) one or more code bases to which one or more of the one or more individual source code developers have committed source code;
- obtaining data representing source code contributions attributed to individual source code developers belonging to the target developer entity, the source code contributions occurring in respective commits by the individual source code developer to the one or more code bases;
- obtaining data representing source code contributions attributed to individual source code developers belonging to the population of source code developers;
- generating respective coding-velocity samples for each individual source code developer belonging to the target developer entity and for each individual source code developer belonging to the population of source code developers, including computing, for each commit of one or more commits by the individual source code developer to the one or more code bases:
- (i) a measure of coding activity for one or more source code contributions in the commit, and
- (ii) a time duration between (a) the commit to the one or more code bases by the individual source code developer and (b) a previous commit to any code base by the individual source code developer;
- aggregating the coding-velocity samples generated for individual source code developers belonging to the target developer entity according to the definition of the target developer entity including determining which coding-velocity samples generated for each individual source code developer were generated from commits to the one or more code bases specified by the definition of the target developer entity;
- aggregating the coding-velocity samples generated for individual source code developers belonging to the population of source code developers according to a same principle of aggregation as the definition of the target developer entity to generate one or more prior developer entities;
- generating a coding-velocity model for the target developer entity from the aggregated coding-velocity samples of the target developer entity and the aggregated coding-velocity samples of the one or more prior developer entities, including:
- generating, from the aggregated coding-velocity samples for the one or more prior developer entities, a prior distribution that assigns a likeliness to each combination of model parameters for a particular model type,
- generating a coding-velocity posterior distribution for the target developer entity, wherein the coding-velocity posterior distribution assigns a likeliness for each combination of model parameters according to the aggregated coding-velocity samples for the one or more prior developer entities and the aggregated coding-velocity samples for the target developer entity,
- generating the coding-velocity model from the aggregated coding-velocity samples of the target developer entity and the coding-velocity posterior distribution, wherein the coding-velocity model assigns a likeliness to values of one or more coding-velocity attributes for the target developer entity;
- and
- computing a value of a particular coding-velocity attribute for the target developer entity using the coding-velocity model.