あなたが仕事を辞める唯一の開発者であると仮定します。コード自体以外のどのような情報/素材を作成し、置き換えのために残す必要がありますか?
明らかな答えは確かに「新しい仕事に望むものは何でも」ですが、私が新しい仕事を始めてからしばらく経ち、私が必要としていた最も重要なことは当時忘れていました。
考えています:
- アカウント/パスワード
- 機器、バックアップ、ソフトウェアCDの場所
ほかに何か?
あなたが仕事を辞める唯一の開発者であると仮定します。コード自体以外のどのような情報/素材を作成し、置き換えのために残す必要がありますか?
明らかな答えは確かに「新しい仕事に望むものは何でも」ですが、私が新しい仕事を始めてからしばらく経ち、私が必要としていた最も重要なことは当時忘れていました。
考えています:
ほかに何か?
回答:
私が残されたことを望むものです。
SELECT * FROM clients
。理由はわかりませんが、データベースをダンプします。」私のメールアドレス、または電話番号。
私の経験では、すべての詳細を書き留めるのは難しいので、後継者がより多くの情報を必要とする場合、最良のものは(ある程度まで)利用可能であることです。
ドキュメントだけでなく、特定の決定が行われたときにその決定が行われた理由を知りたいと思います。現在プロジェクトでSWIGを使用しており、他の開発者の1人がBoost :: Pythonを使用しなかった理由を知りたいと思っていました。簡単な答えは、その時点で顧客がBoostの使用を許可していなかったことです。今は別の話です。
このようなことは、プロジェクトを理解するだけでなく、実装がどのような制限/制約/課題を克服するのにも役立ちます。将来のメンテナンスと機能強化のための出発点となります。
デスクトッププログラムの場合、システム全体をゼロから構築する方法(いくつかの別個のプログラムである場合があります)、配布用のパッケージを作成する方法(.NETのバージョンなどの依存関係)、およびサーバーに展開する方法該当する場合はダウンロードするか、CDまたはDVDに書き込みます。
Webベースのプログラムの場合、FTPおよび(該当する場合)サーバーへのSSHアクセス、およびコードをローカルで作成およびテストするために使用されるツール。
組み込みシステムの場合、バイナリイメージの構築、使用するツール、製品にコードをダウンロードしてフラッシュする方法、デバイス上のファイルシステムをセットアップする方法(ある場合)の手順を完了します。
私は最近あなたと同じような状況で仕事を辞めました(私が唯一の開発者ではありませんでしたが、実際に私たちは2人しかいなかったので、他の人が持っていなかった多くの知識を持っていますもちろん))。
通常の文書化に関しては、システム全体の概要を文書化することが重要です。個々のコンポーネントはすでにコードに文書化されていますが、コンポーネント間の相互作用と、なぜそうするのか、なぜコンポーネントと通信する必要があるのかが重要であり、コードをデバッグ/見るだけで簡単に理解できるとは限りません。
それから、私が去る前の約1か月間、自分にしかできないことをするたびに、何が起こったのか、何をしなければならないのか、そしてその理由を正確に書き留めました。これは通常、「xyzコンポーネントにバグがあり、それを修正するためにXのためにファイルabcを調べることがわかっていたので、これとこれとこれを行う必要がありました」というケースでした。
もちろん、自分で理解できないものが出てきた場合に備えて、メールアドレスと電話番号を残しました。最初の数週間で数回電話を受けましたが、ゆっくりと落ちました。