Continuing on my journey through failures and the lessons that I’ve learned, we’re going to make a stop at a project that I did when I worked at a very small (but successful) development shop.
I started at this shop and one of the first tasks that they assigned me was building a reporting engine for a POS style’d application that they were re-developing. This sounded fine by me as I’d just rolled out of a company where I’d done the exact same thing. I gathered what little info I had on the new and old applications plus the reporting that was being replaced. People dropped print out copies of existing reports on my desk. I was getting my bearings with regards to the outputs that may be needed, but I still was completely lost when it came to what the user experience should be. It wasn’t too long into this project that I realized this (I hadn’t written any code yet in fact) and decided that I needed a sit down with whoever was going to act as the client.
After finding out who I should talk to I set up a meeting so that I could gather some requirement stuff. I sat down and laid on the table that I wasn’t sure what the expected experience should be when we finished this thing. The response was “It should be configurable.” I asked how. I was told “We want to be able to change things like logos and stuff when we put this out to different clients.” Okay…this person was obviously thinking of the final reports. I redirected the conversation back to the user experience leading up to the generation of the reports. The advice I was given at this time was “We need the same selection criteria as we currently have.” Nothing more (nothing less mind you). When I asked about layout, modality (this was a WinForms app) and other things that every user would see and have to deal with I was met with blankness. After an hour of probing and questioning in different ways I left the meeting holding onto one detail…the criteria must be the same as before.
I left the meeting believing that the user experience was firmly in my hands and that anything I did (within reason and practicality) would be acceptable. Oh my was I wrong. I worked for about a month and a half on the product and had some working reports that I could show so I asked for a desk review of what I’d done. None of the user experience was acceptable. It didn’t mimic the green screen style of the system we were replacing. In the eyes of the reviewers, I had horrifically failed.
For some reason, when trying to initially gather requirements I chose to ignore my past experience, which had taught me that just because a client didn’t state something, it doesn’t mean that they didn’t want it. I should have known to dig harder to pull those requirements out. That was a large part of my failure. One simple assumption quickly transitioned into a mistake which grew into failure.
How could I have fixed it? Well, the obvious answer is that I should have asked more questions and taken more time before getting started. Sure, that will work, but I like to get things delivered quickly so having a large up front requirements gathering task, just isn’t my style. The not-so-obvious answer is that I should have started, but delivered after the first week instead of waiting one and half months. I should have mocked up the user experience in a way that conveyed my intentions and direction and shown that too the parties concerned. I could have done it by drawing up some forms and linking them together to show navigation and mock content. I could have take the decidedly lower tech solution and just drawn up some story boards. Either way, after one week I would have known if I was on the right track or not. If not, I would have had a great opportunity to use the existing mockup as a conversation starter to elicit more requirements and then I could have started over.
Having to start over after one week is hardly a failure in my mind. In the case of lacking guidance it would have acted as a necessary step in gathering requirements. Better yet, I only would have burned one weeks effort instead of one and a half months. That is a more responsible use of the company’s money and a much better way to get exactly what the business needs. Fail fast and succeed.