There’s a great deal of talk about self-driving cars at the moment, and this then leads on to ideas about how truck drivers and taxi drivers jobs will be destroyed. As an old lag in the software industry, I think it might be worth trying to shed some light on how software development works and some of its limitations and how this relates to self-driving cars.

The way that software is developed is that you always try and have a complete process that works with what’s around. That doesn’t mean that it all has to be software. It means you can’t have holes in the process.

For example, if you are an online pharmacy, there’s a human step in the process. To request and receiving your prescription from the GP who wrote it. You can’t manage that without a person being involved. Theoretically, that could be replaced by GPs giving you a number and then you enter that number, but the system of the online pharmacy can’t change what’s outside of it. It has to account for what’s external. You can build the rest of the process to allow someone to make the request, set up an account and so forth, but you need that human step.

Even processes that seem totally automated, like say, buying music from iTunes, well, there’s people involved. There’s people at Apple sitting by computers in case things start misbehaving.

You also have to consider the question of what happens when there’s failures. In the case of getting a song from iTunes, your iPhone could be out of power, you might not connect to wifi, or iTunes could be down. But it’s hardly critical if you can’t buy the latest Lady Gaga right this minute.

When I look at self-driving cars, there’s a process right now. They have problems, like they don’t work in the rain or fog. Messes up the sensors. So, you take the wheel instead. Which is fine. The process works. But you haven’t removed a job. You still need a capable driver who is paying attention to the road. Maybe we solve rain. And then fog. What if a policeman pulls us over? We’ve now got to build the software to detect that, and that it’s us they want to pull over instead of the person in front. And recognising horses. And fords. And a hundred and 1 other things before we can reach the point of getting the process to the stage where the human isn’t required. Or we have to accept that the car stops or worse.

If self-driving cars were possible, we’d have self-flying aircraft first. That’s an easier problem to manage, and we already do a large amount of that with autopilot. There’s no roundabouts, not much change of hitting people or other cars. But we haven’t removed pilots. Because no computer is going to come up with a solution to the Miracle on the Hudson in the way that Chelsey Sullenberger did, of thinking out of the box and finding the best case scenario of landing on the river. Computers are rather brilliant at being dumb bureaucrats. You tell them to add up a million numbers, they’ll do it very quickly and accurately. They’re very poor at adapting to circumstances, of finding a best-case solution with what’s around them.

None of this is to say that we aren’t going to have more driver support technology. We already have cars that will slow down when about to hit a car in front, or stay in lane. That’s good. It makes driving safer. But it’s not putting any drivers out of work.

blog. ABOUT EVERYTHING

Software Development and Self-Driving Cars

There’s a great deal of talk about self-driving cars at the moment, and this then leads on to ideas about how truck drivers and taxi drivers jobs will be destroyed. As an old lag in the software industry, I think it might be worth trying to shed some light on how software development works and some of its limitations and how this relates to self-driving cars.

The way that software is developed is that you always try and have a complete process that works with what’s around. That doesn’t mean that it all has to be software. It means you can’t have holes in the process.

For example, if you are an online pharmacy, there’s a human step in the process. To request and receiving your prescription from the GP who wrote it. You can’t manage that without a person being involved. Theoretically, that could be replaced by GPs giving you a number and then you enter that number, but the system of the online pharmacy can’t change what’s outside of it. It has to account for what’s external. You can build the rest of the process to allow someone to make the request, set up an account and so forth, but you need that human step.

Even processes that seem totally automated, like say, buying music from iTunes, well, there’s people involved. There’s people at Apple sitting by computers in case things start misbehaving.

You also have to consider the question of what happens when there’s failures. In the case of getting a song from iTunes, your iPhone could be out of power, you might not connect to wifi, or iTunes could be down. But it’s hardly critical if you can’t buy the latest Lady Gaga right this minute.

When I look at self-driving cars, there’s a process right now. They have problems, like they don’t work in the rain or fog. Messes up the sensors. So, you take the wheel instead. Which is fine. The process works. But you haven’t removed a job. You still need a capable driver who is paying attention to the road. Maybe we solve rain. And then fog. What if a policeman pulls us over? We’ve now got to build the software to detect that, and that it’s us they want to pull over instead of the person in front. And recognising horses. And fords. And a hundred and 1 other things before we can reach the point of getting the process to the stage where the human isn’t required. Or we have to accept that the car stops or worse.

If self-driving cars were possible, we’d have self-flying aircraft first. That’s an easier problem to manage, and we already do a large amount of that with autopilot. There’s no roundabouts, not much change of hitting people or other cars. But we haven’t removed pilots. Because no computer is going to come up with a solution to the Miracle on the Hudson in the way that Chelsey Sullenberger did, of thinking out of the box and finding the best case scenario of landing on the river. Computers are rather brilliant at being dumb bureaucrats. You tell them to add up a million numbers, they’ll do it very quickly and accurately. They’re very poor at adapting to circumstances, of finding a best-case solution with what’s around them.

None of this is to say that we aren’t going to have more driver support technology. We already have cars that will slow down when about to hit a car in front, or stay in lane. That’s good. It makes driving safer. But it’s not putting any drivers out of work.

About author

Tim Almond is a software consultant specialising in web applications for the ASP.NET stack.