The Importance of Manual Data Entry in API Integration Work
Over the summer we set up another couple of ExpressionEngine to Salesforce API integrations. One of these was for a membership organization that provided its members with privileges and access to content for a yearly fee. This ExpressionEngine site existed long before we built our Salesforce integration, as did the Salesforce account. Our task was to integrate the two existing systems and then make sure that they stayed in sync with one another from that point forward.
When we build these integrations it is often the case that we are building on top of an existing site with existing content. Frequently the Salesforce account has also already been in place for a while. This means the records which going forward will be kept in sync do not yet know about one another. They have not yet been keyed to and attached to one another between the two systems. This is normally fine as the software is somewhat self-healing. Once a record is updated in either system, the other system’s record is found, connected and updated as well. But in the case of this project, the paying organizations all had public profiles. The sync events would only take place when a member updated their profile in ExpressionEngine and we couldn’t count on this to happen in a timely manner. The solution for this is normally to write a batch processing script that can go through and perform the connection and sync routines on the server side. But all we really needed was effectively the clicking of the submit button on each member’s record in the ExpressionEngine control panel. This was going to get expensive and time consuming. Missy to the rescue!
In the spirit of the 'minimum delightful product' idea, when faced with an onerous API integration task, especially one that may only run once or twice over the lifetime of a web application, it can make a lot more sense to just hire a reliable data entry person to churn through the task instead of writing a bunch of new code.
When you write code, especially API integration code such as the kind we write so frequently, you have to account for several costs. First, there is the planning phase where you figure out how to write what you are going to write. Second, there is the writing phase where you crank out the code. Third, there is the QA and revision phase where you break and fix what you wrote. Finally, there is the maintenance phase where you maintain that thing you wrote and version it to keep up with the Jones' over time. This is expensive, financially, temporally and psychically. When you hire a data entry person to handle some of the tasks, you create the space in which to eliminate non-essential features in the product. You clobber the QA, revision, writing and maintaining parts of the software life cycle. You are left with just the planning and the keyboard crunching. It's a lot more predictable this way and it obeys the mandate of being as practical as possible in order to be as respectful as possible of the client's time, patience and money. This approach obeys the mandate of delivering only the MDP, minimum delightful product.
So we have Missy. Missy does the books at Solspace. She sends invoices, follows up for payment, creates tracking and forecasting spreadsheets and most definitely handles data entry tasks when they fall into the MDP sweet spot. We would be lost without her because she is bug free, reliable, and more fun to talk to than a few thousand lines of PHP code. I can no longer remember how long she's been providing this sort of solution to us, but I can assure you that she has saved our clients thousands.
Think about how you can accomplish more and save a ton of money just by thinking about how a human can perform better than a machine when faced with an MDP question. You might find that there are many overlooked opportunities.