After Software Edge was sold, I worked for INTERSOLV for about a year, and started my second company, TeamShare, in early 1996. This was in the very early stages of the Internet taking off, so like a lot of people, I was thinking about how to do something useful in the new era.
I went back to my roots with defect tracking, which by now I had built up nearly four years of domain expertise in. Being shy and introverted, I didn't do any customer interviews at all. I simply drew upon the customer experience I already had from building DCS.
Based on that experience, I thought a browser-based interface would solve three problems. First, it would be easier for distributed teams to work together, and I knew from DCS that there were lots of customers that had distributed, or extended teams. Second, it would eliminate client installs, which caused a lot of problems with DCS when we did upgrades from one version to the next. Basically everyone had to do the upgrade at the same time, and people using an old client version couldn't talk to the new server. It was hard for people to coordinate their upgrades. Third, there was a technical problem with the way DCS handled its user inbox, which was used for defect notifications. If someone hadn't logged in for a long time, we had to synchronize changes down to the desktop. It was a slow process and made a lot of customers angry. I figured a browser-based interface would eliminate the need for this desktop synchronization.
I wasn't sure if making it web-based would be enough of a differentiator from PVCS Tracker, so I looked for a couple of other features I could add to make TeamTrack better than PVCS Tracker.
DCS had a lot of built-in reports, which customers liked. We also had the concept of projects, which allowed customers to delineate their development groups from each other. The reports worked on a per-project basis. This worked well at the tactical level, but as upper management started to use the system, they complained about not being able to see the big picture. There was no way to run reports across multiple projects to get a consolidated, high-level view. I remember Bob Pinna telling me, "Kevin, people want cross-project reports. If you can just crack that nut, we'll have it made."
To deliver this feature, I decided to implement hierarchical projects. I figured if projects could be arranged hierarchically, then reports could be run recursively across multiple projects, and customers would have what they'd been asking for.
The other need I decided to tackle was required fields. What customers said to us was, "The reports you have in DCS is great, but they're useless to me. No one ever fills in the fields they're supposed to, so we don't have good data to use in the reports." So I thought a lot about how to have a good implementation of required fields. I realized that it wasn't just about getting the required fields filled in, but they had to be filled in at the right time. So I decided to build into TeamTrack the concept of workflow, consisting of states and transitions. I could then associate required fields with each transition in the workflow, and customers would have what they asked for ... fields getting filled in with good data to facilitate proper reporting. To my knowledge, TeamTrack was the first defect tracking system to implement workflow, a feature which went on to be copied by nearly all defect tracking systems that came after it.
So let's review what I did. I didn't conduct any interviews, but I had the luxury of not doing that because I had all the experience from DCS fresh in my mind. The ideas I had weren't born of my own fanciful wishes, but were based on real problems experienced by real customers.
But there's something else that I think is also interesting. In DCS, no one asked for a web-based interface, they asked for simpler client upgrades and faster inbox refreshing. No one asked for hierarchical projects, but instead they asked for high-level reports across multiple projects. And they didn't ask for workflow, they asked for a way to make sure fields got filled in at the right time. It was then up to me, using the domain expertise that I had by now acquired, to map the customer needs into specific features. That's an interesting part of the process. You can't expect customers to tell you what features to add, they just tell you what their problems are and then you have to figure out how to design a system that will solve those problems.
So once again I think we see a combination of the two schools of thought about idea creation that I mentioned in Part 1 of this blog series. Customer feedback was an important part of the process. But so was applying personal ideas, creativity, and domain expertise about the problem.
In the next entry in this blog series, I'll examine how applicable these lessons are in the current era of software development.
Powered by: newtelligence dasBlog 2.3.9074.18820
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2010, Kevin Dietz
E-mail