While the world has switched to RESTful APIs, the magical power of SOAP-based web-services was that they made code generation easy. Well, easy-ish. Well, easy when it worked right, and then hard the rest of the time. But if it worked, if the WSDL was up to date and sane, you'd get a nice client-side API to invoke methods on the remote server.

Andrew inherited one such client-side C# API. It looked something like this:

private static string HTTP_PROTOCOL="https";
private static string HTTP_ENDPOINT="someurlhere";
private static @string _masterAccountID;
private static string2 _AccountID;
private static string3 _accountID;
private static string1 _license;

Yes, @string was a type defined in the web service. As well as string1 through string5. But also, string here was also a custom type, masking the built-in string. It had two properties: textField, which returned an array of native strings, and Text, which was just an accessor for textField.

Unfortunately for Andrew, this was a third-party web-service which his company definitely wanted to use, which meant there was no way around it, and he needed to suffer through this API.