Bridging skill gaps in software