Last year, I replied to Tom’s question “Has software development grown harder over the last years or have I just grown sluggish?” on Twitter with these
incoherent ramblings of a greybeard, who has seen at least 3 fat-client-thin-client cycles:
As usual it depends. Just a few examples:
Spring Webflux and the “Everything has to be reactive even if the requirements don’t demand it.” fad is a bane. Just recently, I’ve been helping a client with getting Spring 5’s WebClient to work with a proxy.
Turns out WebClient uses some unusual keep-alive and max-idle settings that make some proxies close the connection before yielding a response. So, here I am in 2020 debugging and fiddling about with TCP connections. Leaky abstractions all the way down …
After at least a decade of constantly using it, I still find Spring Security and its half-baked builder pattern for configuring security settings to be utterly baffling. I can never seem to get it right on the first attempt or without consulting Google.
Configuring cloud services such as AWS still is convoluted and cumbersome. Having used CLIs literally for pretty much my whole life (starting with C64 BASIC …) to some extent I also don’t get the appeal of configuring servers with YAML files rather than shell commands.
Yes, they allow for consistent and reproducible builds but again, they tend to suffer from leaky abstractions. However, thinking about what things used to be like before AWS, it’s not that bad at all. Worst case, your API for provisioning new resources was a grumpy sysadmin …
Then again, just today, I’ve automated Angular dependency updates (‘ng update’) with GitHub Actions and CircleCI. Scheduled update checks -> pull request upon new versions -> automated build and test -> automatically merge update branch. No more cumbersome, manual updates.
Recently, I’ve also been delving more deeply into React and Node.js (with Angular and Spring Boot being my usual technologies of choice) because client requirements justify using those (embedded systems with rigid memory and CPU constraints).
If you stay clear of the “framework du jour” fad and the fatigue that results from that and just focus on the requirements instead working with these technologies is a pleasant experience: (Mostly) simple, fast, plenty of reusable components, great developer tools.