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.
Recent Comments