The Struggles of New College Graduates

advertisement
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 pedagogy
Improve developer training at Microsoft
http://research.microsoft.com/hip/
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.

http://research.microsoft.com/hip/
But wait, this is Microsoft!
Surely, this study couldn’t be relevant
for my students.
http://research.microsoft.com/hip/
The Takeaway
New developers’ problems are mainly
due to poor communication, not
technical skills.
http://research.microsoft.com/hip/
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.
http://research.microsoft.com/hip/
Timestamp
Description
Task Type
Subtask
Type
Task
Type #2
Subtask
Type #2
11:45:43 AM
reruns copy script.
Debugging
Reproducing
11:46:18 AM
script done. checks over script
output to make sure it looks
right. Says that the script is
complaining that the files aren't
signed. Email with source
directory says that they are
signed. Weird. copied
successfully, but binaries aren't
signed.
Debugging
Reproducing
MetaCognition
Struggling
with Tools
11:47:26 AM
Shakes head. T is confused.
Team lead says they’re signed.
But empirical evidence says
they're not.
Debugging
Reproducing
MetaCognition
Confusion
11:48:11 AM
T says maybe he wants to sign
the binaries himself.
MetaCognition
Planning
11:48:36 AM
T mutters to himself “bad bad
very bad”
MetaCognition
Reflection
http://research.microsoft.com/hip/
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.
http://research.microsoft.com/hip/
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)
http://research.microsoft.com/hip/
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
http://research.microsoft.com/hip/
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)

Beliefs of New Developers
1. I must prove I am smart, productive and write
quality code from day 1.
Perfectionism 2. I must do everything by myself.
3. I must fix all bugs I personally find in the code.
4. Don’t ask questions.
1. It compiles, therefore it works. If it has bugs…
Delusion well, that’s what testers are for.
2. I know when I get stuck.
Self
Esteem
1. It can’t be the bug repro instructions, it must be
me.
2. My self-worth is directly related to how much I
coded today.
http://research.microsoft.com/hip/
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?
http://research.microsoft.com/hip/
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?
http://research.microsoft.com/hip/
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)
•
http://research.microsoft.com/hip/
Download