私の仕事の本質は、数週間ごとにプロジェクトを切り替えなければならないことです。私の生産性に対する最大の障害の1つは、関連するすべてのコードを一定期間表示しなかった後、再び「頭の中に戻る」までの立ち上げ時間であることがわかりました。これは、より短い休憩/より長い休憩では、より小さな範囲と大きな範囲で発生します。
明らかに、優れた設計、ドキュメント、コメント、および物理的構造はすべてこれに役立ちます(プロジェクトの切り替えをできるだけ頻繁に行うことは言うまでもありません)。しかし、私が見逃している可能性があるプラクティス/ツールがあるかどうか疑問に思っています。これを改善するための具体的な方法は何ですか?
私はさまざまなプロジェクト(技術と非技術の両方)を頻繁に切り替えます。整理または「検索のしやすさ」が私にとって重要でした。プロジェクトを終了する前に、物事を整理して、コンテキストを頭に戻せるようにしておきます。私にとって、これはすべての関連するもの(ブックマーク、ファイル、ドキュメント、電子メールなど)またはそれらへのリンクを1つのフォルダーに置くことを意味します。これにより、情報源を探す必要がなくなります。
最近始めたのは、大規模なプロジェクトごとに1つの仮想マシンを使用することです。別のプロジェクトに切り替える必要がある場合は、関連するすべてのアプリを開いたままにして、仮想マシンを一時停止します。したがって、プロジェクトに切り替える必要がある場合は、VM upを開始すると、画面上のすべての情報が表示されます。
役立ついくつかのこと:
私はRonEと同じようなことをしています。
プロジェクトを読みやすく、優れたデザインにすると効果的ですが、プロジェクトを終了する前に、頭の中にあるすべてのコンテキストと情報が書かれているか、どこかに保存されていることを確認してください。たとえば、これまでに使用したことがない新しいものである場合、使用していたサードパーティのライブラリ関数に関するメモ。自分が学んだり考えたりすることについては、常に自分の言葉でメモを書きます。
また、ファイルに書き込むことが最も重要だと思うのは、コードにTODOコメントを記述し、最後に作業していたコメントをコピーして、新しいテキストファイルに貼り付け、TODOという名前を付けることです。 TODOタグがどこに属しているかに関するコンテキスト情報を記述し、自分が考えていたこと、またはそのタスクについて知りたいと思っていることを記述します。
私にとって重要なのは、一貫性と仕様の2つです。
コードの一貫性は重要です。自分がやったことを推定できるのであれば、すべてがどこにあるか、すべてがどのように相互作用するかを覚える必要はありません。他の人とのプロジェクトで面倒になる場合は、コード標準がかなり役立ちます。それを見て何か安全な仮定をすることで何かがわかると、オンボーディング時間が少し短縮されます。
仕様は設計により役立ちます。少なくとも私にとっては、休憩後の製品デザインのニュアンスを忘れがちです。または私が戻ったとき、プロジェクトにすぐに忍び寄る機能がこの素晴らしいアイデアのせいです。プロジェクトに適切な要件がない場合(ウォーターフォール仕様または製品バックログのいずれかで)、プロジェクトに戻るたびに、基本的にこれらを再発明する必要があります。ソフトウェア開発のベストプラクティスのほとんどすべてが、個人プロジェクトの場合でもベストプラクティスです。それらをけちるしないでください。
重要なIMOは、すべてのプロジェクトの賢い[〜#〜] api [〜#〜]です。また、コードをGITなどのrepositoryにアップロードすると、コードへのコミットを通じて"time travel"を実行できます。
私は複数のクライアントの開発とプロダクションサポートを行っているため、1日に複数回プロジェクトを切り替えています。最も役立つ2つのことは、すべてを保存するまで1つのプロジェクトを離れることはありません(ローカルブランチがコミットされていない場合は、ソース管理のメインブランチに戻します)。中断した場所にブレークポイントを設定します。中断した正確なラインをすばやく見つけることができるので、プロジェクトのスイングにすばやく戻ることができます。私はまた、主要なプロジェクトごとにToDoリストを作成し、完了時にチェックする傾向があるため、これを簡単に確認すると、自分がどこにいるかがわかり、プロジェクトの思考プロセスを思い出すことができます。また、一般的に、考えていたけれども必要な場合はまだ行っていなかったことについて、自分にも簡単なメモを書きます(例:XYZがまだ機能していない、次にabcdを試してください)。