The software was known to be unreliable. In that way it did contribute to the person’s death. But so did the driver tasked with correcting the vehicle (who was watching Hulu), the technicians who disabled emergency brakes, and the company culture/management that thought this was safe in the first place.
On a side note, my iPhone X knows when I’m looking at the camera to use FaceID. If I look away, am asleep, or otherwise occupied, it won’t open the phone. I’m not sure why Uber doesn’t use similar technology, in conjunction with steering wheel sensors to identify hands on the wheel, to force operators to stay alert. This seems particularly important if the software is unreliable.
The right decision in designing a car (centre of gravity, stopping distance, thickness of gas tank) WILL kill many people.
Incompetence killing people is one thing (bad spec for o-rings, Therac 25 programming leading to massive radiation dose) but in some programming domains you just are going to make decisions that end badly. If you make the right decisions you'll kill fewer people than the alternative but still some are going to die.