My Academic Flyby Revisited
I had a very enjoyable cup of coffee yesterday with someone I used to work with at the University of Toronto. In the wake of that discussion, and having suddenly realized that this blog is coming up on its twentieth anniversary, I’ve been thinking about what I’d do differently if I could go back and do my last academic flyby over again.
-
Between 2002 and 2010, I organized and supervised final-year thesis projects for over 120 undergraduate students. The topics were all over the map, but the ones that had the most impact were the ones whose clients were faculty in other departments at the university. (ePlant, for example, is still going strong, and has been cited in hundreds of papers.) Rather than throwing students at general open source projects or making up things of my own, I would put in time to make connections with professors and graduate students outside Computer Science who needed some programming done and have the students make things for them.
-
I taught Software Carpentry as a semester-long graduate course twice while at the University of Toronto. It was always an awkward fit: every course had to have a home department, but some faculty felt that the topics were too basic to merit graduate credits for Computer Science students1, and no other department wanted to host it. I should have pushed harder to find a way to make this work: it would have been a great way to find projects for undergrads (see the first point in this list), and there’s an alternate timeline in which the University of Toronto became Software Carpentry’s proud institutional home.
-
I shouldn’t have taken on graduate students until I had secured funding for them. This is my biggest regret: all five of the grant applications I wrote during my three years as a faculty member were turned down,2 which meant that I couldn’t offer the kind of continuity or support to my students that they deserved.
-
Finally, I made a mistake during those eight years that I repeated while booting up Software Carpentry between 2010 and 2015: I thought and acted as if knowledge only needed to flow one way. I never actually said, “I’m a programmer, so I should do all the talking,” but it sure as hell was very strongly implied. It took me years to realize that those undergrad projects and Software Carpentry could only really succeed if there was a countervailing flow of knowledge, i.e., that for every program we built or workshop we ran, there should be a lesson for us on how copyright and CRISPR work, how disciplines like medicine and law came to have enforceable codes of ethics, why some people can get away with interrupting people in meetings while others can’t, and so on. If I was going to do it all over again, I would run a senior undergrad class in which students from philosophy, business, ecology, psychology, and other disciplines spend a semester putting together a one-hour lecture for students in computer science about stuff that matters.
-
At the time, only about 10% of CS faculty used version control on a regular basis, and 20-25% of their graduate students had never used it before my course, but I digress… ↩
-
Someone eventually took pity on me and explained that since I wasn’t a tenure-stream appointment, I would always be at the back of the line for funding. ↩