README.md
December 5, 2022 · View on GitHub
Description
A guideline to properly start, manage and finish your projects. A must read for any serious developers and developers looking to work on big projects.
Btw: This is not c/c++ specific
More Info
| Submitted On | |
| By | D Davis |
| Level | Beginner |
| User Rating | 4.9 (44 globes from 9 users) |
| Compatibility | C, C++ (general), Microsoft Visual C++, Borland C++, UNIX C++ |
| Category | Coding Standards |
| World | C / C++ |
| Archive File |
Source Code
| A road map - Planning
your projects Dustin Davis Programmers Unlimited 11/25/2003 |
|
Most projects are just something to entertain me at the time. If I had taken the time to properly plan out my ideas into working projects before just hacking code, I would have
This is the point of this article right now. Learning to manage projects and keep your peace of mind. Let's take a look at the overall process of planning your ideas into projects
Now these stages are just a quick overview of the process. Let's get into some details of each stage. Your
Idea Getting yourself organized is the first step. Another serious problem that plagues me, is that I have ideas everyday and they all generate the same response. Since not a good idea to work on 50 projects all at once, if you cant even finish one, go buy yourself a journal, notebook, palm pilot, or if your a poor starving coder, then use notepad! Anything that works for you is fine. Make an idea chart. Each time you get an idea, write it down. Not only will this allow you to focus on your current project, but it will keep your from forgetting about them later, and most important, it will help you weed out projects that you would normally not finish due to it being one of those, "Keep me entertained at the time" projects. Very important. Thinking
stage Once you have a clear definition, you can start your brain storm session. Be sure to use your notebook (or start a new text file) to write all of these ideas down so you do not forget them when it comes time for planning. When you are logging these "bells and whistles" that you want to feature, include details and any specific information you have in your mind. You might think, "I will remember what I meant when I see what I wrote down", but I cant count how many times I have said that to myself only to come back anywhere from a week to 6 months later only to find that I have scribbles that are very cryptic to me. Someone else may as well have written them. During this thinking stage, you will want to get opinions and comments from other people and write them all down. Remember, this is just a thinking stage. Getting a lot of information now can help more than not having enough later on. Preplanning OK, now we are at a critical point in our process. Here, you need to decide if you should repeat the "Thinking stage", or if you should continue on to planning. Now before we get into planning, you will need to understand some guidelines. Any new ideas that arise will complicate and potentially ruin your plan. So, if at any point from here on, you get new ideas, write them down like you did before. But this time, you will have a different agenda for them. These ideas will go into your next version, or will be added only after you have finished your original plan. If you think that they are too good to pass up, go back to the thinking stage. Planning
Now we have an overview of our planning stage. Let's get started! Putting the puzzle
together Creating your design
document
We have defined the purpose and the end result in the preplanning stage and should not be difficult to add to the design document. Defining the 'tools' you are going to be using is another easy one. Let's take a game as an example. If you were to be building a game, you would surely want to define what API you were going to use (OpenGL, DirectX, Software blitting, etc.). If using 3D models, you will need to define the file type and software used to create these models, otherwise, define the sprite file type and format's. Sound, input, distribution, and many other things will need to be defined. Since it's a compiled game, you will want everyone working with the same compiler. As we all know, Borland and MS don't mix very well. Drawing and sketches (if applicable) will help to give a visual aid to you and everyone in your project. Even if you have a clear vision in your head, it will be distorted by the end and it can cause serious side effects. Put it in ink and leave it alone. If you feel you have to tweak on it, leave it be until you are done. I cant stress this enough, wait until you finish until you make changes. If you feel that the changes are necessary now and can not wait until after your project is finished, then you will need to go back to the thinking stage. This is OK since you have not started on any work at this point. You might lose a little time, but it will be worth it in the end. Feature placement and function goes along with the drawings/sketches if applicable, otherwise, describe how they will fit in to your project, what their purpose is and how they will function. If you have other people involved in your project, then you will surely want to spend time on your resource section. It will be an outline for everyone and what their jobs are. To maximize your time, you will want everyone to have a job all of the time. To go even further, you will want to add 'odd jobs' that anyone can work on if they complete an objective and have some free time, even if it's sweeping the floor (considering everyone is all together and not spread out over the Internet). Define a project leader. Who ever that individual is, should be responsible, since it will be their failure should the project fail. If you are not willing to take responsability for failure, dont be the leader! Defining your resources, if any at all, includes time, money, workers and materials (depending on the job). Step back from your project and look over your objectives and everything involved so far. If you are paying people to work on the project, then you have to define a budget, and with a budget comes a time frame. Let's define a scenario
OK, so this is our 'box' that we must work in. A good thing is that there is no time frame, so you can mess around all you like. Your budget is \$50,000 and there is nothing to buy since everyone has their own workstation, and all the tools they will need. But, you are employing people to code software and they work 8 hours a day, 5 days a week. All 5 employee's are being paid equally @ \$10.00 /hr. This means that every month, \$8000 comes out of the budget.
All of the sudden, there is a time limit on the project! Since the budget is \$50,000, the time limit is approximately 6 months. You better get started! Define a time limit for each section of your project and stick to it. If you have to work for free on the weekends, then you had better do it. By now, you should have a pretty good design document. I haven't covered everything, but creating docs over and over again, you will learn more and more what you must include for everything to run smoothly. We talked about setting time limits for each section. Let's take a look at defining sections and goals. Defining sections
and goals
This is a small simple break down but it should get the point across. By following your break down, and finishing each piece individually, you will have your project finished in no time. It will also help to keep your attitude on the positive side because you can look back and see what progress you have made. Attacking the project as a whole with no direction can hurt the moral when you look back after 6 months of hard labor and you have nothing finished to look at. Starting at the
start I hope this article has helped at least one of you. It has helped me in many ways. Look for more articles from me @ Programmers-Unlimited.com |