I am currently working on a project of my own for a little over 2 months (not much time on my hands). The purpose of this project is to be able to remotely update all of my Linux systems from one graphical application.
The problem I am having is I am building two applications: the client and the server. As the size of both the programs increases, I am finding it harder to manage what needs to be done.
While coding I am trying to think of things that need to be done and with the addition of another program it’s starting to make my head spin.
Is there any technique by which I can track the features: yet to be implemented and currently under development features in a big project?
1
The simplest thing to manage a project is a list of things to do.
The simplest tools for this that still allow you to filter and re-order your task in a convenient manner are a spreadsheet (see Joel’s article Painless software schedules) and a (hierarchical) todo list.
A hierarchical todo list allows for subtasks in a more convenient way than a spreadsheet would (you would have to repeat the parent task there to maintain the relation between the task when re-ordering). The best I have come across and have used for many pet projects of my own is ToDoList from Abstract Spoon.
Software supporting SCRUM and/or kanban boards are another way of keeping track of what to do. Trello and Pivotal tracker come to mind easiest, but there are plenty more online, most of which offer personal (or limited) use for free.
1
I guess it will help You a lot if You try to right down every thought of List of activities on a paper. Then You attack one problem at a time. During Your Implementation You might find some new ideas, You can write them.
Also it is a suggestion that before You write an implementation You write a pseudo code, that will reduce Your rework.
Hope that helps
Update:
The key to writing Pseudo code is You don’t think the problem as a giant chunk. If You think it like that You might end up in the situation as You are in now. Instead I would advice You to take that problem, break down into steps, further if possible break down those small steps into more smaller steps. Do this process recursively. You will certainly end up writing the pseudo code and hence Your problem will be solved. I will try to give an example.
Suppose I have a problem: I need a program that makes coffee.
Ask the question to Yourself: what Do I need to make a coffee?
Sugar, Milk, Some hot water, Kettle, Cup and coffee ofcourse 🙂
Step1: I need a kettle that should have some hot water in it.
Step2: I need to somehow add some coffee in it.
Step3: I need to add milk (as per the formula) in it.
Step4: I need to add some sugar in it.
Step5: I need to pour that into a cup and serve.
*Disclaimer: * I am not a good coffee maker 🙂
I guess You got a feeling of how to tackle the big problem.
1