Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

Assume that you're a sole developer leaving a job. What kind of information/material, outside of the code itself, should you create and leave behind for your replacement?

An obvious answer is "whatever you would want at a new job" for sure, but it's been a while since I started a new job, and I forget what the most important things that I needed were back then.

I'm thinking:

  • accounts/passwords
  • location of equipiment

What else?

share|improve this question
3  
I believe you mean "successors", not "predecessors". – David Thornley Oct 8 '10 at 19:40
@David Thornley: indeed! thanks. – Steve Evers Oct 8 '10 at 19:54
4  
A box of tissues and a new squeezy stress ball. – dietbuddha Feb 1 '11 at 8:24
I'd leave them a checklist – gnat Feb 1 '12 at 22:05
A revolver and a single bullet. – Wyatt Barnett Feb 1 '12 at 22:05
show 1 more comment

marked as duplicate by gnat, MainMa, MichaelT, thorsten müller, Martijn Pieters Mar 31 at 11:06

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

11 Answers

  • Accounts & Passwords
  • Server information
  • Good code
  • Documentation
    • Database diagrams & explanations are amazing
    • List of oddities in the code
  • Procedures
  • Explanation of manual processes, or occasional, non-obvious, work
  • List of programs they used or found helpful
  • Contact information ;)
share|improve this answer
2  
+1 for Good Code...and everything else. – Ryan Hayes Oct 8 '10 at 19:41
list of source control locations! – HLGEM Feb 1 '12 at 22:07
@HLGEM if the code they use already is in source control you just have to check the remotes – Demizey Mar 31 at 15:39
@Demizey, Maybe your source control is easier to understand than ours, but I just transitioned from ope project to another and I had to show my replacement the many different locations she should put the code depending on whether it was a one-time data fix, an import, an export, a report, a change to the application or a client customization. And when you work on a cross-functional team as I do, I have maybe 30-40 different places in source control to know about. – HLGEM Apr 1 at 13:45
I'm happy I answered this. I recently left the job I was at where I wanted all of this, and this gives me a good checklist of what to write up. – Slokun Apr 4 at 20:47

A strong cup of coffee and an apology note.

Is what I wish I was left.

  • Documentation. How hard is it to write a few comments? Build notes, deployment notes, moving the system notes. What to do when you restart and everything is gone.
  • Papers. Write up why it's being done this way so I don't have to wonder why you aren't doing it another way. How does the backup system work, how does the server respond to loads, testing, test cases, use cases.
  • Notes. "When using the database, don't ever say SELECT * FROM clients. We aren't sure why but it dumps the database".
share|improve this answer
4  
+1 for why's... – user1249 Oct 9 '10 at 2:33
   
+1 Been there, dumped that core. :P – dietbuddha Feb 1 '11 at 8:22

This is begging for a down-vote, but three envelopes...

A fellow had just been hired as the new CEO of a large high tech corporation. The CEO who was stepping down met with him privately and presented him with three numbered envelopes. "Open these if you run up against a problem you don't think you can solve," he said.

Well, things went along pretty smoothly, but six months later, sales took a downturn and he was really catching a lot of heat. About at his wit's end, he remembered the envelopes. He went to his drawer and took out the first envelope. The message read, "Blame your predecessor."

The new CEO called a press conference and tactfully laid the blame at the feet of the previous CEO. Satisfied with his comments, the press -- and Wall Street - responded positively, sales began to pick up and the problem was soon behind him.

About a year later, the company was again experiencing a slight dip in sales, combined with serious product problems. Having learned from his previous experience, the CEO quickly opened the second envelope. The message read, "Reorganize." This he did, and the company quickly rebounded.

After several consecutive profitable quarters, the company once again fell on difficult times. The CEO went to his office, closed the door and opened the third envelope.

The message said, "Prepare three envelopes."

share|improve this answer
Darn, I was going to post this but you beat me to it. – PSU_Kardi Jan 31 '11 at 21:46

My email address, or perhaps even phone number.

In my experience it's difficult to get every detail written down, so the best thing is to be available (to a certain degree) if your successors need more information.

share|improve this answer
2  
e-mail sure, but rarely do I ever give my phone number out to anyone that I don't know well personally. – Steve Evers Oct 8 '10 at 19:58
Good point, I toned down the part about phone number. – Vetle Oct 8 '10 at 20:04
This might be a political issue whether you can do that or not. – user1249 Jan 31 '11 at 22:00
@ThorbjørnRavnAndersen Political or social? – Aaron McIver Feb 1 '12 at 22:45

Documentation of the programs you have written e.g. their purpose, location of source files for future development, passwords, etc..

This can either be within the code as a comment or outside in plain sight.

share|improve this answer

More than just documentation, I'd like to know why certain decisions were made when they were made. We're using SWIG currently on a project and one of the other developers wanted to know why we just didn't use Boost::Python. The simple answer was that the customer did not allow the use of Boost at the time. Now is a different story.

Such things will help them not only in understanding the project but also what limitations/constraints/challenges your implementation overcame. It'll give them a starting point for future maintenance and feature augmentation.

share|improve this answer
The key advantage with having a recorded “why” is that it allows you to revisit the decisions when the constraints change. Heck, it will help you understand what those constraints actually are. Very valuable. – Donal Fellows Mar 31 at 17:41

If it is a desktop program, how to build the entire system from scratch (may be several separate programs), how to create a package for distribution (what dependencies it has, e.g. versions of .NET), and how to deploy it to servers for download if that is applicable, or burn it to a CD or DVD.

If it is a web-based program, FTP and (if applicable) SSH access to the server, and what tools are used to locally create and test the code.

If it is an embedded system, complete instructions on building the binary image, what tools are used, how to download and flash the code into the product, how to set up the filesystem on the device, if any.

share|improve this answer

One thing I didn't see anyone else mention (although I might have overlooked it) is to document how to setup a dev environment. I realize that most of the time it's just install a few things, get latest, compile and you're done. However sometimes there's more to it than that (SharePoint is one situation that comes to mind) and documenting what flux capacitator has to be configured in what way will be very helpful for the poor soul following you.

share|improve this answer

We'd all like a complete data flow diagram of the system with a list of functional requirements. More than likely you never got that when you wrote the system in the first place ! Like most places the best documentation is probably the code itself so what I would love most is well documented code. Lines and lines of comments in the code explaining what you are trying to do both technically and functionally.

share|improve this answer

I just recently left a job in similar circumstances to you (I wasn't the only developer, but there was really only two of us, so I had quite a lot of knowledge that the other guy didn't have (and vice versa, of course)).

In terms of the normal documentation stuff, it's important to document an overview of the whole system. Individual components are already documented in the code, but the interaction between components and why this does that or why this needs to talk to that component are important and not always easy to figure out just by debugging/looking at the code.

Then, for about a month before I left, every time I did something that only I could do, I wrote down exactly what happened, what I had to do, and why. This was usually a case of "there was a bug in xyz component, to fix it I knew to look in file abc because of X, then I had to do this, this and this".

Of course, I left my email address and phone number in case anything came up that they couldn't figure out on their own. I got a few calls in the first few weeks, but they slowly dropped off.

share|improve this answer

The #1 rule for documentation is not what it does but why. What's the backstory on the programs that run, and what they do?

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.