Agile Methodologies, Evolutionary Development, Test Driven Development, Waterfall, etc have nothing on my brand new development methodology: Guess & Check.
Yes, you've heard me right, Guess & Check Development. It's much simpler than any of the other practices. It doesn't require requirements. It doesn't require testing. It doesn't even require customer involvement… as long as they keep writing the check. Alright, all sarcasm aside for now.
The organization with which I am currently employed seems to subscribe to this method. A request for an application often comes via one sentence in an email from a VP or Division Manager. There is nothing else, no point of contact, no description of who will use the application, no deadline, no budget, no requested feature. Just that “it works”. The logical question at this point would be “how do you determine completion?”, but I'll get into that later.
So now we have a dream for an application, but nothing else. My boss now assigns someone to it and they start. Some of our developers immediately start coding, some try to figure out who the users are, while others file the project away to the bottom of the ToDo list never to be thought of again. I fall into the second group.
For my latest project, I spend a week tracking down the potential users to figure out what they want. I manage to sit down with some of them for upwards of an hour to see how things currently work, to figure out how the new system should work, and which other systems it should interact with. As a result of this, I develop a set of 66 requirements and log them in Mantis which I use for both requirements and bug tracking. I proceed to build a project plan in dotproject spanning about 500 hours with fully functional milestones to bring various modules online ordered by the most important one first. I submit both the requirements list and the project plan to my boss. This was met by a “these are all simple things”, here is your new schedule… which has everything being complete within 3 weeks.
After attempting to convince him otherwise, I start working. I manage to schedule a meeting every two weeks with all of the relevant parties… which steadily grow. After 2 meetings (1 month of development), my group of customers has grown from 2 to 10 and still growing. At each meeting, I publish an updated set of requirements specifically mentioning those which have changed status (closed/new) since the last meeting. By the third meeting, my boss explains to me that I'm wasting time and that the system should be complete by now “after all, I told you that it should only take 3 weeks.” He then tells me to cancel all further meetings and just “decide what the customers want” and they'll correct you if it's wrong.
As I mentioned, “Guess and Check Development”.