UPDATE: To make this farce even better, it appears that for this year’s calculation rules have re-classified my two adult sons as dependents (including one who has not lived at home for 3 years). Neat how the government can on the one hand call them dependents for student loans, but not dependents on my taxes. Welcome to the era of DoubleThink!
A few weeks ago, I wrote a post about The Value of an Education talking about the debate that is going on as to whether post secondary education is worth the cost, especially given the debt load student loans put on new graduates.
Well, as I learned last week (I should have known it earlier, but was not paying attention when it happened), our new provincial government here in New Brunswick, led by Premier David Alward, has taken the decision out of our hands. It seems my children no longer have the choice as to whether or not student loans are a good investment in their future, since the province has already decided they are not.
I could explain the new rules that have me so annoyed, but I will link to someone else who explains them well.
I will likely be able to adapt to this change, for my youngest anyway. Unfortunately, there will be many who cannot.
Mr. Alward, this is not the way to build an educated workforce in this province.
As I have already said, doing away with requirements altogether is a really, really good way to ensure that your project will fail in a spectacular way.
Another really good approach to being bad is to try to capture every possible requirement that anyone might ever want, ever. There are a number of advantages to this approach as compared to the “no requirements approach:
- You can create the illusion that you really know what you are doing
- You look like you are being extremely diligent
- You always look like you are extremely busy
- You create huge amounts of documentation to support the illusion that you have been both busy and diligent
Unfortunately, you may never actually get to the end of the requirements gathering process. If you do, you will probably either have missed the window of opportunity on whatever you wanted to build, or you will have produced a set of requirements so convoluted that no one will ever implement them.
On the upside, you will have greatly reduced the risk of the actual development failing, since you probably will never get there. You will save huge amounts of money on developers, as well as computers and tools for them.
So you never actually have a product to sell, or software to use. You will have done your job well, it will not look as though your project actually failed, and it will look great on your resume as you look for a new job.
Well, I guess it is fitting to start out Fred’s Laws at the beginning of the process – with requirements.
If you really want to start of on the right foot, and get your project well on its way to a spectacular flame out, this is a fantastic place to start. Remember, the best way to figure out what your software needs to do, how it should do it, and what it should look like, is to get your coders right in there coding. After all, who knows what the user wants better than coders?
This is especially true if you are building something new and innovative, or if you are short on resources or time. Just think of all the time you will save by not having to talk to users up front. And, all those resources you would have wasted talking to users can be redirected to more important things like coding (whether they know how to code or not). Just imagine how far ahead of schedule you will be right from the beginning!
Now, estimation and scheduling may be a challenge without some definition of what you are building, but you probably will not be doing any real estimation or scheduling anyway (see later laws). If you need to have estimates and schedules to show to management, you can always make something up out of thin air (but make sure not to talk to your developers about it!).
(and just think how much time you will save talking to users later on, since you won’t have any!)
To be really specific, make sure you avoid any of the following activities, which are known risk factors which could lead to success:
- Set up a system for capturing requirements, using Access, Excel, file cards, or any other tools
- Establish a process to review and prioritize requirements, and assess their value versus cost
- Define a process for managing changes to requirements
- Involve users or user representatives in the creation and/or review of requirements
All in all, avoiding requirements definition should save a great deal of time up front, and allow you to focus on the important work of trying salvage your failing project.
Some time back (late September) I promised a series of posts on what I term “Fred’s Laws”, a set of rules you can follow if you are determined to have your software development project fail miserably.
Back in September, I promised I was going to post a law per day until I ran out of things to say. That lasted, well, zero days :-). For various reasons I felt it prudent to delay posting these for a couple of months.
The laws I am going to post are in no particular order in terms their impact. I am not sure how many of these laws there will be, and I am not even sure that they will not end up being self-contradictory.
(hey, I am doing this like a typical software project!)
I think the laws will fall into a few main categories:
- Project planning and tracking
- Process, methodology, blah, blah, blah
- Working with management
- Working with marketing
- Quality, testing, etc.
- Technology and tools
Something to keep in mind here is that I am a big fan of process in software development. Not of big, heavy processes, but of some process. If you are going to go from A to B, you have to follow some process to get there. There is value in having some level of predictability and repeatability in that path. You may vary the path with the circumstances, but you should at least know what path you are improvising around.
Also, I do not believe that there are any rules which you can follow which will guarantee perfection in you software development efforts (at least not if you are building anything interesting). All of the rules, and process, and other magic spells can do is to improve your probability of success, and allow you to see when you are heading down the path of failure, allowing you to make some intelligent decisions along the way.
On the other hands, the are a few rules you can follow which can almost guarantee that your project will fail. Combine a few of them together, and you can make your failure truly spectacular. Stay tuned…