Not that you asked for it, but this essay is a collection of advice. Yes, I do not expect any one to heed or even read this, but as an old man, advice comes easily.
Advice to Companies: Retain your Employees
When I was young, the tech companies (and most others, as well) were changing from offering pensions to self-managed 401K plans. While I won’t argue about the merits of each, an un-intended consequence was a lowering of employee retention. At my job out of college, I realized that I could stay for a 1-5% raise on my second year, or change companies for a 27% increase. With nothing holding me back, I jumped ship. Two years later, I jumped again…and again.
Why wouldn’t I? Where is my motivation to stay?
Company Loyalty? Hardly. Since software is seen as a luxury item for many companies (“we can live with our current software for the next one to two years”), company showed their loyalty during the last two recessions of this century, by laying off much of their engineering staff.
Sure, that is Capitalism, and it fostered engineers to control their own career trajectory (some would argue that much of our open source motivation stems from this). But this transient predilection may have another unintended consequence of fostering risk.
As an industry, software development is still in its infancy. Think of the smith, following the training and best practices of generations of smiths. Every few hundred years (or thousand), a new material emerges that changes the rules, but after a few generations, the new material is incorporated into the smithing rules and tradition.
Contrast that to software engineering where many of the original guard is still alive and active.1. Plus, advances in the hardware industry and changes in the business and social landscapes, requires us to rewrite our own development rules and tradition.2
My friend and I just receive a letter from Leslie Lamport clarifying some of his positions in some papers he wrote.
When I was a young engineer, garbage collection offered by Lisp was seen as too costly compared to rolling your own in your C application. Now, rolling your own is hardly an option.