A lot of truth written above, but there is a spectrum and different people are in different places.
For example I am a businessman first (it is my business) and my #1 job is to look after the business. So in product development I have to "pick my battles" and do stuff which will work and crucially which can be done in a futureproof way so I can revisit a job in 10 years' time. Even if I have help now, I can be sure I will be working on it alone by then.
But if I was working for somebody else's company, I don't need to care much. I can spend a week learning some new tool. It will cost my employer 1000 quid while I am playing with that, but I don't need to care. I don't need to document anything, and actually that improves my job security (in the short term, anyway). One sees this in web (server side software) development where a new tool, worthy of a 1000 page manual, comes out every week. No doubt produced by a bright young lad who doesn't have a girlfriend so he can be incredibly productive. That tool will be forgotten in 10 years' time. Try to get somebody to work on Ruby on Rails; it may as well be Cobol/66.
"It's enough to have properly documented peripherals with working examples for the most common use cases, instead of poorly documented peripherals with one typical use case hidden inside the HAL implementation. This is exactly what AVR, PIC and similar did for decades, no problem even for a beginner. And usage of most peripherals on STM32 is same complexity as on AVR or PIC, really - typically 5 lines of code."
I agree 100%. I have just spent a few hours trying to work out, from the RM, how to set up UART1 for 9600,8,n,1, polled. This is just for debugs very early on after startup when there are no interrupts and I can't call the ST libs because this is a boot loader. I reckon it could be done in 10 lines, but setting up the pins (the various alternate function options) so the UART TX and RX actually come out is a lot more complicated; I reckon at least a day's reading and trial and error. I gave up and found another way. Rather than a bloated code generator, ST should have offered code examples, for each peripheral.
Well, it is more complicated because of inter-dependencies like clock configs, alternate functions, half the UARTs/SPIs/whatever are not usable because the pins are used for other stuff. Setting up that sort of stuff is a great use for a GUI.