I dont know, I think its fair for a user to enable auto-steer when the car "ALLOWS" you to enable it and expect it to work reasonably well or disable itself with a warning. I do think this type of criticism for Tesla's AP2 hardware is deserved since they are way behind on schedule and from my experience it seems nowhere near prime-time (especially on auto-steer)
Writing firmware that controls hardware is not easy. And for firmware that could kill someone with its bugs, the safety certification usually takes longer than writing the code. Elon's software experience was mostly website programming and the backend systems to support that. I don't think he completely understands the differences with mission critical firmware, and tends to over promise.
It isn't just a Tesla thing. I worked in the certification lab that did engineering test on all the avionics on Boeing's commercial aircraft. I was there through the whole 777 program and the lab went from 150 people to 1500 to build the hardware setups to test (my group), write all the software for the testing scenarios, and then support all the testing. The actual testing was done by other people coming in.
The 777 was 2 years late and $1 billion over budget (I know a guy personally responsible for $100 million of the over run). The FAA is far, far more picky about firmware safety than the NHSTA. But there is still the product liability issues Tesla and other companies developing auto driving tech need to consider.
I'm not surprised the AP2 firmware is late. The computer driving the car has more data to work with, which is both good and bad. It's good because it can figure out more edge situations that the AP1 hardware could, but it compounds the error testing in the firmware because every scenario where the sensors are in conflict has to be dealt with, plus the processor is having to handle more data coming in.
I've done a fair bit of firmware development, but very little mission critical stuff. I know what the mission critical stuff (aircraft certified) has to go through for the FAA though. For my bit, I just had to write the low level hardware driving code on the tester side. The worst thing that would happen if I screwed up was a test would fail and I would be called in to do an emergency fix to get the test going again, but that was rare. The simulation code failed most of the time.