Starting out as a new company in October 2009, it was always the plan to be more than a 1-man company. ImplicitDesign was never an exercise in being a consultant, it was a means to create the freedom to investigate interesting ideas, ideas which could never be fulfilled as a single person, ideas which needed a team.
And so even though I knew nothing about team dynamics, marketing or policy direction documents, it was still clear that we needed a few principles to guide the budding team. These have stayed essentially the same at ImplicitDesign since then.
The first principle to mention is time tracking.
I hated timesheets my whole employee career, as I think most people have. The Friday slog of trying to guess what I’d worked on that week, or populating the bi-hourly spreadsheet entry, conflicts with everything I cherished about being a developer and not a manager. And I rebelled it at every opportunity.
But as the sole developer of a small company that’s a luxury I couldn’t continue to have. My work times were not fixed, partly since I was trying to complete a Phd at the same time (I eventually dropped out, but more on that another day), and partly I had new-born twins.
Plus I had multiple concurrent projects, and so it simply wasn’t reasonable to try and remember what I had done on any given hour, let alone any given day.
More than that, I wanted clients to trust the time they paid me. If I worked 2 hours and 25 minutes, that’s what I wanted to charge, not 3 hours and not 2 hours.
So the only solution was to clock-in when starting work and clock-out when stopping work. Accurately, consistently, and quickly.
With that decision made, the choice of right tool arose. A big influence here was dodgy internet. Those days in South Africa, who knew if the internet would work all day, and who knew if I’d be in a place with WiFi. So the tool had to be offline compatible.
Enter the scene, Emacs. There are enough flame wars about a 40 year old piece of software to need to encourage another one here, but it was already my editor of choice and it comes with an integrated clocking mode (org-mode) which simply updates a text file (and it was written in the year I was born, something I didn’t know until I looked it up for this article but which can only help).
Originally I simply converted that Emacs text file to an invoice and sent it off. We’re a little (a lot) more sophisticated now, but even so most devs at ImplicitDesign still use Emacs for clocking because it’s just so fast and convenient.
In the last few releases ImpTime has become efficient enough to compete with the ease of Emacs but it’s still a close call and we might always support that option (more on ImpTime another day).
Time tracking is still not as much fun as it could be, but we’re implementing the next level into ImpTime now, namely auto-clocking, which we believe will remove even this pain.
The benefits of having accurate times per issue extend beyond billing, as we’ll see in a later post on AI assisted estimations.
(continue to granular issues)