As you may have noticed I’ve been a bit “off the radar” over the past couple of months. My apologies for that. It seemed that as soon as I wanted to settle down and start work on Timesheet NG a whole load of work came in, keeping me occupied for the last few months. To top that off I have exams for my degree (final year!) in May. Oh, and we’re moving country!
But all this time not spent on Timesheet NG has allowed me to think about Timesheet NG: what I think it is, could be and direction it should go. So here are just my thought, I would appreciate your comments on them.
Firstly I want to try and establish what Timesheet NG is not (or shouldn’t become)
- Timesheet NG is not a project management solution - there are plenty of other PMs out there, such as dotProject, web2project, PHProjekt etc.
- Timesheet NG is not an invoicing and accounting system - have a look at Bamboo Invoice
- Timesheet NG is not a CRM system - SugarCRM
- Timesheet NG is not an organiser, planner, address book nor issue tracker
So what is Timesheet NG?
Quite simply Timesheet NG is a way of tracking time spent on specific tasks.
Timesheet NG has two core functionalities:
- Tacking the users’ time
- Generating a report of what the users spent their time on.
That is the core of its functionality, and as such what this project should focus on. We need to make Timesheet NG the easiest way for users to be able to record the time they spend on tasks, and allow them to easily generate a report of this recorded time.
So what will this mean for Timesheet NG?
The way I see it, assuming the above statement to be true, the current incarnation of timesheetphp is upside down!
For a user to track a task they have to create a client, then create a project, then create a task, and then (and only then) can they start tracking and recording their time.
The very first thing a user should be able to do when they first install Timesheet NG is to record their time! So the flow needs to be more along the lines of:
- Start the timer
- [work]
- Stop the timer
- Select which task the recorded time was spent on, or create a new task that this time was spent on
Once the users have tracked their time, then they can generate reports of it as usual.
As I’ve said above, Timesheet NG is not a project management system. However, to track any time currently you have to enter client, project, task. But what happens if user already has a project management tool, or even an issue tracker that dictates what tasks they have to do. Are they really going to enter the details again into Timesheet NG, just so they can record and report their time spent on the tasks. I personally can’t be bothered to do that, and we shouldn’t force the users to either. Instead we should allow Timesheet NG to use the current tasks/bugs/milestones/whatever from the other systems the users currently, er, use.
Integration
Using the other systems as a basis for the tasks within Timesheet NG will obviously require integrating with the likes of dotProject, Trac, Mantis, Bugzilla, WebCollab), etc. This will most probably be quite tricky to get right, however, I think the benefits to Timesheet NG will be that we get to focus on the two main functions of the project (time tracking and reporting). As we’ll be focusing on just these two functions, it will enable us to really get these right, exactly as the user would want them.
However, what if the user doesn’t already have use a PM or issue tracker?
I still think we should have the client/project/task system, but not as developed or feature rich as full blown project management systems. We need to really focus on our core functionality. I personally think that we shouldn’t restrict the user at all. If he/she wants to track the time for a project on Web2Project, fine, the next day if they are working on a bug within BugZilla, great, we can handle that, next day, just a simple bit of work not in any PM tool, no probs, once you’ve tracked your time, just let us know what it is and we’ll report it for you when you need us to.
User Management
Next is the issue of user management. Currently the struture is that you have admins and others. Admin can obviously do adminy type things on top of the usual tracking of the time. Normal users can’t.
Now I think I’m going to be controversial here, but why not - it’s a long post and if you made it this far you might need waking up!
Scrap it!
Yep, that’s right - get rid of it, it’s an old-fashioned, out-dated way of doing things (plus it’s hierarchical and a systematic display of oppression by the bourgeois elite!…. Sorry, going off into college-Marxist mode there)
But how will managers be able to report on the time spent working by employees? Good question, but run with me on this one.
Instead of having admin/others system, replace this with a “network” style system. Each user is responsible for their own time, their own set up (what tasks they are connected to etc) so they have full control of the way they want to do things - link into PM tools, keep it self contained, whatever. The allow users to be able to “share” or “network” their timesheets together - similar to Google Calendars I suppose. This way managers can network with employees, see what they’ve been working on and generate reports. “Employees” on the other hand can share their timesheet with their manager, but only share specific tasks, projects, clients worked on. This way a freelancer (for example) can have one timesheet that he shares with multiple employers, but those employers only see the stuff to do with them.
Obviously this will need some fine tuning, and will have to respect the privileges of other PM systems, but as an idea, please let me know your thoughts.
Cripes, long post - I’m now off to enjoy the sun in Berlin
Cheers
Rob