The audience for this article: IT managers, IT executives, and technical people who deal with application integrations
In 2018, Consumer Reports found that the braking distance on the Tesla Model 3 was far worse than any contemporary car they’ve tested. In response to that report, Elon tweeted that “Tesla won’t stop [improving] until Model 3 has better braking than any remotely comparable car”
How’s Elon going to fix the problem? By recalling every Model 3 car, paying millions by asking every car owner to go to local car dealers? Instead of doing that, Tesla fixed the problem by a simple software update, releasing an over-the-air (OTA) update for Model 3, improving the braking distance by 19 feet.
Jake Fisher, director of auto testing at Consumer Reports who flagged the issue, was so impressed. “I’ve been at CR for 19 years and tested more than 1,000 cars and I’ve never seen a car that could improve its track performance with an over-the-air update”, says Jake.
How can a Tesla car be fixed by a simple software update? Basically, a Tesla car is computers on wheels. Everything is controlled by computer software.
As more and more complex systems are controlled by computer software, and more specialized, sophisticated software is released as a mass product, software integration will be much more common and complex. When a complex system results from the integration of several complex software, it is a nightmare when something goes wrong, to find out where it breaks, before even talking about fixing it.
This is no different from a typical enterprise application project. Here is the common scenario: you are asked to create a new application.
And then, some data will be required to flow from another application, a data source,which is being handled by a different IT team within the organization
A message queue is introduced in between, to prevent message loss when your application is down.
Some other applications within your IT team need to consume the data as well, but the message needs to be processed first
The evolution goes on and on, where the integration becomes complex with other applications handled by different IT teams.
And here is another scenario that is common in a typical integration: you have a bug in the system, causing a production issue. This production issue is escalated by the users, to the business team, and finally to your team. You find out the issue is in the ‘Message processor’, which is part of your area. You admit it, the IT team and business team know it, you fix it, make sure no other bug, and now it works as expected. You are forgiven since this is the first mistake.
In a few days, another issue comes out. This is when things start to fall apart. The business team and the manager of the IT team already have a perception that the problem must lie in your system since the issue is similar to the previous day’s issue. The business team is angry, thinking why the same mistake could happen again. The manager of the IT team thinks you are not capable.
This is the time when your trait as a good software engineer shines. You have anticipated that failure could happen, and you have prepared for it. You prepare a logging system for each point of failure, so you know where it breaks. From the logging system, you know that no applications within your area have failed, so you suspect the data source is the problem. You talk to the other IT team that is taking care of the data source, and they don’t take you seriously. You come with a strong proof, your log statement, and ask them to a meeting, showing them the proof (and staring at their eyes sharply). Finally, they launch an investigation, and find out the issue is in their system.
And what does this story have to do with a good lawyer? Anil Balchandani was working as a senior hardware engineer for 10 years in the US after graduating from Carnegie Mellon University, before deciding to leave his career to become a professional lawyer. He took up a case of Ms. Parti, a maid, against a very wealthy, prominent family in Singapore. The maid was previously given a 2-year jail by a district judge, which changed to a full release after Mr. Anil could provide strong proof that Ms. Parti was not guilty. A good software engineer could be a good lawyer.