Time Cockpit in Action at Software Architects

Thursday, December 27, 2012 by Rainer Stropek

Month by month we portray customers who successfully use time cockpit for managing their service business. For our initial newsletter in 2013 we decided to write about how we use time cockpit for our own business. This article covers the following topics:

  1. How do we structure our business?
  2. What are the different reasons why time tracking is important for each business area?
  3. How do we use time cockpit in software development projects? Tips and best practices.
  4. How do we use time cockpit in consulting projects? Tips and best practices.

Three Strategic Business Areas

Before I describe how we use time cockpit to manage our own business, I want to give you some insight about how our company works behind the scenes. We structure our business into three strategic business areas: Time cockpit, CoFX, and consulting services.

Time Cockpit

The first area is obvious. We spend most of our time for our flagship product time cockpit. We enhance existing parts, develop new functions, support our customers in case of questions, and maintain our cloud-based IT infrastructure.

Cockpit Framework (CoFX)

The second business area is closely related to time cockpit. It is about the work that we do regarding the underlying software framework which we call CoFX (aka Cockpit Framework). If you use time cockpit you might have gotten in touch with CoFX already. The framework is responsible for features like scripting with IronPython, TCQL (time cockpit query language), the customizable data model, and the lists and forms engine. Above all CoFX offers a powerful .NET API which supports the creation of customizable multi-tenant SaaS applications.

CoFX is not only the basis for time cockpit. Other software vendors have acquired licenses and build solutions for different domains with it. One example is the company Treamo. Martin Sadleder and his team have built their treasure reporting solution TFM based on CoFX.

Consulting Services

The third area in which we do business is general consulting about software development on the Microsoft technology stack. For time cockpit and CoFX we spend quite a lot of time and money in research and development. Based on this knowledge we write articles, do trainings, offer coaching for other software development teams, etc.

Why Time Tracking is Important for Us

Time tracking use cases for us: 
Post calculation for projects with fixed budget. 
Billing in time & material projects.
Human resource management.

We could not run our company without a detailed time tracking database. The following lists contains some examples of topics for which we use it:

  1. Business Areas Time Cockpit and CoFX
    • Post calculation of our sprints
      We estimate the effort for work items and use our time tracking database to identify items where we exceeded our estimate.
    • Settlement of promotion projects We have received public promotion money from the Austrian Research Promotion Agency (FFG). Their documentation guidelines for working times are pretty tough.
    • Customer projects Billing of time cockpit- or CoFX-related work for customers (e.g. specific interfaces that we have implemented for them).
  2. Business Area Consulting Services
    • Post calculation of projects with a fixed price (e.g. trainings, sessions at conferences).
    • Billing in time and material projects (e.g. coaching, developing custom software).
    • Project controlling in projects with a cost limit (project costs cap).
  3. Human Resources
    • Calculate holiday entitlement for employees.
    • Manage overtime and flextime.

In this article I will only cover topics 1 and 2. I will not cover human resources as we just use the corresponding functions of time cockpit as they come out of the box.

Time Cockpit for Software Development Projects


The following picture shows how we combine Microsoft's Team Foundation Server (TFS) and time cockpit to manage our development effort in time cockpit and CoFX projects.

The SCRUM Process

It all starts with the product backlog. In regular sprint meetings we decide which ideas should be part of the next sprint. They become the sprint backlog. The decision is made based on prioritization of backlog items and available development resources. During the sprint meeting we split the sprint backlog items into more technical work items. Each work item contains an effort estimation in hours and is assigned to a responsible team member. At the end of the sprint meeting the work items are entered into TFS.

A scheduled job imports work items from TFS into time cockpit every few minutes. TFS work items become tasks in time cockpit. The corresponding script is written with time cockpit's scripting feature (IronPython). If you need to implement a similar integration of TFS work items with time cockpit, feel free to contact us. You can use our script as an example and extend/change it as necessary.

Work item change in activity log
(click to enlarge): 
TFS Work Item ChangeTFS Work Item Change
TFS work item changes are automatically displayed in your activity log in time cockpit.

TFS Integration in Time Cockpit's Activity Log

During a busy week nobody in our team manages to keep his time sheet constantly complete. Without a tool we could not remember what we did a few days ago. This very problem was the initial reason why we started thinking about a time tracking product.

Time cockpit's activity log offers a TFS interface out of the box. This function enables us to create accurate time sheet bookings retrospectively at the end of the day or week. After entering your TFS server's name into time cockpit, the software automatically visualizes your TFS work item changes and your checked in code changes in its graphical time sheet calendar. By looking at a work item's status change (e.g. from not started to in progress) we can easily find out when we started working on the task. Checking in source code typically marks the end of a task.

In order to fully benefit from time cockpit's TFS integration, we try to stick to the following guidelines as far as possible:

Best practices for getting the most
out of time cockpit's TFS integration

  1. We enter all our work items (general tasks, bugs, etc.) with estimation and user assignment in TFS
  2. We do not reuse work items from sprint to sprint. If we could not complete a work item during a sprint, we close the old one and create a new, adapted work item (internally we discussed already whether it would be worthwhile analyzing uncompleted work items in the past; currently we don't do it).
  3. When one of us starts her work, she looks for the next work item in TFS. She changes its status to in progress.
  4. We (nearly) always check in source code with a link to the work item to which the changes regard to. This makes our TFS database richer and time cockpit will show the developer to which work items her check in was related to.
  5. Whenever possible we try to concentrate on a single work item at a time. This makes us more productive.
  6. After completing a set of work items we reverse integrate the changes back into main branch. Time cockpit shows the reverse integration in its activity log.
  7. Don't forget to change the work item's status to completed. This keeps our sprint database clean.

If you use TFS like this, tracking the time you need for each work item is quite easy with time cockpit's activity log. We have the rule that in software development projects every time sheet record has to be assigned to a task (i.e. a TFS work item). For general work like customer support we have dedicated tasks in time cockpit.

Specify budget for tasks (click to enlarge):
Budget in Time Cockpit TasksBudget in Time Cockpit Tasks
You can specify a monetary budget and a budget in hours for tasks in time cockpit.

Project Controlling

The last step in the process is project controlling. Time cockpit comes with a few predefined lists you can use to analyze your database. You can easily filter, sort, and group your results. For our own project controlling in development projects we have created a bunch of custom lists based on TCQL. Here is an example of such a query. It shows a list of tasks (=work items) from a specific project. The list contains the task's budget, the actual time spent, and the ratio of budget vs. actual time. You can easily create similar queries and add them to your time cockpit menu to share them with other team members.

From T In Timesheet
Where T.Project.Code = 'MyProject' And T.BeginTime >= #2012-01-01# And T.EndTime < #2012-02-01#
Select New With {
    .Title = T.Task.TFSId + ": " + T.Task.Title,
    .BudgetInHours = Sum(T.Task.BudgetInHours),
    .TotalTime = Sum(T.DurationInHours),
    .Ratio = Sum(T.DurationInHours) * 100 / Sum(T.Task.BudgetInHours)

For more advanced data analysis we export data to Microsoft Excel and use Pivot Tables there. To save time we have created some export templates in time cockpit. If you are not familiar with Excel-based reporting in time cockpit, you find more information in this blog post.

Time Cockpit for Consulting Projects

Project and Task Master Data

Time tracking in consulting projects follows slightly different rules than development projects. The main difference is the handling of tasks. While in development projects tasks represent SCRUM work items, we use a more coarse-grained task structure in consulting projects.

I want to share our guidelines for task and project master data in consulting projects with you:

Best practices for setting
up project and task master data.

  1. For small projects it is ok to book on project-level without any tasks.
  2. Projects with a fixed price or costs cap must have a budget (monetary and/or hours) entered in the project master data record.
  3. For time & material projects, project managers are responsible for maintaining hourly rates per customer, project, and/or task
  4. Projects that contain business travel have a dedicated Travel task:
    1. It is set to Not Billable with Hourly Rate = 0 if the customer does not pay travelling time nor travel expenses.
    2. It is set to Billable with Hourly Rate = 0 if the customer does not pay travelling time but reimburses expenses. If we agreed on a fixed price for travel expenses we enter the corresponding budget in the Travel-task's Budget field.
    3. It is set to billable with the default hourly rate if the customer pays travelling time and reimburses expenses. Unfortunately this happens seldom ;-)
  5. Non-billable hours  (e.g. bug fixing, free support, contract negotiations) have to be booked on dedicated tasks:
    1. Non-billable tasks that the end customer should not see (e.g. contract negotiations) must be set to Not Billable.
    2. Non-billable tasks that the end customer should see on working time protocols are set to Billable with Hourly Rate = 0.
    3. In rare cases we use time cockpit's possibility to override the Billable flag and the Hourly Rate on a time sheet-level. We encourage all team members to prefer creating dedicated tasks for non-billable hours instead.

Regularly we work on internal projects and tasks (e.g. website enhancements, writing a newsletter article, administrative work). We have created internal projects (set to Not Billable) to which such work has to be assigned. With this we can track the ratio of internal projects vs. development work vs. consulting hours.

Using Activity Trackers to not Forget Billable Hours

Obviously time tracking is super important in time & material projects. In such projects we lose money for every forgotten hour.

I would like to share some of my personal rules for using time cockpit's activity trackers to not forget any billable hour:

How to get the most of time cockpit's
activity tracking in consulting work.

  1. Plan your time in advance using your Outlook calendar.
    I personally create Outlook appointments even for travelling time (e.g. planned flight time, planned time in the train, estimated time in the car). Time cockpit shows me all my appointments in its graphical time sheet calendar. I turn them into time sheet bookings with just one double-click.
  2. Setup file system tracker for the folders in which you store your documents (e.g. concepts, presentations, source code). This helps a lot when recalling how long you have worked on a specific concept for a customer.
  3. If you work on files in e.g. Microsoft Office, save the files with a reasonable name early.
    Do not stick to Document 1 for a long time. By giving the file a name, time cockpit can show you quite accurate when you worked on it (with its file system tracker and with the active window tracker).
  4. If your phone supports exporting your call log, import it into time cockpit.
    We support different call log formats (e.g. Android, Nokia). If you cannot find the appropriate format in time cockpit, contact us. We will try to help you importing your call logs. By having your phone calls in time cockpit's activity log, you will never forget to charge a longer support call.
  5. Use time cockpit's note function (by default Ctrl + N) in situations where you think you will need a hint when filling out your time sheet.
    I use it for unplanned ad-hoc meetings for which I do not have an appointment in my Outlook calendar.
  6. If you have multiple computers, install time cockpit on all of them.
    This will not cost you any more money. Time cockpit syncs your activity log across all your computers.
  7. After you have created your time sheet records for a certain time period you can wipe the activity log for that time if you want.
    You can use time cockpit's Delete Signals wizard for that. You find it in time cockpit's ribbon menu. In our company it is up to each employee whether she wants to keep the activity log for a longer period of time or wipe it after creating time sheet records.

Data Analysis and Reporting

We differentiate two basic types of consulting projects: Fixed-price/capped projects and time & material projects. In fixed-price/capped projects we use time cockpit internally to monitor the actual time vs. the project's budget. Today we do this with time cockpit lists and Pivot Tables in Excel. The next version of time cockpit will offer new visualization features that make it even more convenient to monitor projects' budget.

For fixed-price projects we typically do not send time protocols to our customers. In case of a costs cap, the end customer gets the same time protocol that we use for time & material projects. The corresponding project manager is responsible for creating the time protocol for his end customer. For the previous newsletter I have written a blog post describing Excel-based reporting with time cockpit. If the customer agreed to the time protocol our billing process starts. My colleague Karin Huber has written a detailed blog post about how to raise productivity by enhancing your billing process.

Enter costs per employee and hour
to calculate contribution margins.

For consulting projects we do not only look at the hours and the corresponding revenue. We also calculate the contribution margin of each project. In order to get this information we have calculated costs per hour and employee and stored it in time cockpit's user details:

If you enter costs per hour and employee like this, time cockpit calculates the costs per time sheet record automatically. It also calculates the total costs of all time sheets when you create an invoice. This enables you to calculate the contribution margin per invoice even if calculated costs change over time.

comments powered by Disqus