An interesting aspect of our standard software development practices is that we produce daily reports for all of our major Clients and Business Partners. Other software developers may query the benefit of this in that it takes time out of the day to type in what the developers have been working on. We have found that it serves us well in that:
- It keeps the Client up to date with what is going on
- It is a record of the development work performed over time
- Developers can easily recall what they did or how they did some task even years after the actual work day
- By having to write down what work tasks they performed during the day, it provides a useful internal feedback loop for the actual developer writing the daily report
- It provides a useful communication mechanism for clients or developers that are separated by multiple timezones
The last benefit is what started us out performing this practice. We started doing software development work for a Client in Pensacola, Florida which is literally on the other side of the earth to Perth, Australia. We needed a mechanism to provide visibility to the Client as to why certain tasks took a long time and other tasks were done really quickly. Its the nature of Software Development that once you get into a particular functional area, its true nature is revealed. If Software Development is totally deterministic then "you're doing it wrong". Put another way, if software development was totally deterministic then its likely you can automate the actions being performed and hence put yourself out of a job.