It's a code-free post today; but that's OK. I don't think we really want to see the code behind Luther's story ...
There's a thing several states are getting into called Streamlined Sales Tax. It's effectively a way for other states to collect sales and use tax for other states participating in the program. I would like to tell you about my state's* (and employer's) attempt to implement the program.
There are two portions to the project:
(1) A SOAP client to retrieve a list of sellers who have volunteered (yes, it's 100% voluntary) to collect tax for the SST program
(2) A SOAP server to accept payments and sales reports from said sellers
In both cases, the end result is that data are to be inserted or updated into already-existing tables in the already-existing sales tax system. All in all, a relatively simple project.
That said, for about eight months or so, I watched the development team struggle with the implementation of this "politically critical" project. And by team, I mean a single developer. Fortunately though, he's always claimed to be 95% done with the project.
Once the project hit the two-months past its deadline, they decided to double the development team and bring me in on it. Initially, I was to be in charge of the web-services portion; no code had been written for it and the other developer needed to focus on the registration portion.
I did a bit of analysis and designed a solution that involved a messaging subsystem and a small database to keep track of the intermediate data. After presenting it, I was told that messaging could not be used: the messaging subsystem already in use had only been in production for a year and was not yet "proven" to be a success.
Further, it was decided that I could not use a database on my end and instead would have to implement the same approach by saving files to disk instead.
Even further, I would not be able to initiate network communications. That is, our systems group would have to write a program using sockets that will constantly "ping" my system to see if it needed anything. I would then have to write a server that would respond to these with things like "VERIFYPASS username password" and read back the response.
Even further, I would have to convert the incoming XML data to a CSV file and place it in a folder so the Oracle system can pick it up and insert/update the appropriate data. However, because there is no way to return errors from such a transaction, so my system must contact Oracle to see if any errors occurred. Since I'm unable to initiate network communications, I would have to wait for the "ping" from the other system.
Even further, no sensitive information may be cached on the server. Each web service call requires that all of these steps are followed in order to succeed.
Even further, the web service calls must be synchronous. I would not be able to respond back to the client at a later time once our processing was done. At this point, it became pretty obvious that eight months to write a lousy web service really wasn't that long at all.
Needless to say, I'm job hunting now. I really don't want to make a career out of writing a web service.
* I can't really tell you what the state is, but I'll give you a clue. It has a city named Springfield. And it's not Illinois.