Lazyweb, a question: let's say that you could teach a "cultural anthropology" type of course about computing to first year students, to prepare them for the codebases, communities, patterns and software philosophies of the programming world. You've got about ten weeks to run it. What would you teach in that course and why?

(RTs appreciated for reach.)

@mhoye first of all, a "how to work in teams" course or ten is apparently badly needed given my experience hiring recent CS grads, so this is a great question. I lack the breadth of experience to design such a course that would cover a wide enough range of possibility. But I would start with
non-programming associated disciplines, toxic vs healthy team dynamics, work/life balance, communication styles, code review cultures (taking/giving peer critique) plus "here's what the buzzwords mean"
@mhoye I think detailed examples of several wildly different work groups would be informative. This small team is all senior level and above, they have very lightly written specs, no PM, write all their own tests, bitch a lot but are really fine, etc. This large team has UX including both functional and UI specs, dedicated QA, intricate PM process etc. This gang of adorable cutting edge loons is building a game from their various polycules spread across several time zones.

@mhoye I think about this a lot so I'll stop there, I could go on about "things I wish greenies came in knowing that aren't about computer science" for quite awhile

I mean the main thing though is software is just ideas and is made by people and so if you got into computers to avoid people you're actually about to get a rude shock, but if you like people you'll actually do great in a healthy workplace