Hello everyone, it's not Friday, but I have an announcement
and tale that might interest you.
I’m easing into retirement.
Companies I’ve been working for are being sold, retired or
are no longer developing new software. Running out of legacy
work would drive a regular dev to seek new work, but in my
case, I declined to create a LinkedIn page, or send out
feelers through contacts for new work, because… I’m burnt out.
Why?
I learned to code in 1975 and became an official programmer
in 1981. I wrote FORTRAN, ALGOL, COBOL, assemblers and various
JCLs and scripting languages on Honeywell, FACOM and IBM
mainframes. Things were simpler back then of course because
you moved inside the ecosystem of a particular manufacturer
and had high-level support and voluminous and accurate
documentation. If you wanted to solve a problem or do
something edgy, then an answer was nearby. It was a different
simpler world, but … everything worked.
Now, well into the 21st century of IT, everything doesn’t
work. My wife often hears me shout from the other end of the
house “Everything f***ing doesn’t work”. I also only
semi-jokingly say I’ll have these words carved into my
gravestone: “Everything f***ing doesn’t work all the f***ing
time”.
Overall, what has burnt me out is complexity and instability.
I’ll break those topics down a bit.
Everything in modern IT is complicated and fragile.
Every new toolkit, platform, pattern, library, package,
upgrade, etc is unlikely to install and work first time. I
seem to spend more time getting things working and updated
than I do actually writing software. In a typical working
month I might have to juggle Windows, Linux, Android, iOS,
macOS, Google, Amazon, Azure, .NET, Python, PowerShell and
C++, and they all have different styles and cultures. Software
engineering has fractured into so many overlapping pieces that
I’m tired of trying to maintain competence in them all.
That leads naturally to the problem of dependencies.
Just having so many moving parts with so many different
versions available produces dependencies more complex than
abstract algebra. How many times have you hit some kind of
compile or runtime version conflict and spent hours trying to
dig your way out of it? (A special salute to Mr Newtonsoft
there!) Or you install A, but it needs B, which needs C, and
so on.
I often hit incomprehensible blocker problems for
which web searches produce absurd and conflicting suggestions
which don’t work anyway. All I can do is futz around and
change things randomly until things work again. I don’t know
what went wrong and I don’t know what went right.
The Web -- Browsers, HTML, CSS, JavaScript, the HTTP
protocol, JSON and REST can all burn for eternity in fusing
hellfire. About ten years ago I told my customers I refused to
write any more web UI apps. However, I was forced to do so a
few times and I’m still scarred by the horror. It’s just over
30 years since the web became public and we’re still
attempting to render serious business apps using dumb HTML.
HTML5 is the joke of the century (so far). I still lament the
loss of Silverlight.
Git -- Someone is lucky I don’t own a gun.
Fads -- An exercise for the reader: name all the
platforms, kits, patterns and frameworks that you know were
once the coolest thing and now might only be found in history
articles. An advanced exercise is to speculate on which
currently cool things will be gone soon.
Finally, here is a list of typical things that give me the
shits, just as they pop out of my head.
- Attempting to compile projects that have been idle for a
year or more will usually fail due to changed dependencies
or deprecations and it can take hours to get them going
again.
- I develop and test something with great care, then
deploy it and it crashes. This is part of the general “it
works on my machine” disease.
- I can stop successful work on Friday night, then resume
on Monday morning and everything utterly fails.
- My USB microscope and music recording both stopped
working recently, and it took me a week to discover that
it was a block by Windows 11 app security (I thought it
was a hardware or incompatibility problem due to lack of
clear error messages).
- Security! Walls, barriers and hurdles of security
everywhere to crash through. Yes, I know we need security
everywhere to stop the black hats, but it’s also stopping
developers. Lord knows how many times I’ve hit run or
debug on my own PC and I get “Access denied” and hours of
research will be required. I’m also fed-up with ceaseless
2FA requests via email or SMS.
- Everything about mobile devices. The ludicrous variety
of devices and brands makes app development a nightmare.
Then you must struggle through the variety of labyrinthine
publishing processes.
- My final entry is simply the tiny “thousand cuts” that
torture you during development: version mismatches,
inconsistent behaviour, strange errors, editor quirks,
missing files, etc. All the little personal problems that
slip between the cracks of bigger issues I’ve previously
mentioned. Your mileage may vary.
In summary, being a software engineer is now so exhausting
that after 40+ years of a generally enjoyable career immersed
in programming and computer science I’ve reached a point I
never thought would arrive… I’m burnt out. Even working on my
hobby projects has become a burden because they suffer from
many of the impediments previously mentioned.
I still plan to attend some upcoming conventions and
Meetups, and I’ll be watching the forum, but my posts will
diminish because I’m probably out trying to prevent the garden
and house from disintegrating back into the earth from whence
they came.
Greg Keogh