An interesting email arrived the other day that has caused me to rethink how I document the work we do for clients.
From: emfluence Accounting
Just received this from [our client’s controller]. We will need to make changes to the invoice descriptions…
Ok, sometimes clients want more details. Normally, the project and ticket names are enough, but there are some clients who want more. No problem – let’s check who it is, and what kind of details they are after.
From: Client’s Controller
To: emfluence Accounting
Thank you for the copies of our invoices. We recently went through an extensive sales tax audit with the State. Several invoices from Emfluence were selected for review. The state initially decided that a majority of these bills were subject to sales tax even though they related to professional services. The auditor was unable to determine what the bills were for due to the brief wording, sometimes only two to three words. After we gave a more detailed description, the majority of these items were determined to not be taxable.
It would be most helpful if each invoice contained a more extensive explanation. Something like two to three sentences. Use of the words “unique,” “original,” “created,” “specific to” and other words that convey the fact that a program, website or other material is being created specifically for us would be helpful in our position that a charge is not taxable.
Well, now that is unique. I have to say, it never occurred to me to view the time I entered into our own billing system as supportive legal documentation. I’m fairly descriptive in my code comments, a little briefer in Git commits, and, until this, absolutely minimal in time tracking. It’s interesting to think about what those outside our own team, and, even further, outside our own company, must think of what we hand them as descriptions.
Maybe the mysticism and confusion about how much ‘real’ work is actually involved in any creative service isn’t the fault of an under appreciative public, or ‘cheap’ outsource alternatives. Perhaps the fault lies more in our own approach to how we explain what we do to those not in the know. Among developers, we expect solid documentation. If I ever found code or project documentation that resembled my time logs, I’d immediately invest in training for the person to help them understand why logging is so crucial. Is it right, or even ethical to expect our clients to deal with descriptions that are beyond truncated?
Here are my last 10 Git commits, and accompanying time log entries:
Project 1 for Client:
- Wed Jul 1 16:13:10 2015 -0500
Move logo changes
- Wed Jul 1 16:11:15 2015 -0500
- Wed Jul 1 16:08:27 2015 -0500
Updated the logo on the existing site with what the designer sent me.
- Wed Jul 1 15:57:43 2015 -0500
Modified the page background to be white at Tiffany's request.
- Wed Jul 1 10:35:36 2015 -0500
Splash page. Completed an ajax handler in cf for the open house and wired the page to use it.
Project 2 for Client:
- Sun Jun 28 15:48:51 2015 -0500
Modified the edit email template to pull in the content defaults for emails from the newly added api data.
- Sun Jun 28 15:39:59 2015 -0500
Additional progress on a variables plugin for medium. Still broken, but I have other code to commit.
- Sun Jun 28 15:32:39 2015 -0500
Added the newly supported thumbnails of templates to the email creation page.
- Sun Jun 21 20:58:29 2015 -0500
Modified the medium-editor-variables extension in the app.js options to load via string
- Sun Jun 21 20:57:48 2015 -0500
Modified the medium angular editor to allow string based class/function names to be added to the extensions property of options so they are dynamically generated each time a directive fires.
Project 1 for Client:
- New Home page/popup – Updates to the existing site – 30 minutes
- New Home page/popup – 18 minutes
- New Home page/popup – 45 minutes
- New Home page/popup – Prefetch issues – 31 minutes
- New Home page/popup – 1h 32m
Project 2 for Client:
- Project Management – Planning meeting – 30 minutes
- Create & Send Email – Modified the edit email template to pull in the content defaults for emails from the newly added api data. – 15 minutes
- Create & Send Email – Adding thumbnails of templates to the new email page. – 8 minutes
- Create & Send Email – Creating a variables button for the WYSIWYG – 1h 26m
- Create & Send Email – Creating a variables button for the WYSIWYG – 2h 30m
Granted, I’m obsessive about logging often, but what’s the value of those logs? I commit like mad in Git, so changes can be micro reviewed and managed if required. Those descriptions also assume a lot of project specific knowledge and developer background. I feel like any developer on this project could come in and make use of my collective comments on this project.
But for the client? Some Git commits and their time entries pair nicely, while others do not. Is it anywhere near the legal documentation the client might require? No idea, I’m not a lawyer.
Certainly not all of my logs are this descriptive. I got lucky in this example. Perhaps because I’d seen that client email, my behavior was better…for a week or two. Without reminders, it can be easy to simply drop hours into a generic bucket and expect clients to ask few questions. Let me be clear: Clients not asking questions is a bad thing. Eventually, they will have questions, and you’ll be playing catchup on the answers.
So why do we tend to give such limited descriptions in time logs? The obvious answer is that it costs us time, isn’t ‘real work,’ and isn’t part of ‘our job’. I get it. Tracking time is drudgery, and can seem like it produces nothing. You probably learned the value of comments and documentation the first time you worked with a team. If you’ve been around long enough, you’ve come to know the importance of meaningful commit messages. Those are part of your experience and identity as a developer; you might even take pride in them. Based on the email from that client’s controller, let me suggest an addition to that identity.
Let’s say you finished a project that cost $350,000, just in development. Here in Missouri, the sales tax, depending on municipalities, can be 4.225% to 9.6%. Sufficient details in your time entries will save them $14,788 to $33,600 — just in prevented taxes. Congratulations!
On the flip side, if you didn’t sufficiently log time, it might cost them that, and more. Remember that audits require human interaction. The client is going to lose a lot of man hours trying to prove they don’t owe taxes. And guess what? So are you. When they ask for more details about what your company did for them, it won’t be your controller providing details. To save time, you didn’t provide them in the first place, remember? So, one to three years later, you might be going back through the Git log trying to figure out exactly what it is you were doing all that time ago. Oh, and here’s the bad news. You’re somewhat unlikely to be able to bill for what you should have provided in the first place. It’s my fervent hope none of you ever lose a weekend to that debacle.
So, take some time to answer this every time you are doing work, “What did you do today?”