We have some code written by a pretty smart guy in 2017 on RHEL7. But he
knew MySQL RLIKE wasn't working properly, didn't document it, and coded
around it. When we upgraded to RHEL8, RLIKE worked differently. So I
feel your pain about OS upgrades.
That same smart guy left us with "perfect code," which I now have a
running list of 12 known defects, some have been remediated, some won't
be as it introduces more risk than it resolves, and some were never
documented - just fixed with snarky comments in the code.
My employer embraces CI/CD with 6 week sprints for the app developers.
This tells me they can plug in a new set of devs for the next sprint
with minimum ramp-up time. My team, on the other hand, does everything
the old way. We're not application developers - we maintain a
configuration and write utilities to assist the 3rd party product's
operation.
We're also getting a taste of what it takes to replace the two senior
people. It took me 3 years to really get the hang of this role and I've
been training my replacement for 5 years. He could probably take over,
but it would hurt the team, as we found out when I had Long COVID, with
amnesia, twice, which took me out of action for 2-3 months each time.
I'm not feeling too bad - I delivered my 10 year notice in 2017. They
can't ask me how old I am, but they can tell I'm getting up there. Yeah,
I'll go past that because I'm a money-grubbing bastard and I like my job.
Regards,
George Toft
On 7/4/2025 2:30 PM, David Schwartz via PLUG-discuss wrote:
Here’s one way to think of the impact that AI will have on the overall
programming process.
A while back I worked at a place that proudly liked to remind everybody that
they had attained “CMMI Level 2 Certification” and they were working hard on
Level 3. I’d never heard of that before, so I did some digging. If you’ve never
heard of it, here’s a link to their main site:
https://cmmiinstitute.com/
Reading over the various requirements, it seemed to me that the goal of this
was to make programmers (people) as fungible (replaceable) as possible.
Virtually every job involving software development and most IT jobs require
some time to become familiar with the project’s history, leading up to and
including its current state, before you start poking around making changes.
Since turnover of personnel is always a big issue for companies, one of their
biggest challenges is having sufficient documentation of past activities as
well as current state of things.
Reproducibility of work is a key concept, and my interpretation of CMMI goals
was to minimize the amount of time needed to integrate a new worker into a team
to the point where they can become productive.
The last job I had told me they figured it would take me 6 months of learning
to get to the point where I could start working on their main (legacy)
software. Over that time, I was just supposed to study the code and investigate
possible issue and repairs.
At one point after a few months I found what I believed was a bug. I documented
it and was able to duplicate it most of the time. But I was told flat out,
“THERE ARE NO BUGS IN THAT SOFTWARE!”
Well, yes there were. Because it had recently been migrated from Win 7 to Win
server 2012 (effectively Win 10) and this had to do with how the OS seemed to
be queueing up internal message requests. I did some research and found a very
subtle change had been made to Win 10, and no matter what I said, these guys
ignored me. Of course, nobody could explain the test data I had and even
accused me of rigging up a fake problem.
Anyway, this organizatin wasn’t interested in CMMI, but if they were, this
would have posed a big problem for them. Because part of the purpose behind
CMMI is to ensure that issues like this don’t come up.
But the place I worked earlier that was aboard the CMMI train was going all-in
to reach Level 3. That meant they put out policies like this: “Every line of
code you change needs to tie back to a specific change request. Any that don’t
will not be allowed to be pushed into a release.”
The implication being, refactoring can get you fired. And finding bugs in the
code yourself ... well, trying to fix some I found got me fired anyway.
The refactoring part really pissed-off a lot of devs there because the code was
already over a decade old and was written by people who weren’t very
well-versed with OOD/OOP and was quite gnarly. So the common practice there was
to fix up bits of code while you were fixing related code. This “no
refactoring” rule didn’t fit the aesthetics of most of their developers.
The VP of Engineering had been overheard saying something like, “I don’t trust
software developers to do refactoring any farther than I can throw them,
because it always leads to more errors!” He also didn’t trust us to write test
suites, and refused to fully staff a QA team to do it. Go figure.
Would you be surprised if I said this was the guy behind their CMMI initiatives?
Anyway, I’m guessing these guys will be jumping onto the use of AI to help do
their work, because it tends to write code that often looks like templates —
IOW, it will write the same code to solve the same problem pretty much every
time. (Just be sure you set the “temperature” setting to zero so it doesn’t
start hallucinating.)
It all gets back to “reproducibility”. AI can be relied upon to be highly
reproducible in terms of the code it writes (quirks and all) far more of the
time than human programmers. At the end of the day, I’m guessing that AI is
going to help far more companies be appraised at CMMI Level 5 than has been
possible in the past.
And those that replace most of their human programmers with AI will probably
have far fewer problems because nobody will be arguing about whether changes in
the environment can cause bugs to arise or not, because AI will refactor the
code, build tests to verify all of it, and fix it, while documenting the entire
process fully, clearly, and unambiguously — far better than 90% of most
developer can or do.
-David Schwartz
---------------------------------------------------
PLUG-discuss mailing list: PLUG-discuss@lists.phxlinux.org
To subscribe, unsubscribe, or to change your mail settings:
https://lists.phxlinux.org/mailman/listinfo/plug-discuss
---------------------------------------------------
PLUG-discuss mailing list: PLUG-discuss@lists.phxlinux.org
To subscribe, unsubscribe, or to change your mail settings:
https://lists.phxlinux.org/mailman/listinfo/plug-discuss