"Software engineering is hard guys."
It's pretty easy to build version 1 of anything - quickly write software to implement new functionality - that appears to provide quite a few of the desired features.
But, if the software isn't designed well, there is risk that the software will be unreliable (subject to bugs) and require increasing amounts of effort to fix problems and implement new features, requiring additional software developers and/or dragging out release times.
If Tesla's early focus was to push out software quickly, without taking the time to design the software (which is complicated by the number of different processors in the Model S, the requirement to support multiple and evolving configurations, and to do so in multiple languages in multiple countries), Tesla could be faced with an exponentially increasing difficulty to add new features and/or fix problems, because poorly designed software can require major rewrites just to make even small changes.
And, this can be further complicated by not having an effective testing strategy. For something like the Model S, much of the software could be tested using automated testing tools - to verify the software works in multiple configurations - and the testing can be done frequently. And because they still appear to have bugs getting into the released software, resulting in start/stops during the rollout, their "beta" testing is still missing too many bugs - and could benefit from a more methodical beta test and/or having more (qualified) testers participating.
While what Tesla is doing is considerably more difficult than writing a simple app for a smartphone - what they are doing is not unusual - something other companies have done with their software systems - for much longer than Tesla has been in existence.
And, if they haven't done the software engineering work to design in an effective software architecture and testing philosophy, this problem will only continue to get increasingly worse - and more difficult to fix. Their only choice, if they don't address this soon, might be to abandon completely the current software - and completely rewrite it.
And, as a Model S owner, I'd hate to see them do that - because what they would likely do is stop adding new features to the Model S, focus only on making critical bug fixes, and provide new features only to their newest cars. That's basically what the other car manufacturers do today - and not what I expected when I purchased my Model S in early 2013 - with Tesla's promise to see software updates for the life of the car.
Tesla probably has enough supporters in their current ownership community, with considerable experience on delivering quality software products with systems at least as complicated as the Model S - and it would be easy to reach out for their advice on how to get to a point where they can more effectively release new features - faster - and with higher quality...