The Struggles of New Graduates

I had a lot of interesting conversations while at SIGCSE last week, but the best talk I attended was given by Microsoft's Andrew Begel, who spent a year studying the problems new college graduates face in their first software development job. The takeaway:
New developers' problems are mainly due to poor communication, not technical skills.
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)
New developers are good at:
  • Programming
  • Design
  • Peer mentoring
  • Using many strategies when debugging
They 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)
They interact naively with other team members when:
  • Asking questions
  • Triaging and resolving bugs
  • Attending meetings
Beliefs of new developers:
Perfectionism
  1. I must prove I am smart, productive and write quality code from day 1.
  2. I must do everything by myself.
  3. I must fix all bugs I personally find in the code.
  4. Don't ask questions.
Delusion
  1. It compiles, therefore it works. If it has bugs...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.
I think this is really valuable work; it'd be great to see it repeated with new grad students...
comments powered by Disqus