[caption id="attachment_314" align="alignleft" width="300" caption="Bonsai Tree"][/caption]
Trees are everywhere in software! The file system is a tree structure, menus form a tree structure, the archive widget on the right side of this blog is a tree structure. We use trees all the time. And very often they get completely messed up. I'd say 9 out of 10 project folders are a complete mess. The only people finding anything in these structures are the ones who put it there in the first place. Why is it so difficult to find anything in most of these trees? And how can we make it more easy?
Web2.0 and Google fanatics would probably say: forget about the tree structure. Just tag everything and use a search engine. I'd say this is a good approach for really solving the problem. But in many cases this is not an option. So let me present a really easy solution.
But first lets clarify the problem. Just yesterday I found something like this inside a project folder:
- meeting minutes
- status report
Question: Why doesn't this work? Answer: Where do the minutes of an architecture meeting go? We don't know. The underlying problem is that there are two criterias applied for identifying folders: document type (meeting minutes, status report) and job roles (sales, architecture).
The simple trick for obtaining an easy to manage tree structure is: "Use exactly one criteria for distinguishing the branches on the next level." In a project folder, you might use criteria like 'document type', 'project phase', 'document owner', 'date', 'module' but in every branch use only one criteria for the subfolders. In reality it is actually pretty difficult to find good criteria, but it is worth the effort, because in such a structure, it is easy to find the correct spot for a document. It is easy to find a document. And it is easy to decide that a new folder is needed.
Of course the challenge remains, to make everybody understand and maintain the structure. Feel to point them to this blog post.
Wan't to meet me in person to tell me how stupid I am? You can find me at the following events:
- Spring Data JDBC - New Kid on the block.
- Softwaredevelopment in the 21st century.
- Domain Driven Design mit Relationalen Datenbanken und Spring Data JDBC.
- Kerbal Space Program, Glücksspiel und Psychologie und was das mit dem (Berufs)leben zu tun hat.
- Javaland Freeletics
- Domain Driven Design mit relationalen Datenbanken und Spring Data JDBC
- The New Kid on the Block: Spring Data JDBC