140 likes | 159 Views
Explore how new developers adapt to their roles, focusing on communication challenges versus technical skills. Recommendations for educators and future research plans are discussed.
E N D
The Struggles of New College Graduates in their First Software Development Job Andrew Begel, Human Interactions in Programming, MS Research Beth Simon*, University of California, San Diego * Visiting researcher at Microsoft SIGCSE 2008 March 14, 2008
Study Questions • How do new developers learn their jobs? • What are the critical skills they need for learning and productivity? • How well does university prepare CS graduates for a first job in software engineering? • Goals: Improve CS educational pedagogyImprove developer training at Microsoft
Study Methodology • 8 new Microsoft developers • 4 BS, 1 MS, 3 PhD • 2 USA education, 2 Chinese, 1 Pakistan, 1 Australia, 1 Kuwait, 1 Mexico. All PhD education took place in USA. • Only one had work experience prior to Microsoft (2 years). • Hired between Oct 2006 and March 2007.
But wait, this is Microsoft! • Surely, this study couldn’t be relevant for my students.
The Takeaway New developers’ problems are mainly due to poor communication, not technical skills.
Study Methodology • Observations 4-5 times over a two month period (concentrated in early April and late May 2007) • Each observation was 2-3 hours. Total of 85 hours. • Participants recorded 3-5 minute videos to answer reflective questions (which we provided). • Each recorded around 27 videos. Total of 216 videos. • $50 Amazon gift certificate paid for each week of participation.
Analysis Methodology • Each observation, record action at the moment with timestamp. • Each day, code tasks and summarize observations. • Each week, abstract activities into categories. • Later, resort activities into categories. Recode actions into events a third party could have seen.
What Do New Developers Do? • Programming (reading >> writing, commenting, proofreading) • Working on bugs ((repro, reporting, triage) >> debugging) • Testing (writing, running) • Revision Control (check in, check out, revert) • Documentation (reading >> writing, search) • Specifications (reading >> writing) • Tools (discovering, finding, installing, using, building) • Communication (asking questions, persuasion, coordination, email, meetings, meeting prep, finding people, managers, teaching, learning, mentoring)
The Good and the Bad • New devs are good at • Programming • Design • Peer mentoring • Using many strategies when debugging • They interact naïvely with other team members when • Asking questions • Triaging and resolving bugs • Attending meetings • New devs are bad at • Engaging a large, legacy codebase without using written docs • Reproducing bugs • Using new tools • Reflecting on their own progress (knowing when they are stuck)
Recommendations for CS Educators • Scaffold and support social interactions in software teams • Employ legitimate peripheral participation, communities of practice • Design higher-fidelity software engineering courses • Work with larger, legacy codebases, pre-existing teams, minimal docs • Make bug fixes, implementation changes, or non-critical new features • Deliver capricious management directives • Meta-cognitive skill development: Am I stuck now?
Future Work on this Study • Describe differences between novice and expert professional developers. • Recode observation logs with “functional coding” schema. • Analyze video diaries: What do new developers say when reflecting on their own learning?
Future Research Plans • Improve “onboarding” process at Microsoft • Mentoring, mentoring, mentoring • Modeling appropriate behavior • Teach managers how to teach • Study new hires in • Other roles (requirements engineering, testing) • Non-USA locations (e.g. China, India) • Globally distributed development • Mass onboarding (corporate acquisitions)