Tomorrow I will start a 6 month attempt to document my application. Management has decided that it would be nice that someone could take over when I will be absent for a longer period of time or for when I find another job. I can only agree with their point of view. It would however be easy for me to say that my code is full of automated tests and the code is well layered and thus completely understandable, but that would not be taking into account that someone would need to earn the decisions I took to get what I have now. Someone would also have to learn the why an how our business works and that would be the hard part. So we invited over three independent consultants and asked what they would need to make it easy on them to step in if I was no longer there to help them. All three came with the same answer. Technical and functional analysis is what would make it easier on them to get up to speed quickly. And as usual they all gave us a quote and we took the cheapest one ;-).
So the first step is to do an functional analysis in the form of Use cases and with some UML. I already have one I did 4 years ago when I started all this. Now we will just do one after the facts. Which makes it quite a bit easier to do. This step should take about 2 months. After which I will be totally crazy and drained. But so happy that it is finished. And then we will start the functional analysis with another person. And then I will start the user documentation which is a bit out of date. Repeat and rinse every year.
The question of course is how long it would take someone to come in and take over what I did for the past few years on my own. Will someone easily understand the madness even though they can count on all the automated tests? With all the documentation that will be in place will someone actually read any of it? Is this a waste of time and money? I have no answer to the above questions, I have no idea what the best course of action is. I guess it depends greatly on the person that comes after me. Does he know any of the frameworks I use. Does he understand ORM, OO, Continious integration, source control?
What does it take for you to know a system? Do you jump straight in?
All this considering that the field I work in is very scientific and we invented things you will see nowhere else. It is not your typical ERP/banking system.
I will be happy when this is over. See you in six months on the other side.