BP614: Using ex-students as mentors Query on planning
Question:
One of the things that the students find difficult is that they have to plan everything first – What planning is involved in what you are now doing?
Answer:
Planning now saves many headaches later. The project that I am working on currently involves providing a quote system. This will allow customers to obtain quotes online. Before I write a single line of code, we put in three days of planning.
The first four hours was spent with the manager, the sales team and the technical specialist. We discussed what we want the system to achieve and an overview of how this was going to be done. In this meeting, we laid out the process from a customer point of view of how the website was going to work. We also discussed what information we were going to collect, and how it connects with our existing systems.
After that I spent just over a day writing a design document. This was six pages long and detailed enough so that if I was hit by a truck tomorrow someone else could have written the project from the information in the document. The document included details of the process flow and relationship to existing systems. It also specifies what limitations have been identified (e.g. minimum browser requirements, what the system cannot handle) and issues that need to be addressed.
The rest of the planning time was spent with the programming department working out how we are going to achieve the required outcome.
The three days that we have spent in planning will save us many headaches in the future. I can fully understand the desire to just get stuck in and start writing code, and if the project is small and straight forward enough, you can usually pull it off. However, nine times out of ten, you will regret not putting in time in the planning stage. Planning is absolutely essential when multiple programmers work on the same project concurrently so you all understand the framework that you need to develop in.
Planning prevents three avoidable situations:
(a) the code doesn’t work as expected, or you haven’t designed the correct framework early on that the code
needs
(b) you are required to make modifications but your code isn’t flexible enough to do so, and
(c) the requirements of the project aren’t clearly understood and as such you have written what was required.