18 Jan 2006

Think Ahead or You'll Fall Behind

Planning can be essential in efficient work.

As my Computer Science 4 professor, nicknamed Crazy Vlad, always harped, planning your programming is essential to the best program you can build. He had a tale that I will now pass on to you to get this started.

He was in a graduate Computer Science program with two other individuals all working on the same project. The three of them would be given six months to develop their program to solve a certain task. Person A thought he was going to be a good graduate student and started coding right away. Person B put a little bit more thought behind his actions and planned for 3 months programmed for 3 months. Person C (Crazy Vlad) planned for 6 months and programmed for a day.

When the testing began Person A’s program executed once every week. Person B’s program executed once every hour. Person C’s program execute a dozen times a minute.

Moral: Planning only helps you in the long run.

Now that that little tidbit is out of the way I’d like to go over some tips to making sure you are able to successfully plan for your project, regardless of the exact implications.

Step 1 – What are you doing?

Get a clear answer for what you are doing and planning on implementing. If you are on a team than this should be a strong collaboration between all members. Get all the basic ideas out on the table so everyone knows where they stand and where they want to go.

Step 2 – What do you need?

Get the essentials of what needs to be done. The example I am going to stick with is software development but it can be modified to fit. With your program you should figure out what classes you need for your OOP code (if it is) and what functions need to be implemented and by whom.

This is the essential and longest stage. You will need to make sure that everything is planned out and you have a basic road map of how to get to your answer for Step 1. Despite being the most essential state this is the step that everyone avoids and skips because it is tedious.

Now the best trick I can give you to making this work is to have a written list for this. Knowing it in your head is not enough. One of my recent projects had the class list and functions list occupy 3 full-size whiteboards each. That’s just a sense of how detailed you should be and how complete they should be.

Step 3 – Plan your time.

If you are working alone this is a little bit easier since you aren’t having to manage multiple schedules. But what you need to do is have a distinct order for implementation and a distinct deadline. Also when planning your time for each of the functions and details you should also delegate the task out to others if you are working in a team.

Delegating and organizing everything will greatly help you in making sure things happen in a timely fashion. But the big trick to delegating is exactly that. You must delegate. If you have a clear enough road map then you should be able to hand out tasks to people so that they don’t have to worry about other people’s work. If the timeline is followed, all will come together fairly nicely.

Step 4 – Double Check

Think you’re ready? Go back to the beginning. Run through the steps again, quicker this time, and make sure everything is covered. Review all your bases in order to confirm you are ready.

If so, you get to go at it. Begin the programming.

Now this may seem like an obvious thing to do in order to make sure things run smoothly, but you would be surprised how many people don’t utilize it. Some people get too excited for their own good. Planning and good management can be the strongest leash to control your inner programming animal.