All that said, I feel like documentation is getting better in newer technologies.
Automotive engineers in 2022 are still creating new designs of water pumps and alternators. The new design meets some new requirements for the particular application, be they thermal, spatial or cost-related.
The date picker designed in 2022 is to be used with 2022 applications, IDEs, toolchains, etc.
Software engineering is not a craft. It is a discipline. If society is paying people these exorbitant sums to be the equivalent of digital Etsy moms, we're getting a raw deal.
> And yet, those people do not get paid hundreds of thousands of dollars a year, believe their work to be at the height of economic efficiency, or think themselves generally more intelligent than the average person.
Designers can be payed more than a software engineer. And we don't know what they really think but there are plenty who think that they are better than anyone and are doing the society a big favor but people simply don't understand. (You don't have to go to far away from some software industry to find the most egregious examples of those :D)
Regardless, programming is a craft. And programmers are essentially crafts(wo)man. Everything's handmade, there's only unicates, there's no formal education besides some guild rules (aka coding interviews) and the science of computing which tells you how and why a program works or doesn't but not how you create it.
There has been some research into actual engineering practices for software. But the underlying science often gets ridiculed, not applied, by practical programmers.
I do actually. I am retired now, have 25 years of experience, and a physics degree from a prestigious college. I built control systems for microscopes, founded an industrial control systems company, wrote linux drivers for tuner cards, and built downhole fluid simulation software used on oil rigs. I also did every other "soft" type of software development you can imagine.
But there's tons of rules, if the industry would bother to learn. Comparing software developers 25 years ago when I started to today is embarrassing. The question of the OP is probably not "does the software industry learn?" but rather "is the software industry forgetting things it used to know?"
A few things that could justify rebuilding the wheel as it were:
1. The thing doesn't work for the environment it's being used in (corporate network, obscure mobile browser, screen reader, whatever)
2. The thing doesn't work for non-Gregorian calendars
3. The thing doesn't work consistency across various types of clients (this reason gives me some nostalgic flashbacks to the early days of jQuery)
4. The thing is fine, somebody just wants to see how the sausage is made to learn of it
There's probably other reasons one would want to re-invent a common UI element. It's really hard to say how objectively good or bad a particular attempt is without context and more clarity on what metric it's being judged by.
People in our industry need to know how to make the fundamentals from almost-scratch. In electronic engineering I learned how to bias transistors and build RC-filters. Heck, in chemistry class we even learned how diodes and resistors are made. When I studied music I learned scales, chords and rhythm... why should I, if I could just download some WAV loop off the internet, or sample some old song?
I don't see why software has to be special. Haven't we commoditised the profession enough?
But a new era has arisen, with a new God from this combined mind. Copilot rises and casts a great shadow on us all.
In past years, children were born with monads in their minds, functors at their fingers. Teens rose from sleep speaking in bytecode and LLVM IR. But now that is lost, mankind’s combined mind is being eaten by the power of Copilot and the children’s fingers only hit Tab.
We should never have known each other so intimately. The risen god of our inbred mind is a dark spiral. Thought itself fades.
Similarly in software there is not "one size that perfectly fits everybody". Therefore there is much need for customization.
When you write software you are in effect not only creating the program. You are creating a system that consists of the computer, its program, and its user. The way the task is divided between what the human does and what the computer does can be done in very many ways. In some systems that results in a system where users need to do more but thus also have more options for controlling the system. Therefore there are so many different ways any "applications" can be written.
No program is an island. It is something that must interact with its users. It is always designed to be a part of a bigger system consisting of itself and its users.