too little, too late
People have been walking away from LinkedIn for some time, once they're gone, they're gone.
122 publicly visible posts • joined 18 Oct 2009
Here is yet another Apple event regarding which I can only barely contain my indifference. So long as I can continue to keep Siri and Apple Intelligence turned off, I guess it's okay. I do wish Apple would quit making the UI wriggle and instead concentrate on fixing the bugs and security holes in their apps and OSs. It would be nice to return to the days of "it just works."
As a customer, you are not in control of the chargeback algorithm. Actions you take to reduce your bill will be met with counter-actions to restore the status quo.
I have witnessed organizations chasing their chargeback algorithm, attempting to cut costs by dancing around the edges of the rules. This works until those in charge of the algorithm notice your dance moves and put a stop to them. They can do that, it's their algorithm.
...JCL isn't. CICS isn't that hard, it's got an API that is well documented and pseudo-conversational programming style isn't that far off from server-side web applications. DB2 is just another RDBMS if you're an applications developer. ISPF contains concepts foreign to most people under 50, but ZOWE exists. IMS is so far out there it isn't even visible from here.
People have begun pointing out that it isn't COBOL that's the roadblock, it's all that other mainframe *stuff* that doesn't have a Linux or Windows analogue. A file system without directories, required disk space allocation, dataset types.
That's just the applications side of things, the systems (admin) side is *completely* different.
Rewriting COBOL as some other language? I mean, if you want to, I guess, go ahead; I don't see the ROI. If the goal is to be free of the mainframe because of cost, be sure your cloud (because of course that's the target environment) costs are cheap enough to make it worth your while.
I'm startled that > 10 years experience is the definition of an older developer. I think of that as just entering middle aged developer territory.
Here's something no one tells developers in school: it takes _years_ of experience to become good at software development. This isn't one of those 10,000 hour exhortations, this is about the fact that experience is acquired over time and that experience is valuable.
It takes _years_ to learn your own common mistakes, the stuff you should go looking for when your code doesn't work.
It takes _years_ to really learn some software tools. Not to gain the superficial knowledge of how to get common tasks done, I'm talking about how to _really_ use the tools to prevent flaws from creeping into your code. This also points to a hidden cost of switching tool sets.
It takes _years_ to learn how to write code that doesn't just work, but works well and is also maintainable.
It takes _years_ to learn when to walk away, take a break, take a stroll, to stop pounding the keyboard because you're not making any progress. This is in direct opposition to that 100 hour a week work ethic, but it's a necessary skill - knowing when to walk away and still not give up.
It takes _years_ to learn how to test properly. Too often the agile "test early, test often" maxim demonstrates [Goodhardt's Law](https://en.wikipedia.org/wiki/Goodhart%27s_law), with a large number of tests all covering the same section of the code base. There are also cases of developers simply coding unit tests to `return true`.
It takes _years_ to learn not to reinvent the wheel. If there's an existing function or subroutine to do what you need, use it. If it doesn't do quite what you need, maybe it needs maintenance, or enhancement, or maybe what you need can be implemented as a wrapper around it.
It takes _years_ to learn about the trade-offs that play into the decisions of how write a piece of code that reliably and securely does what it's supposed to do, performs well, and can be understood and maintained by people who aren't you.
Original: https://github.com/cschneid-the-elder/rants/blob/master/why-software-sucks-000.md
>> "SSA website went down because of atypical high volume and it’s a 1979 platform,"
I don't believe a 1979 mainframe would still be running today. Support, spare parts, etc. Possibly the speaker refers to when the software was originally written.
I do believe IBM mainframes got a TCP/IP stack in the early/mid 1990s via the Open Systems Adapter, I think.
I know for certain that current IBM mainframe resources can be accessed via REST or SOAP web services because I've written the CICS/COBOL code to make it happen.
I would really like to find out what the actual problems are, the actual technology stack in use, because I used to be part of a team that solved these sorts of problems and thus it's a point of interest
I would think it difficult for the data to have value if the systems that produce it have none. As I understand it, at least where I reside, software development is allocated to the expense side of the ledger. I am not an accountant, nor am I a lawyer.
Also, everyone should start managing their "AI" prompts with git.
>> Can you register for both/all parties to take part in all primaries?
It depends. There are open primaries, closed primaries, semi-closed primaries, and top two primaries.
First, good enough programming. We were all taught in the 1990s that good enough was good enough when Windows 3.x took over the world. It was okay that it crashed, sometimes multiple times per day. Crashes are okay so long as they don't reach a certain threshold, which is spongy and subjective and the subject of whim. Oh, look - flying toasters!
Second, Deadline Driven Development. Of course the software has bugs, but it's good enough (see above) and we've got a deadline! A meaningless deadline! A meaningless, arbitrary deadline!
Third, management engagement. As covered elsewhere in this comments section, software reliability is just one of management's many concerns and it may very well not be at the top of the list. The top of the list of course is the current deadline (see above).
Fourth, testing and code reviews. This requires a time investment that, given deadlines (see above), is one many organizations believe they cannot afford. This is a management and cultural issue.
Also, let us not forget that use-after-free and wild pointers are not the only categories of bugs in the world.
I did not attend the conference in question, so I don't know the entirety of what Ms. Easterly said. But the phrase "flawless code" does not appear in any of the article's quotes of her.
Drop the straw man of "flawless, perfectly secure code" and start with "more reliable, more secure code." Close the holes, fix the bugs, one by one. It takes years, and it's generally thankless. Welcome to your tech job future.
...who told me he had a user area pushing back against paying for database image copies. I explained these were to be used in case of a disaster. He replied, "I'll tell them it's like an insurance policy, something you pay for but hope never to need." No more pushback. Sometimes, people are sensible.
This seems like the outsourcing trend all over again.
Management has been saying "Who will rid me of these turbulent programmers" at least since the 1982 publication of _Application Development Without Programmers_.
I have no doubt that many unfortunate IT staff will lose their jobs, and those that remain will be told they have no excuse for not taking up the slack because they have been provided with Copilot or some other such tool. Time will pass, there will be turnover, and eventually there will be another hiring wave.
Kind of like insourcing after the outsourcing.
>>
I once worked on a project in which a software product originally written for UNIX was being redesigned and implemented on Windows NT. Most of the programming team consisted of programmers who had great facility with Windows, Microsoft Visual C++ and the Foundation Classes. In no time at all, it seemed, they had generated many screenfuls of windows and toolbars and dialogs, all with connections to networks and data sources, thousands and thousands of lines of code. But when the inevitable difficulties of debugging came, they seemed at sea. In the face of the usual weird and unexplainable outcomes, they stood a bit agog. It was left to the UNIX-trained programmers to fix things. The UNIX team members were accustomed to having to know. Their view of programming as language-as-text gave them the patience to look slowly through the code. In the end, the overall "productivity" of the system, the fact that it came into being at all, was the handiwork not of tools that sought to make programming seem easy, but the work of engineers who had no fear of "hard."
<<
- Ellen Ullman
https://www.salon.com/1998/05/12/feature_321/
https://www.salon.com/1998/05/13/feature_320/
The mainframe makes a comeback as people realize that JCL is easier than an unsteady stack of cloud configuration tools. A PCM (Plug Compatible Mainframe) industry re-emerges, with Microsoft and Apple vying for dominance. IBM Z versions of the commonly used office suites are produced by their respective vendors as IBM reveals AI powered transliteration tools to convert C, C++, C#, and most other semicolons-and-curly-braces languages to COBOL. Amazon reveals their cloud was really several geographically dispersed Sysplexes of mainframes all along.
According to a blog entry by Mark J. Barrenechea, OpenText's CEO & CTO, regarding IBM's complaint the "Southern District of New York has just issued an Order, dismissing the breach of contract claim altogether."
I cannot find any reference to the order or indeed the case itself on the court's website but that may just be my lack of navigational skills or familiarity with legal terminology.
There remains Count I, the copyright infringment.
Productivity has always been the justification for the prepackaging of programming knowledge. But it is worth asking about the sort of productivity gains that come from the simplifications of click-and-drag. I once worked on a project in which a software product originally written for Unix was being redesigned and implemented on Windows NT. Most of the programming team consisted of programmers who had great facility with Windows, Microsoft Visual C++ and the Foundation Classes. In no time at all, it seemed, they had generated many screenfuls of windows and toolbars and dialogs, all with connections to networks and data sources, thousands and thousands of lines of code. But when the inevitable difficulties of debugging came, they seemed at sea. In the face of the usual weird and unexplainable outcomes, they stood a bit agog. It was left to the Unix-trained programmers to fix things. The Unix team members were accustomed to having to know. Their view of programming as language-as-text gave them the patience to look slowly through the code. In the end, the overall “productivity” of the system, the fact that it came into being at all, was the handiwork not of tools that sought to make programming seem easy, but the work of engineers who had no fear of “hard.”
- Ellen Ullman “The Dumbing Down of Programming”, Salon, 1998
Maybe you're fine with tightly binding yourself to Google (or Amazon) instead of IBM. But do it with your eyes open. Vendor lock-in, from the vendor's point of view, is a feature.
The parallel test scenario seems like a good idea.
Perhaps taking the results of the Stack Overflow developer survey as representative of whatever point you would like to make isn't as persuasive as you might imagine.
Just as an example, you won't see much DB2 or IMS or VSAM because mainframe developers mostly don't ask their questions on SO. They usually have a support structure built into their organization.
JES3 is now supported and enhanced by Phoenix Software.
I do find it amusing that any government activity is met with cries of "privatize it all, fire all the bureaucrats" and any government privatization effort is met with cries of "outsourcing firms are all crooks" accompanied by stories of their incompetence, contract overruns, nepotism, etc.
If you're going to reduce costs by chasing the chargeback algorithm, you must commit to chasing the chargeback algorithm. Whatever dance you do around the edges of the rules, you must be prepared to alter your steps as the rules are altered. And you are in control of neither the nature nor the rate of change.
There's more here but it's primarily mainframe-focused, which tells you how long this issue has been extant.
By all means, add flexible configuration options to ignore categories of warnings, sub-categories, individual warnings, or any of the preceding in various contexts. Then add the only option anyone in serious need of these warnings will use - ignore all warnings. Kind of like those unit tests that just return true.
When something bad happens software-wise, the first question asked is often "What changed?" This has been going on long enough for "Changes break things" to become an aphorism (it doesn't follow logically, but that's folklore for you). Which led to, "If we make no changes, nothing bad will happen."
Except of course, "What changed?" is only one of the questions to ask; another is, "What didn't change that should have?" The latter has not yet entered the zeitgeist.
And here we are.
The sad truth is, changes too often result in something bad happening. Not making changes also too often results in something bad happening. Things are broken, and no one with the power to fix them has any interest in doing so as they make a tidy living off the current state.