I am attending a very interesting talk by Andrew Begel of Microsoft Research, entitled: "Soft but not Squishy: Enhancing Social Realism in Computer Science Education "
He is presenting using a Mac!
The focus of his talk is a study he was involved in about how new hires in software engineering jobs behave and perform. Andrew gave some superb anecdotes about what happened to people as they arrived for their first few days on the job. For example, the newbie who was too enthusiastic and fixed a bug he thought he had found, but as a result crashed the build. Or, the newbie who just finds out that even the experts really don't always provide the right information. Or, the newbie who thinks he is done fixing a bug, but doesn't realize that there is a much more complex process than he ever expected, and he isn't even half done. Or the newbie who believes that mistakes can be left to be found by testers. Or the newbie who hasn't the faintest idea that there is a tool available to do what he is doing manually.
These case studies give interesting insight's into Microsoft's process: One tidbit is that when fixing a bug you are supposed to create multiple different fixes, and then work to get one of them approved. In other words, explore all possible solutions, not just the first fix that seems to work. Also you have to convince colleagues, testers, owners of code that might interface with yours, etc. Lots and lots of social interaction.
A key lesson he highlighted: It's best for newbies to walk across the hall to ask a colleague rather than struggling endlessly to solve a problem. Social interactions are the key. Actually, I think a balance is needed here: Some struggling can help you learn, and even discover things the experts don't know.
He highlighted my studies of software engineers from over 10 years ago, emphasizing that in CS curricula students must be taught more communication skills.
He discussed the use of peer mentoring: Newbies can be on a mailing list for 6 months, where people hired today can seek answers to 'dumb' questions from people hired just a few months ago.
Other social issues he suggested were arranging for students to participate in socially relevant open source projects, evaluating whether websites meet accessibility requirements for the blind.