Non posso mai dimenticare questo post di Mike Hofer in "Qual è il tuo parere di programmazione più controverso?" ogni volta che viene posta una domanda in questo senso ...
Your job is to put yourself out of work.
When you're writing software for your employer, any software that you create is to be written in such a way that it can be picked up by any developer and understood with a minimal amount of effort. It is well designed, clearly and consistently written, formatted cleanly, documented where it needs to be, builds daily as expected, checked into the repository, and appropriately versioned.
If you get hit by a bus, laid off, fired, or walk off the job, your employer should be able to replace you on a moment's notice, and the next guy could step into your role, pick up your code and be up and running within a week tops. If he or she can't do that, then you've failed miserably.
Interestingly, I've found that having that goal has made me more valuable to my employers. The more I strive to be disposable, the more valuable I become to them.
Credo che idealmente, sia a livello individuale che a livello di team, tutto il software dovrebbe essere scritto per essere il più facile da prendere il più possibile. Letteralmente: se l'intera squadra subisce avvelenamento da cibo e muore quando va a pranzo in gruppo, la compagnia dovrebbe essere in grado di assumere un nuovo team di sviluppatori - e il progetto dovrebbe essere così pulito e ben documentato che le nuove persone possano intervenire e raggiungere la piena produttività entro un paio di settimane.
Quindi in sostanza, penso che sia più una questione di "processo in corso" di qualsiasi altra cosa dovresti fare quando esci. Non è sempre pratico in ogni singolo momento, ma credo che sia meglio lavorare come se si potesse lasciare il lavoro in qualsiasi momento. Codifica, documenta e aderisci a processi tali che ogni sviluppatore decente possa calarti nei tuoi panni in qualsiasi momento e non strappare i capelli a niente perché è troppo ottuso.