My understanding is that Uber knows these cars aren't ready and that's why they have a human at the controls.
I would have thought the driver would be instructed to maintain awareness of the road as though he were operating the vehicle and that looking away from the road in a manner that suggests he was using his phone would immediately relieve Uber of any responsibility.
Perhaps the collision still would have happened, but at least the driver would have the defence of "I was paying attention and meeting all the job-role requirements as safety-operator of the vehicle."
These things and liability should have been decided before the cars were allowed on the road. But when Congress deregulated them at the federal level everyone hailed it as a good thing and completely ignored all the potential negatives of that.
Now, even if Uber is found guilty, it may get away with it, because there may be no law clearly attributing guilt to a self-driving car maker in case of accidents like these.
The root cause, in my opinion, is allowing cars on the road that inevitably lull their nominal driver into inattentiveness.
There might be ways to keep a safety driver engaged so that the chance of attention failure is significantly lower than inevitable, but it doesn't seem like Uber had been looking for them very hard.
(Someone went to jail for VW and there was no death directly as a result of the emissions cheating.)
That was an instance of deliberate fraud.
This observation does in no way absolve the polluters, but the big picture would be incomplete without this perspective. We all have some blood from statistical deaths in our hands, some people more than others, and again some of them more than others because they broke some rules we introduced to make the deaths not run or of bounds.
Presumably the developer in this scenario is not responsible for guaranteeing to and/or misleading a customer that his code adequately renders a deadly weapon safe, more likely that responsibility falls on the managers whose project it was to implement such a digital "safety" and instructed the developer to write the code in the first place.
Assuming the developer did not write the code with the intent of bringing about a person's death, which might involve fooling his superiors as to the efficacy of his work, I'd wager he can't be guilty of a crime. Outside of that, I believe vicarious liability applies.
Perhaps he was a one-man department of this hypothetical gun manufacturer, implementing, deploying, and marketing his product himself and of his own initiative; I don't think there's any doubt he'd be liable in this case, the extent of which is dependent on his intention.
Perhaps our developer was self-employed as a contractor, and warranted to his client (the hypothetical gun manufacturer) that the code was safe; assuming the manufacturer used it as warranted, and it failed, I'd assume the developer would be mostly liable for the result.
What about heavy machinery, like construction plant? Or power tools? Or common kitchen utensils? Would they satisfy the analogy?