Expanding on a problem I touched on in a previous entry, I want to explore the problem of using software engineering best practices as a student.
As a computer science student, we get told that there are certain things that we should do when developing code. Some are simple, little things, like documenting code as we write it. Some are a bit more complicated but still readily feasible, such as using version control, or writing test cases. However, other things are much more difficult to do.
Really, the problem comes down to a matter of scale. For instance, issue tracking is a very good idea; it allows us to readily keep track of what needs work. Unfortunately, there is no good way (that I know of at least) to do this on the scale at which we students work (that is, one to circa four people). Sure we could setup our own personal bugzilla or what-have-you. However, not only is this overkill, but there is a rather difficult issue to be worked out: where do I install it so I can access it anywhere I would want to work from?
Alternately, we could use // TODO: type comments to keep track of issues. However, in doing this we no longer have a single central repository of issues. Additionally, by doing this it becomes much harder to get a high level view of the project’s issues.
I see two potential solutions to this. First, as we’re looking at this at the university level, the computer science department could provide these services to students. This would potentially bring up other problems, for instance can I use this system for personal projects, or just assignments? What about privacy? Who can see the issues for a given project?
The other solution, and one I’m thinking about pursuing, is to create a small standalone application to handle issue tracking. To work well it would need to be able synchronize/merge issues between instances (thus allowing you to work from multiple systems). Additionally, it would need to support multiple users, or really merging from untrusted sources. Finally, some sort of integration with source control systems would be nice.
This would be a godsend :)