Teaching The Last Ten Yards
Dear Web,
I’m teaching CSC301: Introduction to Software Engineering for the second time next term, and would like to do a better job than I did this time around. I’d like to have at least one lecture on the “last 10 yards” of software development, i.e., getting stuff into production. In my mind, this includes making the software installable, administerable, and (remotely) diagnosable, building and testing the installers (or whatever you’re using for deployment), designing it to be upgradable, building and releasing upgrades, and so on. I’d like to be concrete — I don’t think high-level handwaving is very useful, since third-year students won’t have enough practical experience to translate general guidance into what they should actually do next — but I don’t want it to be yet another RPM tutorial.
So: what should I teach? And what should I set as an assignment? A lecture is 50 minutes, so that’s 20 slides with half a dozen points each (multiply or divide by some made-up factor to translate code examples into bullet points). What do you do to translate “works for us” into “customer is using it happily”? And if you have seen any lectures on this topic, I’d be grateful for pointers…
Thanks in advance.
Greg,
This is a great idea! I wish I knew how to do this stuff as I always seem to abandon my projects at yard 11. Possibly because yards 10-1 look so unapproachable.
Something that comes to mind though is database upgrades. Far too often software, especially FOSS, is released under the assumption you dont mind wiping your DB and starting from scratch. It would be a cool assignment if you (read Greg) wrote a small application that used a simple SQLite database and required them to implement some sort of feature that required a schema change, and hence a sane database upgrade path.
Just an idea… Good luck.
J.
Good idea — now, what do I teach in class before handing out that assignment?