Next Steps

I'm now officially back on the job market---I've enjoyed my year of gainful unemployment, but for a bunch of reasons, it's time to line up a steady income. I'm interested in anything that looks fresh (fresher than porting 100K lines of C++ to 64-bit architectures and debugging LDAP integration), and that might make the world a better place.

More specifically, I'm interested in the intersection between social software and software engineering. Can we use ad hoc tagging to link requirements to test cases and vice versa? And if we do that, will developers actually start reading and writing requirements? What about integrating version control and weblogs, so that (for example) if any of the .rss files in my working copy of a project are updated when I sync with the master repo, the contents are automatically fed into my local blog reader? (Jon Pipitone built a prototype of this for me three years ago; it was kind of cool, but he moved on, and I never explored it further.)

And what about IM? The first app I run after logging in is email, but all of my students run an IM client, and are constantly chatting with each other while working on assignments. If every project comes with a permanent floating conversation, can we retrofit threading and searchability so that the content is as useful as email list archives? Can search engines and/or tagging and/or something else be used to partition conversations to form clouds of discussion around requirements, test cases, and so on?

Similarly, some students here fire up SubEthaEdit in a class and take a single set of notes collaboratively. Does that scale? Are the authoring patterns the same as they are at Wikipedia and other asynchronous co-authoring sites? And can we apply the technique to make software development more efficient?

Wanting to explore these ideas was one of the motivations behind DrProject. I figured that once we had hundreds of students using basic teamware routinely, we could start introducing new elements, or modifying existing ones, to explore new ideas. The other motivation, of course, was to expose students to the kind of groupware that real software teams use to coordinate their work. Bug tracking that integrates with version control that integrates with the wiki and the email list---it should all be part of everyone's undergrad experience. If some enlightened being chose to support it, I think it could have a real impact on undergraduate software engineering education.

My other long-running interest is transferring skills and knowledge from gearheads to scientists and engineers. Some time in the mid-90s, I realized that the real bottleneck in computational science isn't a lack of CPU power---it's the fact that most scientsts have never been shown how to program. They get a first-year course in C, and (maybe) another course in numerical methods, and then they're expected to discover or invent everything else on their own.

I'm now teaching a course designed to introduce non-Computer Science grad students to the programming and data crunching skills they need to work more efficiently. I think it's going pretty well, and I'd welcome a chance to polish and extend it. (The report Jon Udell wrote for the original Software Carpentry project several years ago is just one indication of how much more could be done here...) The problem, of course, is finding someone to fund it...

And then there's undergraduate teaching. Over the past three years, I've supervised final-year projects for 60 students, who have worked on everything from extending the DrJava debugger to Internet censorship monitoring tools, automated testing of J2EE applications, and 3D visualization of falling rocks. This past summer, I mentored Chris Lenz's project for Google's Summer of Code initiative, and then organized a series of articles about SoC for Doctor Dobb's Journal. I'd really like to find a way to scale that up, and get the word out to students who aren't already involved in open source. In particular, I'd like to try to get the ACM and IEEE involved in recruiting and match-making, and find ways to get students course credit for working on real open source projects. Google doesn't seem interested---if someone else is, I'm easy to find ;-)

Finally, there are the blue-sky options: extensible programming systems, turning JavaScript into a credible command-line scripting language, and, well, pretty much anything else fresh that pays my bills without straining my conscience. If I sound like what you're looking for, please drop me a line.

comments powered by Disqus