In Douglas Adams’ novel, Dirk Gently’s Holistic Detective Agency, the character Dirk Gently frequently talks about the “interconnectedness of all things.” He was talking about solving mysteries, but might as well have been talking about software. Interfaces are a significant part of the power, and complexity, of today’s IT department.
I would suggest that the interfaces are becoming as important as the functionality within a piece of software.
Let’s start with the operating system. You need DNS and DHCP servers just to bring all your computers up. You need Active Directory or some equivalent to have anyone connect in. You have cybersecurity products wired in. You might have network SANs that servers need to connect to.
When you get to the functional software layer, you have even more. Connections to database servers, load balancers, application identity management, and more cybersecurity.
And then we get into the functionality. You may have an employee list or customer list that needs to get into several applications. Basic data like statuses and next steps need to be harmonized between systems and it is better to do that with a data interface than trying to keep them the same manually. Remember, data that “never changes” usually does.
Cloud systems bring even more complexity. If a vendor supports a simple plug-and-play interface to another cloud system (think Azure AD), then we are all happy. But step outside that limitation and you face a choice: try to get one of the vendors to add a new interface (good luck!) or write software yourself to do the interface. If your developers write the interface, where will it live? You have two cloud providers, often living in two different cloud environments and almost certainly in different tenants. It is unlike that you will able to put your code on one of them. So, any interface in this situation will be moving the bits all over the place and that will be either expensive (if it is your pipe) or unchangeable.
Finally, our vendors are providing more services that are delivered with the cloud. If you have a managed infrastructure vendor, you need interfaces with Active Directory and an employee list (remember, they are not the same thing). External payroll and benefits systems have long been transferring files to and from our systems. The number of vendors IT departments use is going up. This means that interfaces with vendor services is going up.
Clearly Adam’s Gently character is right. We live in a world where the “interconnectedness of all [software] things” makes IT’s life easier and harder. We can provide more functionality by wiring these systems together. We have more complexity to track and maintain.
How do we deal with this?
- Step one is to keep track of it all. It is likely that you and your team don’t know all the interfaces that exist in your systems. Create an inventory of interfaces. Fun trick: have everyone take a guess before you do the inventory. Winner gets a free copy of the latest JSON standard. Seriously, though, keeping track of the interfaces is just as important as keeping track of your computers. Make a list. Don’t over complicated it. Start with a few fields (system1, system2, type of interface, comments) and only add more once the list has all your interfaces. Remember that inventories that aren’t kept accurate are worse than worthless, they give you a false sense of confidence.
- Reduce the number of interface types and consolidate similar ones. If you do file transfer with multiple vendors, make sure they are all on the same platform with standard naming conventions and setup (to the extent you can). The fewer systems, setups, and code your team has to maintain, the better.
- The 80/20 rule applies to your interfaces. 20% of your interfaces cause 80% of the problems. Clean those up.
- Put an interface review at the beginning of any system upgrade. Make sure each interface has a test plan and someone assigned to make it work.
A final note. There are two interfaces that we just have to suck it up and live with. FAX machines and EDI. Those two will never die.