I graduated in the early 1970s and, like many people around that time, did not relish the thought of a corporate career. Universities seemed to me to be more interesting places that had liberal views, accommodated eccentricity, gave people time to think and to pursue their own interests. I therefore liked the idea of working in that environment and didn’t really think much about salary or whether I would earn more or less in industry.
Since then, I’ve worked in a number of universities and also spent time in industry and, to be honest, the universities offered a more amenable environment. Some of my colleagues in industry earned a bit more than me but not life-changing amounts so leaving for a higher salary was never an issue. I have no idea if I would have earned more or less in my lifetime if I had chosen to work in industry – probably less if I had wanted the same level of pension offered by the university scheme, although these are not things you think about in your ’20s.
Now, however, both universities and industry have changed. Universities are, frankly, more boring places that are driven by corporate goals and are much less welcoming to the eccentric scholars who published little but were stimulating conversationalists. Its all about outcomes, line managers and targets now – rather like a corporate environment. Industry too has changed too – to attract the best people, large companies such as Google offer a stimulating and engaging environment as well as much higher salaries than are paid in universities.
The other major change is even more significant. In the 1970s, there is no doubt that the most exciting work in practical computer science and software engineering was going on in universities and research labs. Working in industry mostly meant programming in FORTRAN or COBOL or doing ‘systems analysis’ -I was never very sure what that meant. Now, the challenging software engineering problems all stem from scale – dealing with vast number of computers, building systems with thousands of distributed components and so on . Universities, unfortunately, simply cannot afford to create such large-scale experimental environments and most of the leading-edge work concerned with scale has moved to companies such as Google and Amazon.
So, we have a situation now where companies have a more relaxed working environment, pay much more and provide more interesting work. For the best graduates who have an interest in the practical aspects of the subject, this is a no-brainer. Why work in a university when you can be paid a lot more to do more challenging things? Add to that the academic ‘publish or perish’ pressures, a heavy teaching load and university bureaucracy and an academic career doesn’t look that attractive.
The outlook for academic software engineering and other practical aspects of computer science therefore doesn’t look that good. There will always be people interested in the theoretical aspects of the discipline and they will prefer a university environment so we are not looking at the end of computer science as an academic discipline. But if we can’t recruit the most able software engineers, it will become increasingly theoretical and out of touch with what is going on in the world.
I therefore fear for the future of practical software engineering in universities as my generation ages and retires. The debate over whether CS is an engineering discipline or a mathematical science will be settled once and for all – by default, as engineers simply won’t be involved.