Several years ago I worked in ad ops for one of the biggest publishers on the internet, making a bunch of ad placements by hand using Dart for Publishers, which was a dreadful product. I also was taking a night course in Java mostly for fun. At that point I didn't even know what functional programming, Big-O notation, or any of your other highfalutin' CS stuff was.
All of the company's ads (thousands of different line items at any given time) had been entered by hand in to Dart. Things like "make every add weight-based-bulk with weight 100", etc.
I wrote a craptacular Java app using Swing and the Dart API to get a handle on them. I mean - this thing was AWFUL. "Paste your username and password in to this box and type the name of the site you want to work with in that box and click something in this row of 14 buttons" level stuff. They used it to fix their waterfall.
The first month it was an extra 80 grand or so in revenue. The next month I had a new job.
This is based on what I learned in a few months of tinkering as a kid, and a few months of a Java course at Ohlone College in the east bay.
Perhaps you can provide your own, more helpful, definition of useful? Most of what's "useful" is taking something that was a pile of godawful spreadsheets and making it manageable; not something meant for consumers.
Doesn't your anecdote actually support my primary point, which is that a programmer with limited knowledge and experience will typically produce poor-quality software? (Or, to use your own terms, apps that are craptacular and awful?)
An application, in my mind, is truly useful when it not only fulfils a user requirement, but is also dependable, scaleable and maintainable. It's not best practice for a business to base a process around some jury rigged POS that will be thrown away in horror when an experienced developer eventually gets a look at it.
Eh, it was dependable enough to make money. It scaled to the task at hand. It was maintained longer than the Dart API was since Google retired it months later.
"It's not best practice for a business to base a process around some jury rigged POS "
I suspect you'll find plenty of businesses jury-rig a POS first, and then only fix what needs fixing. Turns out most stuff doesn't need it.
For most companies, craptacular software is heaps better than what they already have (nothing). The point is, any newbie with ~3 months of training can write a non-beautiful non-scalable, line of business program that produces measurable value.
He produced useful, if poor quality, software. It did helped at a time and when it cease to be useful, it is small enough to be completely replaced with something else (instead of maintained).
It is ok to throw away things and not everything needs to be scalable.
It is also not best practice to base everything on the idea that everybody must be experienced senior to do anything. Many tasks are suitable for inexperienced juniors, because that is enough and it is small enough to throw it away if it goes bad.
The things that were most useful for people I worked for were not the things that were most difficult to create.
Defined as "able to be used for a practical purpose". Yes, companies need those apps and web pages and what not. They also need data analytics and what not.
We obviously have differing definitions of the word 'useful'.