A month or two back I was contacted by Will Billingsley, a lecturer at the University of Queensland (which I happen to live pretty much over the river from). I met him at JavaOne 2010, given his interest in JavaFX. He asked me if I'd like to give a guest lecture to a class of third-year software students (specifically, CSSE3002 The Software Process). All up there was somewhere between 50 and 80 students, so it was a far bigger turnout than I expected (especially compared to back when I was in third-year a few years back). To quote Will's initial email to me:
"Essentially we invite people from industry to pass on to students their wisdom and experience from producing software commercially. The title for those talks this year is "how is software engineering more than just design, code, and test" - but you needn't feel constrained by that -- most guests use it as a segue into what they'd really like to talk about."
"I thought you might be an ideal person to give a talk as your experience working in distributed teams, working on a product where the customers are other developers, and working on a team that's survived changes in company strategy and ownership, would give you very valuable insights to pass on."
I thought I was totally unqualified to give a talk, so I tried to push back, but Will convinced me. I decided to cover the lecture topic directly - I had nothing to sell or segue in to. Therefore, this was the first talk I've done in a really long time that didn't have any code in it, which felt rather odd. Unfortunately, given how busy I am with my day job, I didn't have a great deal of time to actually create a decent slide deck. I basically threw up a bunch of bullet points, and expanded on each slide over the hour or so my talk went for. I actually had enough content to cover another hours worth of topics, but I knew I wouldn't have time to cover everything, so this is all I presented. Totally bad presentation-foo, but it's the best I could do.
I doubt there will be much interest in the slides from most visitors to this site, but I thought for the sake of the students that I presented to that I'd post up a PDF of the slides here.
I hope in general that most other software engineers, who decide to read these slides, can agree with what I say. The suggestions are based on my experience - but I invite others to leave comments with their own suggestions and/or suggestions on where I'm wrong.