Donald Trump’s immigration ‘executive order’ looks a lot like bad business software

The big news this weekend was Donald Trump’s “executive order’, that there should be no immigration into the US from certain countries for a while.
Aside from the various political issues involved with this, it also looks like a lot like really bad software.
Reading the ‘executive order’ (here) it seems to make reasonable sense – Donald Trump had a goal, to tighten up security, and decided something drastic needed to be done about it, in fact making this promise was a big part of his election pledge.
The text seems fairly carefully written, saying we need a new system, we’ll stop the system we have now until we have a new system in place, and let’s see how it goes. It notes that many of the September 11th 2001 attackers managed to get around the US visa policy.
What happened? Enormous confusion, particularly over whether permanent residents would be allowed to return to their homes, and families separated, people unable to fly home from Central America to the UK (since the flight involved a stopover in the US), and much more.
The way the system should work is exactly as it is currrently designed. You have human experts at the border, making decisions but with a lot of regulatory guidance. You have people managing the overall system making adjustments as necessary – tightening security, or loosening to allow more people through. After September 11 2001, there was a lot of security tightening.
Widely recognised as a narcissist, Donald Trump probably does not have much ability to see things he cannot see. Or to put it another way, all of us have limits in how much of the world we can understand, but we retain an understanding that there are many people in the world who understand things that we don’t understand, and know how to do things that we can’t. Donald Trump probably does not possess this ability. He has faith in himself.
So his chosen course of action is to drop a barrier to the current way that things work, and start building a new system, and then see how it goes.
The system he has designed is a fairly robotic one, where he gives the border agents fairly strict instructions about what to do (there should be a “a database of identity documents proffered by applicants to ensure that duplicate documents are not used by multiple applicants”). One imagines that US Border Control have a great deal more expertise than Donald Trump about how to check that applicants are who they say they are, but this is something Donald Trump is unable to see.
And of course, the system completely went wrong. Airlines have to cover the costs of flying people home if they don’t get admitted into a country, so they have a strong incentive not to allow people onto planes unless they will be sure they will get admitted, which means they will err on the side of caution. The intent of the executive order may have been to allow people with permanent residency to enter but give them a few more questions at the border, but what actually happened is they weren’t allowed on the planes and got stuck in Dubai.
The problem of people being unable to fly from Costa Rica to the UK since it requires a transit stop in the US probably wasn’t thought through.
So many people ended up on the wrong side of the net, including high profile people such as Somali born British world champion Mo Farah, who has a dual citizenship.
The whole thing must also be massively demoralising to border control agents.
And it probably has achieved absolutely nothing for security. Are there individuals intent on harm who would have got through the old system but will be stopped by the current system? It seems pretty unlikely.
How does this relate to software development?
First – don’t expect to get it all right the first time – real life is more complicated than you plan it to be – build a system which you can test and iterate.
Second – let experts have a much bigger role – listen to them, and use their judgement.
Thirdly – have humility in your expectations for any automation system which involves people. There are some automation systems with people which work, but automation systems for people are extremely hard because people and real life is so complicated. A larger human discretionary component is probably much better.