Next-Generation Communication and Software Engineering
A couple of years ago (summer of 2003, actually), I noticed something that's been nagging me ever since. When I log into a computer, the first thing I fire up is email. When my students log in, the first thing they run is an instant messaging client. They keep IM running all the time, just as I keep my email client up, and whenever they run into something they don't understand, they're more likely to ask one of their buddies than to ask Google.
Now, I don't know how this is going to change the way people develop software, but I know it will, just as email did. Just today, for example, I:
asked a guy in Germany whether the documentation for his open source library was accurate;
searched the archive of the Python Developers' List to remind myself of something I worked on in 2000;
sent a stack trace to another developer in Boston;
arranged meetings with three different teams;
apologized for missing a meeting with a fourth team;
triggered a complete system build by sending email to a daemon process running on a machine in B.C.; and
received a reply telling me that some code I'd checked in didn't compile on BSD (missing header files...).
None of this would have happened if my generation didn't take email for granted: it might have been technically feasible, but we just wouldn't have thought to do it. The teenagers and twenty-somethings in my class take IM for granted; the only thing standing in the way of them being really creative with it is that dinosaurs like me still make the rules. What will software development projects feel like ten years from now, when they're in charge? If anybody knows of creative uses of IM in software development, I'd be grateful for pointers.