Introduction
One common task in programming is to keep track of what problems are pending. For this purpose, I use a "hierarchical to-do list": a list of items, each of which can have sub-items.
All you need is Microsoft Word. Alternatives are available as freeware or shareware, but in this article, I will concentrate on Microsoft Word.
The material in this article applies to programmers using any language. Moreover, keeping a list of things to do is very useful outside the programming world.
The need of a to-do list
For the remainder of this article, I will suppose that you do programming work.
A beginner in programming might easily concentrate on the - obviously important - technical details, how to make things work at all, how to make it easy to use, how to make the program fast, and how to make the program look good - and forget about other, equally important, details. One of these details is simply to keep a list of things to do.
The result of working like this is easy to guess. The programmer, consulting with the end-users, or testing the program by himself, will see that something needs to be done, but he might easily forget this later, until somebody reminds him, or he stumbles on the problem again.
Therefore, I strongly suggest that when you consult with the end-users, clients, or whoever else has to give important input on the program, you always take a sheet of paper with you. As soon as the consultation makes it clear what exactly is required, you write it down. If something requires additional consultation, write that fact down, too.
Then, when you are back at your computer, copy your notes to your hierarchical to-do list, as explained later in this article. As soon as you have some spare time, organize this list, especially by priorities. You might also want to organize by other criteria, for instance, departments (that is, keep everything related to the Sales Department together), or by dates (for instance, a certain activity may have a deadline, or you may need to repeat some maintenance task every week or month).
Also, when testing your program, you might see some strange behavior that needs to be investigated, or some nice option you want to add for the user. Write everything down in your hierarchical to-do list.
Write down every small detail, whether it is urgent or not, and whether you think you will have the time to do it within the next two days, or only in one or two years. Otherwise, if you don't write things down, you will forget many of them.
The hierarchy
Imagine what file-management would be like if you didn't have folders and sub-folders. You would have thousands of files in a single huge list.
Instead of this, with modern computers you can keep groups of related files together in a folder. You can group folders, once again, into higher-level folders. Thus, you can see the list of only those files that are relevant for a particular topic, for instance, "class libraries of my accounting system".
Similarly, with a to-do list, it helps to group related items into higher-level items.
Step-by-step example
The following steps will create a sample hierarchical to-do list, for a programming job.
The following screenshot shows the expanded outline:
And here, you see a partially expanded outline:
Available options
Single-clicking on the "+" sign to the left of a text will select an item and all of its sub-items. Some actions, like changing the level or moving up or down, will affect everything you select.
The Outline Toolbar has the following buttons:
Working with Style
The hierarchical list will not print as you see it on the screen in outline mode. You have to switch back to normal ("View | Normal"), to see how it will be printed.
To provide the same indentation as you see in Outline View, you have to change the definition of styles "Heading 1", "Heading 2", etc. This will also affect the fonts you see on screen.
The quick way to change a style is as follows. Select a paragraph which has a certain style (for instance, "Heading 2" - a paragraph of the second level in the outline), and do some change - for instance, change the left margin, or do some changes to the font. Click in the text area of the "Style" selector (the first item in the "Formatting" toolbar - to the left of the font name), and press ENTER. The default option now asks you whether you want to redefine the style to reflect the changes done to the paragraph. Press ENTER once more, to confirm this.
Some technical explanations
If you know Microsoft Word well, you will have noticed that I am "abusing", so to speak, the Outline mode, in the sense that I am using it for something quite different from what it was originally intended for. Specifically, I am creating a document which contains only "header" styles, that is, titles and subtitles, but no normal text.
Word allows only 9 levels of headers, therefore, the outline is also limited to 9 levels.
Alternatives to Microsoft Word
Not all word processors have the outline feature. For instance, the freeware StarOffice 5.2 has the menu commands for an outline mode, but it doesn't work correctly.
You can create an outline with indentation in any word processor or text editor, but then you can't collapse the entries.
You can use Windows Explorer, and create your notes as a folder structure. This has some limitations, too: You have to add special characters for correct sorting, and you are restricted to relatively short notes.
Some outline programs are available as well. You can search sites like www.download.com for words like "outline".
Visual FoxPro programmers can also program something themselves, using a treeview. For a quick start, you can directly use, and later adapt, the treeview sample, in the Visual FoxPro samples.
Conclusion
Keeping track of things to do is an important part of computer programming, or of many other tasks. Being able to organize this information hierarchically can keep you even better organized.