But thats the point. Doing as you are told, often includes reimplementation after remimplementation in germany, not improving upon pre existing software. Not resisting useless usecases, you already know are doomed by experience, but are specified anyway. 5 versions of the same object, collected on a usb and even copied back down (remote) from customer machines.
Exampletime:
A thousand versions of a cylinder valve controller software for a plc floating around a machine builder.
Instead of writting one for each version of statefullness and interfaces to encapsulate the different usecases. (Can be done with TC3) shared by all collagues via Git.
IOpenCloseable {} and that then can be used for example for a drive home routine
DrivePointHome()
{
foreach (IOpenCloseable cylinder in allElementsInHomestateInOpeningOrder)
{
cylinder.open()
wait(cylinder.isOpen())
}
}
And there you have it. Configuration instead of programming. Reusability instead of Recreating. Testability (https://tcunit.org/).
It could all be done. It is done, good, elsewhere on the planet, daily.
In my last career we fought this mentality, to exaustion.
Now im out of it, im just waiting for someone with the mindset to swoop in, disrupt and clean that space out with the effectiveness of good software. There really is no reason to employ half a million electricians to program subpar software when you can have it better for cheap.