“Cold-blooded software” concisely expresses something I’ve thought about for years. Modern software based on HTML/CSS and frameworks works great so long as maintenance is ongoing. But for software I write for myself, I much prefer cold-blooded software. I want to write it today and have it still work in five years, even if I haven’t done any maintenance. Professionally I work in an area with similar needs. Gonna be adding this term to my vocabulary.
You’re speaking of implementing yet another system of a familiar kind, I.e. a new project. The OP says that generic design works for new projects. He’s mostly talking about designing new features to be added to an existing system, in which case the design has to be contingent on the existing system.
Software developers like to think they are special. They aren't. Software, from a planning perspective, is not much different than physical construction.
When it comes to extending an existing application it really comes down to how well the base application was planned to begin with. In most cases the base application developers have no idea, because they either outsourced the planning to some external artifact or simply pushed through it one line at a time and never looked back. Either way the person writing the extension will be more concerned with the corresponding service data and accessibility than conformance to the base application code if it is not well documented and not well tested in a test automation scheme.
Fans might also look at Steven Brust's fantasy Dumas pastiches, especially The Phoenix Guards, set in the same world as his Vlad Taltos novels. Truly a hoot.
Yeah, I guess that's what I meant with "impractical". Sure, if you had your enemy on the other side of a battlefield, or outside the walls of your castle, muskets were great. If you met them on the streets of Paris, not so much...
If you planned the meeting with the enemy in Paris you might bring a musket, but you wouldn't carry one normally. I know lots of gun advocates and none of them carry a long gun with them except when they are planning on using it - they carry a small pistol for emergencies, but not the long gun. (they might keep the long gun in the truck, but not on their person). If I was planning on shooting someone in Paris I'd want the more accurate long gun (assuming I could get it to where I need it), but I'm not going to carry it when I'm "our for coffee" and happen to see my enemy.
The novel is more about politics. There are very few scenes where I'd expect a modern solider of any nation to have their gun with them either. (though a few scenes where I would expect one they often don't seem to have them)
And in fact, professionally, I still live in the good old days. I code in Java 21, I minimize dependencies, and I use an IDE that can do the heavy lifting when I want to refactor something…which is often. I produce a .jar that gets installed with a loader script rather than in the cloud. And it all works, and it’s *stable*.
This is something I have known (but not by this name) since the early 90’s. A proposed feature a customer brings to you is almost never what they need. You must iterate with them to discover their real problem and move on from there.
I left a project once because the sponsor wasn’t letting us interact with the real customer to find the real need. That path only leads to doom and despair.
This is why I love building things for internal users. I can just ping them on slack, and not have to go through layers of communication, or worry that I'll be over-promising something to a paying customer.
reply