Friday, July 31, 2015

Faster documentation? Catch up!

This is a memo which I just send to the stakeholder who asked me to try and find a way of dealing with documentation. He finds it not necessary having the documentation run far behind the release of the functionality it belongs to. And I think he's got a point.


Memo:

Customer documentation

Since we want to continuous deliver software, we must also continuous deliver the documentation for it. If the user manual constantly is being delivered far behind the functionalities, than the customer has software and no idea how to deal with it. This by the way is alarming already.

Introduction

I have a hard time to always be confronted on the fact that my recommendations are structurally too much for a company. In fact, I think that every individual has a hard time having that, because a company is mostly depending on more than one person who makes decisions. So in short, this memo might be at first glance too blunt to deal with. That being said, this memo could be a real good sketch to have more success.

Current status

The only thing we do now is add release notes to the user story, that’s part of the definition of done. Other documentation is only technical and is been kept in the user story. This documentation is mostly information on how the user story is meant to be and is how it is evolving during the implementation. All implementations are incremental, that means that full functionality is at the end of all implemented incremental stories. And each incremental story is a stripped version or working part of the full functionality. Each time we deliver or finish a story, the user has something to work with.
The developers have gotten knowledge of the user story by having refinement, creating the user stories with their product owner and by collaborating within the team during the implementation. That means that, if there is information on the subject, it is in a minimum amount. This is just enough to do the implementation well. That is the general idea right now.
After publishing the functionality, a team picks up the new features and blend it in the existing documentation, create ‘How to’ videos and produces manuals.

Future possibilities

If I think of adding documentation to the user story, which tells the user how to deal with the new functionality, I foresee a constant changing documentation with adding new functionality. That’s because we implement incrementally. Also, when we have delivered a piece of software in former sprints which is implemented and documented months ago, it’s hard for a developer to change this documentation, because the source code isn’t hooked on to the documentation. The source code and the documentation (user manual) are two separate things.

Suggestions

To continue after these explanations, I would suggest three things. These things are each responsible for reducing work and reducing documentation changes. Also these things are agents to get a better understanding of the functionality and therefore better produced code. Let’s take a look at them:
·       Let a key user frequently or constantly spend time on a development team. This ensures that we make exactly the software the customer needs. And therefore the minimum amount of time will be spend on documentation. (Cause we don’t have to change it much)
·       Also let someone who is responsible for user documentation spend an hour a day or more on the development team. He is at that moment in the middle of the change so everything is fresh by understanding the functionality.
·       Let a user experience (UX) colleague frequently spend time on the team and work together. Not as we do now separately. Currently it’s like this: the development team thinks they don’t need a user experience guy much and the user experience guy thinks the same about the development team. But this tight collaboration ensures us that we make the software so intuitive that we have to document less. And that leads us to spend less time on writing or altering one, in definitely.
The people who are drawn to the team will give us good and quality documentation. On the other hand there is a synergy step here. The development team gets better at writing functionality, the key user gets better quality software, the documentation is written due one on one collaboration with the developer (a tester is a developer as well) and the user experience guy (or woman) is working both with the key user and the development team all by working together on the job. And that brings us very good quality software!

Summed up

And though we only wanted better documentation, we end up with:
·       a better process,
·       better understanding of the program,
·       better functionality, which becomes more intuitive,
·       no delay due documentation written afterwards and
·       of course what this has initiated in the first place: good and fast documentation!

Postscript

I know I’m speeding up too fast in contrast to the company and I want more than I probably can get or accomplish, but this is the ideal picture of a good running software development. This is how we get a good product and good documentation for the customer (you may also read: good collaboration with the customer).
And finally I really must point out that the more you spend on caring for development, the more intuitive the software gets and the less the customer needs to learn and read about it. We also need less courses to give to the customer. And if the software is more intuitive the threshold becomes flattened for people who aren’t specialized in, but want to have bookkeeping software.