Last week, I got an assignment to change the functionality of one of our control devices. Okay. No problem. The modification required one small software change and one small hardware change which required a change in the board layout. The new functionality was explained and I went to work. I familiarized myself with the current behavior and features of the device. That is where the confusion started. As I learned what it was the features I would be changing worked, I started to become confused about the way the features would work when I was finished.
After a long meeting with the hardware people, the manager of R&D, marketing, and application engineers the questions were laboriously cleared up, and I again had an understanding of what I was supposed to make happen. So, I went and did this last week. After finishing the software, I prepared the project for release. All I needed was a modified circuit board from the hardware people so that I could test the software prior to giving it my blessing. After that, all I needed to do was document and release it.
I finished the software modifications and went to acquire a new board and was told that I could get one "any day now." Okay. In the mean time, I could document the changes in engineering documentation and customer manuals and help files. No problem. I went to talk to the documentation person in marketing to discuss the wording of the explanations. It turns out that the documentation person had to get up to speed on the product too. The more he looked at it and tried to understand the functionality, the more he became lost. So, he went away to try to digest the information that I gave him and promised to get back to me when he understood what was going on.\
Well, it turns out that our small change in the functionality of the device causes changes to the fundamental understandings of what is going on in the device. So, the marketing and documentation person dragged me back to the head of marketing to explain to him why our changes have altered the device's operation in unanticipated ways which are likely to confuse the users. Of course, the head of marketing does not want confused users, so he changed the specified functions of the device again.
This started a new long discussion, which eventually got down to some redesign on the way the device has worked since it was originally designed and built! Now we have to go back to the hardware people again, since the new changes to the hardware are different from the old changes, and I have to take the software apart again and change the code again, more radically this time, to make the control operate in an entirely new fashion, which of course, will not be backward compatible with the old version.
To make matters worse, nobody (and I mean nobody) could give me a straight answer on the way certain features worked in the device now! I had to sit down with the application engineers, who set the things up and answer customer questions and the two of us had to test our own product to see what would happen under a given set of conditions, so that I would know what functionality to dig into and change to get the new behavior. While reverse-engineering our own product, we discovered a minor but irritatingly obscure bug that nobody had noticed before.
Now, all of these changes and decisions have to be approved by the head of the product projects and re-coordinated with the hardware people and the marketing people so that we are all on the same page again. Because of this, it is 3:30 in the afternoon and I have nothing that can be done except to sit her twiddling my thumbs and compose an LJ entry. I still am not sure on what the desired functionality will be, so I can't modify code. I have no new hardware, so I cannot test the code I have, and I don't know how the functionality is going to change again once all of the engineers and marketers are on the same page again, so I can't document. I want to go home. I have projects of my own on which I could be making some progress!
Naturally, this means that there will be meetings tomorrow. Ugh. So much for a project which was only going to take a couple of days of my time. I'm leaving.