Since I wrote a post about looking for a job, a few people told me they were interested in the reasons why was I not looking for a professor position. After all, the typical procedure for someone in my situation (a PhD with a postdoctoral fellowship under his belt) would have been to apply to as many professor and research lab positions as possible. Right now, I should be flying all over the continent, presenting my work at universities, and trying to get one of those elusive tenure-track positions somewhere or other—perhaps taking another postdoctoral fellowship (or two) if the professorship does not materialize.
However, I decided to step out of that treadmill when my time at the University of Victoria runs out. There are many reasons, but three stand out: I became a father, I got tired of the Ponzi scheme dynamics of the academic career, and, most importantly, I lost faith in the value of much software research to society.
First, parenthood. Among other things, parenthood meant, to me, that my partner and I should be more selective of where we’ll live, where are our friends, how much will I need to travel, and to what extent can I balance work and personal life. We’ve made friends in Toronto and in Victoria; uprooting ourselves again, perhaps a number of times until we finally settle, is unappealing. Furthermore, I now like keeping my evenings and weekends to my family, and to minimize travel. All of this does not agree with the demands placed on young computer scientists today: there are proportionally very few positions available, and if you want to get one, you might need to jump yearly from postdoc to postdoc, and from city to city, perhaps from country to country, and to work overtime to beat your friends to one of them—and once you get it, you’ll need to sacrifice even more to satisfy your tenure committee.
I don’t think it was always like this, for Computer Science researchers. From what I have heard (I don’t have concrete data), the field expanded pretty rapidly some 15 years ago, and for a while universities were grabbing new doctors as fast as they could. But CS enrollment took a huge hit after the bubble burst, and it has not recovered. As a result, university demand for new professors is pretty low—or even negative, in some cases: the positions of retired professors are not being refilled. The university keeps churning new doctors, though, and these doctors are taking postdoc positions because there’s nothing else available, and they build up their CVs so that new grads almost certainly need to engage in the same dynamic themselves if they are to compete. The postdoc life in North America, by the way, is certainly more comfortable than that of the graduate student, but it still does not compare to that of the industry professional. Before you get that professor position (if you get it), you’ll spend about ten years of your life, at least, earning a fraction of the salary of your wiser college friends. The skills you’ll learn in academia will also be a tougher sell outside of it than the skills you would’ve learned in industry (though I think they may be extremely valuable skills, they are not necessarily seen that way out there). All in all, there does not seem to be a strong financial case to be made for the academic path at this point in my field.
I could put up with all of that, actually—with the uprooting and the overtime and the elbowing and the living-at-the-poverty-line—if I was convinced that what we are doing in Software Engineering research is important to humanity. But over the past few years that belief has almost disappeared. The academic structure, at least in my area, only rewards benefits to society nominally; in practice, they are usually nowhere to be seen. You can scour our top publication venues for usefulness, as I do, and find, often, very little to report. (Sadly, you could scour my publications and come to a similar conclusion…)
This problem of usefulness to humanity exists when Software Engineering research fails to be pertinent, but sometimes also, ironically, when it succeeds: one of the goals of our research is to improve the efficiency of software companies, and for a civilization mindlessly depleting its resources faster than ever, it’s unclear whether the net impact of improving the performance of a software corporation is positive or negative to society. There is of course an argument to be made about indirectly aiding progress, but I’m skeptical of it. I only have one life, and if I’m going to put myself and my family through the stuff I described above, I want to make sure that it is for a good reason.
Now, I said that my belief in the usefulness of Software Engineering research has almost disappeared, and that “almost” is important. To be sure, some people working on this field are admirable, their work is fascinating, they tirelessly swim against the stream, and we’re indebted to them (you know who you are; don’t make me name you!). When I think of them I start second-guessing myself: should I not stay and keep trying to use my skills in meaningful problems? Am I not acting precipitously? And the empirical bent of much of our research today brings it closer to applicability—am I not giving up too soon?
Perhaps, but in the end, I’m leaving the university because I have not found a sustainable way to stay and help (truly help) fix the world, and I lost my patience. I’ve resolved to work for an organization that is actually built around that purpose, ideally, or for one that makes it easy for me to do it in my personal time. Given the current state of my field, either will bring me closer to my goal than pursuing a professorship.
Any prospects yet?
Prospects, yes—but nothing concrete to report yet…
[...] explains his reasons in this post (mandatory reading!) but he is not alone. In the last couple of years, other researchers have used [...]
I would like to try and address the “contribution to humanity” part:
Maybe I’m a bit less cynical, but I think that research into software engineering offers some of the only ways in which we can tackle the enormously complex world we have built for ourselves.
As you know, “fixed-function” devices are getting rarer, and everything is getting “programmable”. This means that the operational(aka non-functional) requirements like security and reliability are getting harder to nail down.
We have been in permanent “crisis” mode for decades and I still haven’t come across any convincing [collection of] methods that even hope to offer a way to tame the beast.
Our understanding of scaling software development is still being broadened and I’m particularly excited by the resurgence of functional programming methods now that computing power has caught up.
In fact, to me, that is the single most amazing part of the software field. Imagine if you were a civil engineer in a planet where the gravitational constant, planet mass and the position of the planet in the solar system changed every 5 years. What kind of crazy bridge designs would you have to come up with in this situation ?
These are the current conditions under which we develop software. Awesome, isn’t it ?!
Excellent post Jorge!
You are much more articulate than me, but your post summarizes the same feelings I had after finishing my PhD (including being a father and the importance of family).
While I learned a great deal during my time at both the University of Victoria and the University of Waterloo, the act of ‘doing’ has taught me an order of magnitude more than the act of ‘researching / studying’. I do think research plays an important role, but the speed at which ideas get studied / analyzed / disseminated, in accademia, is unbearably slow. Research groups at companies like Google are focusing on today’s problems, not simply sticking to problems they know.
Real change requires real courage, and unfortunately I’m not sure the SE research world even wants to change.
Thanks Ian—I always meant to ask you why you switched to industry, and I suspected similar reasons…
I should point out that I learned a lot from Peggy. Before I started my PhD I had a very hard time writing and organizing my ideas. I could not do the job I have today without my PhD (working remotely requires very strong written communication and analytical skills). But most of what I learned in my PhD had very little to do with software engineering.
I stayed in school because I wanted to learn more about SE, but in the end, I learned what I really needed to know. It’s funny how these things work out. Do what your passionate about and good things follow.
Ditto.