What happens when you start a new ColdFusion project? Your boss or client will come in your office and start asking you questions about many things. This is the moment when you should take some time to work on your strategy and make sure you don't fall into the trap of unclear thinking and vision. They are allowed to do that, you're not.
Why should I spend more time on project vision?
The number one cause of project failure is a lack of written project vision and objectives. They (your clients/boss) might ask, “Well, why is that important?” Because, if we don't know where we're going, how are we going to know if we've arrived?
This is important not only for you but for your team as well. If there isn’t a clear written vision then team members will go off in different directions. You will probably know what you want to do with the project, and what are the main points of running it, but what happens when you have to explain your strategy and the reason why something should be done one way and not the other?
Having a project vision helps you and your team have a common understanding of the project and also helps keep tasks in scope. When you're having some discussion (or maybe an argument!) with users over what the scope is, having a written vision helps everyone clarify, “Okay, are we really in scope here or is this an enhancement?”
Remember, verbal agreements are easy to forget. This way, you will always have a reminder, and what is equally important, you will have a reminder and something to push you forward, when you are stuck.
A vision helps team members and users get enthusiastic about the project, helps get them started, see past obstacles and resolve issues.
I worked on a CFML project with no written vision. We had been coding for several months and the project manager thought that new users should have to enter a user id and password. One developer thought that the system should generate a random password for new users. Another thought that users should have to receive a token via text message that they would enter in addition to their password for better security. Meanwhile, the actual users were all on an intranet and already had a company user id/password. They wanted to use those for seamless sign on to the new system.
The result: no one was happy and that part of the system was recorded delaying delivery by several weeks.
What are the solutions to a lack of vision?
Sit down with your stakeholders and come up with what the vision is. Then write it down. It doesn't have to be very long: a few sentences saying:
- This is how the project will look like when completed:______________
- This is the timeline for the project:___________________
- This is what each member of my team will work on:__________________
- This are the tasks that only I can do, so I shouldn't rely on anyone else:_______________
Share the vision with both the development team and all the stakeholders. That way during a long project everyone can keep going in the same direction.
Give clear, business reasons for project, not fantasy
Included in your vision should be business reasons for why the project exists and what the business value is. They help remind you and the team that when you're thinking of creating some fancy feature whether it is worth doing. Ask yourself: is this supporting the business case for this application, or is it just something that's technically interesting, but isn't really going in the direction of the vision?
Many developers enjoy trying out new ColdFusion functionality or technical methods. Sometimes this can help solve a business problem better than old ways. Other times it adds nothing but extra complexity to the software, extra bugs and risks that bleeding edge technology carries with it. Frequently new language features contain subtle bugs that are only discovered months after the original language version release. Unless the new feature is the only way to solve your business problem it is safer to wait six months before using a new version or feature.
“Bell and whistle” features of the program
Other times developers (maybe even you!) will add “bell and whistle” features to the program. That is features that are “cool” but are not used by the average user. Again these add to code complexity, costs, bugs and project risk. I keep a strict eye out for this kind of out-of-scope-enhancements and train our developers to instead add ideas for enhancements to the change tracking system for consideration in the next release.
That way we can evaluate both the technical and business value of each change compared to all the other enhancement requests.
How do you know if your ColdFusion project was a success? Please leave a comment bellow.