Directions

Posted

Summer has rather suddenly turned to autumn and my daughter is starting to collect university application pamphlets, so I have been thinking once again about where I am and what I’d like to do with the last few years of my career. “Write children’s books” is top of my wish-list, but since I still need an income (not least to put the aforementioned daughter through college) I’m going to kick that can down the road once again.

  1. I have built software for companies ranging from startups to IBM and HP. On the whole I prefer smaller companies where I can see more of what’s going on and can have more influence. More importantly, I prefer working with scientists, both because I understand their needs better and because I think science is cool. I joined my present employer because I thought I wanted to write software for a living one last time, but have spent most of my time managing other people; I don’t know if that’s because circumstances changed or whether I should accept that my coding days are behind me.

  2. I’m best known for co-founding and leading a non-profit called Software Carpentry to teach basic programming and data science skills to graduate-level researchers. By the time I left in 2017 we had taught hundreds of workshops to thousands people and trained instructors in almost 40 countries; those numbers have continued to grow steadily, and during my time at RStudio (now Posit) I proved that there is appetite for instructor training in industry as well. I’m proud of this work, and I think it has helped a lot of people, but as I’ve said elsewhere, the next step has to be teaching people how to organize. I’d love to spend a few years working on that, but I have no idea who would fund it.

  3. I’ve written several books on programming, co-written a few others, and edited half a dozen more. The best known is probably Beautiful Code, which won the Jolt Award when it came out in 2007; a follow-on series called The Architecture of Open Source Applications still gets 600-1200 hits a day. I’d happily write and/or edit more books like these, both to advance discussion of software design and to give people from under-represented and marginalized backgrounds a career boost, but again, I don’t know how to make it pay: programmers simply don’t buy books any more.

  4. I co-founded and led a project called It Will Never Work in Theory that tried to build bridges between software engineering researchers and practitioners. I met interesting people and learned interesting things, but in the end we couldn’t get programmers to pay attention to evidence about their work and had just as little luck persuading researchers to study things practitioners cared about. Turning this material into an undergrad course could have significant long-term impact on our profession, but neither companies nor research agencies seem willing to put up two years’ worth of money to make that happen.

  5. I’ve been part of a few other projects along the way. I mentored over a dozen Google Summer of Code students back when working with Google was something you could do with a clear conscience, and helped start UCOSP, which gave students from Canadian universities a chance to work together on open source projects for grades. UCOSP wound down a few years ago1, which I think is a shame: while students at large urban universities have lots of opportunities to network, those at smaller and more remote schools are often left out, and I think UCOSP helped level the field a bit.

What ties all of this together is that I like helping people learn how to do things. It pains me to see someone spend days or weeks doing something they could do in minutes or hours, and delivering a lesson well gives me the same buzz that I used to get playing the saxophone. I don’t want to go back to institutional classroom teaching—marking exams isn’t my cup of tea—but I would happily spend the next few years leveling up people’s data science skills or mentoring junior programmers (especially those in research-intensive fields) who know how to code but not how to work in a team.

I think this would be useful: the surest way to be a 10X developer is to double the productivity of ten other people, and helping others is the only way to improve productivity a hundred-fold. I think that if companies and research labs were to invest half as much in leveling up their staff as they are currently throwing at AI they would see larger and more certain returns. I’d like to spend the next few years finding out if that’s true, but unfortunately, “make people’s lives a little better” isn’t something anyone is rushing to fund.

  1. The UCOSP site now seems to be in the hands of a domain squatter who has added ads for slot machines to the original content.