Storyteller

Storyteller

Traditional version control systems like CVS, Subversion, Git, and Mercurial store snapshots at commit points. Storyteller is different. Storyteller records almost all developer actions as they're made, stores them in a database, and has the ability to replay them at any time. There are powerful filters to limit the amount of information that gets played back.

More importantly, Storyteller lets developers create narratives about the playbacks. These narratives make up the stories about your system. Not every developer interaction warrants a story, only the interesting parts do. The stories are easy to create and are organized and searchable by the development team. Working on an existing piece of code that is new to you? Just highlight the code and see what stories were created about that code.

Developers need to learn how their systems evolve and how to become better programmers.

The Mars Rover

How does one debug code that hasn't been looked at in years? All of the important context information that was in the developers' heads surely fades over the time it takes a NASA mission to reach Mars. This historical information is important when adding new features or fixing a bug.

Of course, this problem is not unique to NASA missions. At most companies priorities shift, people shift, and it might be years before the development team is asked to revisit some code. In addition, new hires and transfers to active projects need to get that context information in their heads in order to be effective.

Version control systems (VCS) store snapshots of our documents over time. So, if one wants to recapture that context one can use VCS, right?

The Moving Picture Metaphor

The time in between VCS snapshots is too long to animate changes. The tools used to view the differences between snapshots make it hard to see how the code has evolved.

1965 Heavyweight Championship Fight. Sonny Liston (the gentleman on the floor) proceeded to get up! This was a 1st round TKO. The picture makes it seem like there was a long protracted battle. It was a rather uneventful fight, but an incredible picture.

This one still picture does not tell the whole story.

Moving pictures do a better job of telling a story than still pictures. Traditional VCS's don't store enough information and meta-information to animate the changes in a repository. If the code hasn't been looked at in a while, or there are new people joining the development team, a well documented and narrated animation can provide insight that would otherwise stay in only a few peoples heads and eventually escape into the ether.

How can we learn to become better craftsmen without being able to see how talented developers write code?

Right now, working on a computer is a solitary activity. Because of this, we can only reflect on our own experiences. Its difficult to get inspiration from others. We intend to change the way people learn at all stages of their careers by opening up for examination how people do their work.

Some people consider developing software a craft. Craftsmen learn by watching and working with more experienced craftsmen. However, we seem to go out of our way to hide how we do our work.

Because of a lack of animating tools it is hard to see how code has evolved. Labeled commits indicate the important milestones, but what about all the work that it took to get to that point? What can be learned from watching people go down a dead path? We believe there is a lot to learn from seeing this data in an animated playback.

The software development community is in need of tools that open up the development process to encourage learning by team members. It seems like we actively discourage openness and want people to believe we don't struggle to get to a final solution- we have to let go of this ego boosting fallacy. Even great developers struggle to come up with solutions to hard problems.

When learning to play chess it is one thing to watch someone play chess as an outsider, it is considerably more valuable for that player to tell you why he is doing what he is doing, "In three moves this is going to pay off because I am going to be able to take your knight". This is exactly the kind of information that doesn't get recorded anywhere while writing code. This insight is extremely difficult to get other than learning the hard way. There should be an easier way to learn this.

It is also critically important that the craftsmen who make these decisions can comment about their work. They have to be able to tell stories. This is why people become apprentices- to watch, to hear stories, to discuss, and to get feedback from masters.

Questions? Comments? Suggestions? Contact Us for more information.