In this posting I will show you how one stupid decision may turn developers life to hell. There is a project where bunch of complex applications exchange data frequently and it is very hard to change something without additional expenses. Well, one analyst thought that string is silver bullet of web services. Read what happened.
Bad bad mistake
In the early stages of integration project there was analyst who also established architecture and technical design for web services. There was one very bad mistake this analyst made:
- All data must be converted to strings before exchange!
Yes, that’s correct, this was the requirement. All integers, decimals and dates are coming in and going out as strings. There was also explanation for this requirement:
- This way we can avoid data type conversion errors!
Well, this guy works somewhere else already and I hope he works in some burger restaurant – far away from computers.
If you first look at this requirement it may seem like little annoying piece of crap you can easily survive. But let’s see the real consequences one stupid decision can cause:
- hell load of data conversions are done by receiving applications and SSIS packages,
- SSIS packages are not error prone and they depend heavily on strings they get from different services,
- there are more than one format per type that is used in different services,
- for larger amounts of data all these conversion tasks slow down the work of integration packages,
- practically all developers have been in hurry with some SSIS import tasks and some fields that are not used in different calculations in SSAS cube are imported without data conversions (by example, some prices are strings in format “1.021 $”).
The most painful problem for developers is the part of data conversions because they don’t expect that there is such a stupid requirement stated and therefore they are not able to estimate the time their tasks take on these web services. Also developers must be prepared for cases when suddenly some service sends data that is not in acceptable format and they must solve the problems ASAP. This puts unexpected load on developers and they are not very happy with it because they can’t understand why they have to live with this horror if it is possible to fix.
What to do if you see something like this?
Well, explain the problem to customer and demand special tasks to project schedule to get this mess solved before going on with new developments. It is cheaper to solve the problems now that later.