View
273
Download
3
Embed Size (px)
DESCRIPTION
These are the slides for the presentation and demo I gave to the Software Craftsmanship group.
Citation preview
Telling Stories About Software
DevelopmentMark Mahoney
SCMC December 2012
www.storytellersoftware.com
The Learning Dilemma
www.storytellersoftware.com
● Working on a computer is a mostly solitary activity
The Learning Dilemma
www.storytellersoftware.com
If you are not in school, how do you learn to become a better software developer?
● try, then fail, then fix● read books/blogs● read code● commit logs● code reviews● pair programming● Q&A sites
Modern VCS
www.storytellersoftware.com
Modern VCS (git, mercurial, svn) seem to have been built with 1980's constraints
● optimized for efficient disk storage● rely very heavily on the simple file system● clunky command line interface
Linus on Git
www.storytellersoftware.com
"I didn't really expect anyone to use it because it’s so hard to use, but that turns out to be its big appeal"
"You'll spend a lot of time trying to get your head around it, and being ridiculed by the experts on github and elsewhere"
"I've learned that no toolchain can be too complicated because the drive for prestige and job security is too strong"
Linus on Git
www.storytellersoftware.com
"The first Git For Dummies and Git Visual Quickstart books are going to be out in a couple of months, and that is the beginning of the end as far as I'm concerned"
"I have a text editor I've been using myself that is so complicated it makes VIM look like Notepad — maybe I'll release that."
Modern VCS
www.storytellersoftware.com
These constraints prevent one from:● visualizing the exact order that changes were
made● understanding why many changes were
made● easily being able to learn from one’s peers
Modern VCS
www.storytellersoftware.com
Agile Software Development
www.storytellersoftware.com
What would an agile version control system look like?
Agile Software Development
www.storytellersoftware.com
"Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage."
When things change we must be able to go back and understand how the system evolved in the first place.
Agile Software Development
www.storytellersoftware.com
"Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done."
Being lost in a sea of code without context is one of the easiest ways to de-motivate developers.
Agile Software Development
www.storytellersoftware.com
"The most efficient and effective method of conveying information to and within a development team is face-to-face conversation."
This is so true, but how often do we forget the details that are so important?
Agile Software Development
www.storytellersoftware.com
"Continuous attention to technical excellence and good design enhances agility."
There is no better way to learn than to be able to see how great developers write code.
Agile Software Development
www.storytellersoftware.com
"At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly."
It is sometimes hard to be reflective of one's self, opening up the history of your work can help one (and one's peers) to be honest about how the team is working together. This is why we have code reviews, post mortems, etc.
The Storyteller VCS
● Integrates with IDE's and passively tracks
○ all keystrokes○ all deletes○ copy and pastes○ file operations (rename, delete, move,
copy, etc.)● Records all of this information in a
database rather than the file system
www.storytellersoftware.com
The Storyteller VCS
● No need to explicitly commit, the entire history is in the database
● Playback with filtering○ time filters○ developer filters○ document filters
● Promotes pair programming with developer groups
● Character based merging
www.storytellersoftware.com
The Storyteller VCS
Developers can tell 'stories' about the their systems:
● Feature story● Refactor story● Bug fix story● Code review story
We think of this as "animated commit logs".
www.storytellersoftware.com
The Storyteller VCS
Every relevant IDE action becomes an event that is added to the database
● timestamp● developer group● branch● document● previous neighbor
○ by document○ by time
● paste parent
www.storytellersoftware.com
The Storyteller VCS
www.storytellersoftware.com
Storyteller Architecture
www.storytellersoftware.com
The Storyteller VCS
www.storytellersoftware.com
DEMO
The Storyteller VCS
www.storytellersoftware.com
Issues to be resolved● Will developers put in the effort to create
these stories?● How much value will these stories provide for
a team?● Are developers too nervous about
managers/peers seeing all their little (and not so little) mistakes?
What's next?
www.storytellersoftware.com
● User studies (I'm looking for pro volunteers)
● Developer statistics● Downloadable embeddable playbacks● Code repo site
○ host code○ host storyboards for teaching and learning
The Storyteller VCS
www.storytellersoftware.com
Questions??
Thank You!
Mark Mahoney [email protected]
Extra information
www.storytellersoftware.com