I’m leaving CERN at the end of this month and thankfully I’ve been able to handover a lot of work personally to my successor, which is not common practice in this organisation. Projects are normally maintained by a supervisor who has been involved in starting or steering the project, but may not be familiar enough with the software to comprehend some of the design decisions or the evolution of the software. There’s another category though, which my supervisor fits into, he
enjoys loves programming but he’s just too busy with the rest of his many duties to be involved in the everyday activity at a low enough level.
The process of handing over source code got me thinking about how to successfully leave your position, ensuring that you’ve done everything you can to provide a solid foundation for the next maintainer. Is there a right way? Is it all subjective? What’s the worst case scenario?
The situation here is a difficult one, I’m the main contributor to the current project, my supervisor is aware of the high level processes involved – but the software is developing quicker than can be relayed or even remembered at a managerial level. Whilst documentation exists, it’s difficult to update it entirely when deadlines are pushing closer and closer. Yes, I’m breaking the rule of a lifetime by not documenting my work! I am keeping my successor in the loop and ensuring that she is aware of this fact, so it should not come as a surprise that there is a gap in the documentation which can be filled by reading my design documentation and my notes but I simply don’t have enough time to complete the document changes.
To top off this situation I’m fighting a long term bug in a vendor’s software and I’m writing a new bit of software which is quite important to integrate us with a new Hudson service (We’re already using our own, but due to organizational requirements we must put a lot of effort into making it work on a group led service), so I’m squeezing weeks of work in to the 5 days before I leave. Fun!
I don’t think there’s ever a “good time” to leave, and it would always be nice to have more time – even though this isn’t at all practical or possible. As a result of my increasingly high workload, I’ve started handing over my daily tasks to allow me to spend more time working on finishing my implementation stage.
How do you cut emotional ties to software and stop worrying about what happens after you leave? After all, your source code is your creativity and something you worked on for the past 6 months, 12 months or even longer. I think you can only do your best, document your design and reasoning, get things working right or if you can’t, then help the maintainer by explaining the things which aren’t perfect and cleaning up wherever you can.
What do you do? What is your experience of handing over your projects? Could you do more?