I am currently involved in leaving a gig where I've been for a year now and I find myself breaking one of my fundamental engineering beliefs, in effect, engaging in an anti-pattern. If a pattern is what you should do for something then an anti-pattern is what you should not do.

The anti-pattern I find myself engaging in is really, really simple;

I am writing all new code in my last two weeks of work. Not fixing bugs or doing clean up; writing something new from scratch.

I am a firm believer that once an engineer turns in his notice, here is what they should be doing:

  1. Documentation.
  2. Clean up.
  3. Pair programming but not as the dominant party.
  4. Making screen casts showcasing how they do specific development practices such as debugging.
  5. Answering questions from other people on the team.
  6. Helping other engineers write test coverage on their work.
  7. Writing more documentation.

All of these things fall into the general category knowledge transfer and that's what an engineer should be doing in their final days. If new code is needed then, well, pair program on it with the departing engineer a part of the process. When a departing engineer writes new code in their last couple of weeks, all it does is almost guarantee that:

  • Knowledge transfer will be neglected since we'd all rather write code than documentation
  • Any knowledge that needs to be transferred about the new code simply won't be transferred because almost all software engineering expands to fit the time available
  • Given the time crunch, since the engineer in question is leaving, there's a decent chance that the new code they write won't actually be fully done