こんにちは!
株式会社ストラテジーアンドパートナーでのインターンシップに参加させていただいているM.Nと申します。
今回は実際にインターンで使用している「作業履歴」が、コミュニケーション、生産性の両面において非常に効果的だったため、その経験談について紹介させていただきます。
導入時
基本的には「書く」コミュニケーションには自信を持っていました。
大学入学と同時にコロナが始まったため、リモートワークの経験も多く、コミュニケーションはその都度工夫してきました。
プログラミングに関する質問をする際も、わからない部分に加えて「試したこと」を羅列するなど、工夫をしているつもりでした。
しかし、次のMtgでマネージャーから質問メッセージについて、まさかの「わかりづらい」との指摘が、、、!
そして、質問の背景について知るために、次のフォーマットを指定されたのです。
指定された作業履歴フォーマット
タスク「Ginを用いたChatBot APIを完成する」
【開始】
17:00
【思考】
- JSONのチャットを作成する。違いは、返答がstreamではないこと、返答がJSONであること、つまり回答がいくつかあること。
- このチャットの履歴は別のデータベースを作成して、別で管理する
【手順】
1. とりあえず、streamのバージョンのできる限りをパッケージ化して、JSON版でも繰り返し使えるようにする。
2. JSON版で、それを利用しつつ、新しいデータベースを使うことを意識して行う。
3. Postmanでテストする。
4. 履歴取得のhandlerも作成する。
5. テストする。
【思考】
- よく見てみると、IDが記録されていない。すべての履歴が毎回読まれてしまっている。
- POST送信するJSONが良くなかった模様。chat_idという情報をJSONに入れて渡す。
- streamじゃない場合、c.JSON(http status, content)でOK.あとはやることはほとんど変わらない。
- とりあえず可能な限りpackage化。Handlerの処理は、情報を受け取るところと、情報を返す処理のみに。
- 関数は、データベースが違ったり、プロンプトが違ったりするので、基本的に別の関数を作成して、動かす。
- あとは、console版で作成したとおりに作成する。データベースの列名を、answerとしていたものをbot_responseとstream版と共通にすることで、共通の構造体を使えるので、共通のものにする。
動作確認。
- c.JSONの中にJSON化した文字列を渡していたが、json.Indentを利用してもきれいにならない。→構造体をそのままいれたらきれいにJSONにしてくれる。
作成してみたら、streamと共通の処理が多く、冗長なので、stream boolの変数を入れて、基本的に同じ関数を使うように。
- 履歴取得では、過去のmessage取得に使っていた関数を使えばいいので、それをpublic関数にして、引数を、どちらでも使えるように調節して完了。
READMEにエンドポイントの説明を書いて完了。
【作業履歴】
APIのすべての機能を完了しました。ご確認お願い致します。
【終了】
24:40
特徴としては、【思考】が2つ、【手順】の上下にあることです。手順を考える前の思考と、やりながら考えた思考を報告することで、どのような思考があったのか、背景まで伝えてほしいとのことでした。
コードを書いているときの思考まで書いてしまうと、逆に読みづらくなるのでは、とも思いましたが、まずは実践してみようと思い、やってみたのでした。
実際にやってみた感想
実際にやってみたところすぐに、コミュニケーション以外での作用に気づきました。作業履歴による変化は、思考を言語化することの強制でした。これにより、「なんとなくやる」時間が顕著に減少し、生産性の向上を肌で感じました。特に、複雑なタスクや新しい領域に挑戦する際には、手順を書く前の思考の項目で考えを整理することで、タスクの分解がスムーズに進み、詰まったときも思考を整理することで、詰まっている部分をより明確化することができました。これは、著書「6秒思考」にかかれているメモの効果に似ていると思います。
また、思考の背景を記録することで、後での振り返りが容易になりました。タスクが完了した後や、問題に直面した時、すでに記録されている思考過程を見返すことで、より深い洞察を得ることができました。
コミュニケーションの面でも大きなメリットがありました。作業履歴には、タスクへの取り組み方や思考のプロセスが詳細に記録されているため、質問や報告の際にマネージャーが背景を理解しやすくなりました。これにより、より的確で迅速なフィードバックを受け取ることができ、問題解決が効率的に進みました。
作業履歴には、タスクへの取り組み方や思考のプロセスが詳細に記録されているため、質問や報告の際にマネージャーが背景を理解しやすくなりました。これにより、より的確で迅速なフィードバックを受け取ることができ、問題解決が効率的に進みました。
さらに、マネージャーはこの記録を通じて、私の技術的なレベルや得意不得意、進捗状況をより細かく把握できるようになりました。これは、個々の成長とチームの生産性向上の両方に貢献しています。
まとめると、今回の作業履歴には、次のような利点がありました。
思考の整理について
- 思考を言語化することで、「なんとなくやる」時間が減り、生産性が向上。
- 複雑なタスクや新しい領域への挑戦において、タスクの分解がスムーズに進む。
- 詰まったときに、思考を整理することで、次やるべきことを明確化できる。
- タスク完了後や問題発生時の振り返りが容易になり、深い洞察を得ることが可能。
リモートワークにおけるコミュニケーションについて
- 質問の背景が明確になるため、回答者が答えやすくなる。
- 思考プロセスの詳細な記録により、マネージャーが技術レベルや得意不得意、進捗状況を細かく把握できる。
- マネージャーからの迅速かつ的確なフィードバックが得られ、効率的な問題解決に貢献。
まとめ
思考の整理とリモートワークにおけるコミュニケーションに役立つ「作業履歴」についてご紹介しました。コミュニケーションのフォーマットについては、各人のレベルや管理手法によって異なるかと思いますが、思考の整理は生産性の向上に非常に重要だと感じたので、これからも続けていきたいと思います。