This outsourcing nightmare involved the interface to a wireless bar code scanner. The scanner had a number of operating modes including a wireless mode. The scanner would send a bar code and receive an acknowledgement from the host. When dealing with wireless communications one must always be aware that communications WILL occur and you must have contingency plans when communications fails.
This bar code scanner had a Bluetooth mode. To prevent duplicate data the scanner would append a 4-digit sequence number to the bar code data. The SDK should read the scanner data (bar code + serial number) and return a response code. If the response code was not received by the scanner then it would resend that data with the sequence number. The host would receive the data and if the bar code and sequence number matched a previous value then it would ignore that data. If the numbers matched then it was received by the host but the acknowledgement was not received by the scanner and the scanner resent that data.
The outsourced engineers wrote the SDK so that it simply dropped the sequence number. I explained to them how the protocol worked and how it was designed to prevent duplicate data. They stated that their implementation did not allow for that and they refused to implement the protocol. This had the potential to create duplicate data during error conditions. The outsourced engineers did not bother to understand the protocols and just did a brute force implementation.
When I tried to fix the SDK myself I reviewed their source code. There was no internal documentation. I asked about code documentation and they stated that they were not paid to document their code. Documenting code was not included in their bid price and there would be extra charges for documentation. This is beyond stupid. They also said that they were hired to implement the protocol but error recovery was extra.
This level of stupidity was beyond the comprehension of a software geezer who always programs for worst case scenarios. Having an engineering company charge extra for error handling is like having a car company charge extra for wheels and tires. A car cannot function without wheels and software cannot function (for long) without error handling.
This case was probably the worst example of bad engineering and a general “We Don’t Give a Damn” attitude. The goal of many outsourced engineering companies is to do the minimum amount of work to meet the specification and charge extra whenever possible.