Apologies to anyone who has seen an incomplete version of this contribution 
before and for my delay in correction (things have been a bit hectic), but it 
was sent prematurely by an system unfamiliar to me...

On 3/05/2024 12:40 pm, Roger Clarke wrote:
And I rapidly came to the conclusion that the number of people in the world who 
had the necessary characteristics to be OO programmers numbered way more than 
the number of superprogrammers, but way fewer than the number that we needed, 
and way fewer than the number of people who, one way or another, write in (at 
least partially) OO languages.

And I can see little evidence of tools, techniques and training that overcome 
bad, and ensure good, practices and products.

(For one thing, supervision and management of software dev has been very thin 
on the ground, partly because it's not easy, but not least because it's 
expensive, and quality isn't valued).

David, others, how do you see the scene?

You might want to differentiate between the proportion of software that is 
developed within a software engineering context, and the rest ...

The really costly failures causing the most reputational damage probably happen 
when system requirements, basic architecture, cost and timeline are not 
properly thought through and documented before contracts are signed.  Ideally, 
a System Requirements document signed by both parties should constitute an 
Appendix to the prime Contract.

Scenarios leading to failure at this level are a separate topic, and I can think of a 
couple of great examples.  Many Linkers doubtless remember the old joke about the 
"phases of an IT project" from initial euphoria to eventual failure, blaming of 
the innocent and promotion of the guilty.

Unfortunately software development tools and techniques seem to have responded to 
the usual cost & time pressures in the usual way.  Almost by definition, 
generalised development packages intended to increase productivity tend to isolate 
developers from their generated code, but without improving the quality of the 
final product.  I'm retired now and probably rather out of touch, but some GUI 
screen-design packages used to turn out woefully bloated HTML.

Top-down design, OO programming, techniques like the finite state machine (FSM) 
model, reuse of proven off-the-shelf O/S software modules, and languages such 
as Java help produce efficient, reliable and maintainable code.  The DEC VMS 
software stack featured a rigorously enforced calling standard across all 
languages, and integrated object linking and embedding so several languages 
could be used in one loadable image.  And IMO the VMS error-reporting 
architecture puts Linux and Windows to shame!

But techniques intended to increase productivity and reduce cost such as agile software 
development are fraught with risk unless managed by a strong and experienced project 
leader.  It sometimes means the system requirements are "agile" too, which 
makes matters worse.

AI is an associative machine.  I can see they'd be great in specific applications, for 
example the initial scanning of radiographic images with the "diagnostic" 
result to be confirmed later by a Radiologist.  But the scope for disasters seems almost 
without limit.

_David Lochrin_
_______________________________________________
Link mailing list
[email protected]
https://mailman.anu.edu.au/mailman/listinfo/link

Reply via email to