労働生産性を上げるための実践ガイド
はじめまして、から紅と申します。
先日、YouTubeで見つけた登大遊さんのセミナーを拝見し、そのなかで紹介されていた生産性を向上させるための具体的な手法が非常に興味深いと感じたため、このnoteで自分なりにまとめ直そうと思います。本稿では、主にその実践方法に述べたいと思うのですが、その前に、まとめなおそうと思った社会的背景について述べたいと思います。(適宜飛ばしてもらって構いません)
最近では、「働き方改革」という言葉をよく耳にします。かつて仕事というのは身を捧げ、心身を壊してでも愚直に取り組むものであると認識されていました(少なくとも私はそう認識していました)が、現在ではより良い人生を送るために一人一人に合ったワークスタイルを取り入れるべきという考え方が浸透してきました。それと同時に、労働時間の見直しもされるようになり、極力残業は廃止するといった動きが活発になっています。
このmovement自体は非常に素晴らしいものだと思っていますし、それにより余暇(leisure)の時間が増えることも大賛成です。しかし、新たな課題が出てきます。それは仕事の時間が減ることにより、企業は少ない時間で成果を出すことが求められていると思うのです。すなわち、組織の生産性をあげることが目下の課題になっているといえます。この生産性を上げなければ、仕事の時間が減少してしまうことにより、業績が悪化してしまうのではないかと私は考えます。登さんが公開していたスライドには「生産性を上げるにはどのようにしたら良いのか」についての手がかりがあると思いまして、このnoteにまとめようと考えました。
それでは、さっそく実践的方法に移りたいと思います。なお、ややエンジニア寄りの方法論にはなりますが、他の職種であってもPCは利用すると思われるので、自分に出来そうだと思うところで検討してみてください。
1. 開発用端末のキーボード、マウス、モニタ、机
キーボード、マウス、モニタ、机は快適な開発には欠かすことのできないものです。これは単に、これらの物を揃えるという意味ではなく、きちんと自分に合ったものであるかという意味だと推測しています。例えば、キーボードに関していえば、
・キーボードはテンキーが必要か、テンキーレスにするのが良いか
・QWERTY配列か、そうでないか
・Shit-JIS配列か、US配列か
・メカニカル式か、パンダグラフ式か、あるいはメンブレン式か
・もしメカニカル式ならば、赤軸なのか、茶軸なのか、ピンク軸なのかetc
といった場合分けの仕方があって、自分の体に適した製品を探す必要があると思います。
モニターに関しても、IPS/TN/VA等色々なものがありますが、そこまで大差があるものだとは思っていません。もちろん、こだわる人はとことんこだわるべきです。
2. 部屋の環境
先に挙げたセミナーでは、静寂性や室温、ネット環境が挙げられていましたが、もっと広範に考えられると思います。例えば、、
・部屋は整理されているか
・本が机に山積みになっていないか。すぐに使わないのであれば、本棚にしまう
・部屋の明るさは適切か
・廃棄物を机の上や部屋に置きっぱなしになっていないか。きちんと片付けをして、断捨離をおこなう
等です。部屋は開発時にずっと居座る場所なので、環境を自分なりにカスタマイズする必要がありそうです。
3. 開発時の服装、手指や入力デバイスの常時の清潔
服装にも気をつける必要があるでしょう。ただ、これは個人差があると思います。手指の清潔というのは、言ってしまえば、ポテチ等を触った手でキーボードを触るなということでしょう。キーボードはずっと使うものですから、清潔に保つことを心がけたいです。
4. 適度な運動、睡眠、できるだけ良い食事、入浴、間食の排除の努力、適度な息抜き等
生産性を上げるためには、何より健康でいることが大事です。健康を維持するためには、適度な運動や、睡眠、栄養バランスの良い食事を意識すると良いはずです。また、ずっと机に向かうのではなく、適度な息抜きをはさみ、疲労を過度に蓄積させないことも必要です。自分なりの息抜き方法を言語化すると良いでしょう。
5. 開発用端末本体(CPU、SSD、RAM)、OS環境、VM、アプリ、言語、IDE、周辺機器
開発用端末本体のスペックが自身の快適な環境に合っているのかどうかも考慮する必要がありそうです。例えば、、
・CPUはIntelか、M1か、AMD Ryzenか。Intel(あるいはRyzen)ならどのバージョンを選ぶのか。それは自分のやりたいことに適したものか。
・メモリのGBは十分か。8GBで心もとないならば、16GBを検討する。
・SSDの容量はどうか。併用するHDDの容量はどうか。
・ホストOSはWinなのか、Macなのか、Linuxなのか。
・仮にLinuxのディストリビューションを利用するならば、初期設定は最適化されているか。改善の余地はないのか。
・VMWareをつかうのか、VirtualBox(+Vegrant)を使うのか。快適に使うために、必要な設定を施しているのか。
・Dockerを利用するのか。もし利用するのならば、必要なイメージは存在するか。dockerfileの見直しは必要なのか。
・利用しているプログラミング言語は、自分のやりたいことに合致しているのか。他に利用できる言語はないか。(例えば、CやC++に代わる言語としてRustが登場している。それを利用することを検討してみる)
・利用しているアプリケーションは最適化されているのかどうか。
・利用しているIDE(統合開発環境)に不満点はないか。より改善するためのカスタマイズ(VScodeならjsonファイルのカスタマイズ)や拡張プラグインを導入する余地はないか。
・周辺機器は最適化されているのか。スイッチングハブ、USBハブ、ケーブル、連動タップの数は十分かどうか。
等を検討すると良いでしょう。
6. 開発・実験用ネットワーク環境
これはインフラエンジニアに特化していると思ったため、詳細は記載しません。おそらく、自宅でサーバを構築したり、Kubernetesクラスタを構築したり、ラックを購入したりといったことだと思っております。インフラ志望でない限り、優先度は高くないでしょう。
7. 毎日の事務作業を快適に行うソフトウェア環境の構築、無駄な手続きの排除
日常の業務で無駄な作業はないでしょうか。それは改善できるのかどうかを検討してみましょう。
8. 割り込みの適切な管理(メール、Slack等を統合して読める仕組み)
仕事をするうえで、急な割り込み処理が入ることは多いです。そうした割り込み処理に時間をかけると、本来の重要度の高いタスクに脳のリソースを割くことが難しくなってしまいます。こういった割り込み処理は素早く対処しなければならず、そのような仕組みがないのかを考える必要がありそうです。
9. いやな作業を先に済ませること(毎日仕方なく発生する雑用を手早く済ます)
これも先ほどの話と少し被るところがあるかと思います。仕方なく発生する雑用は手早く対処し、本来やるべき仕事に集中しましょう。
10. 複雑な問題の明確化、文書化、図示化、共有
複雑な問題はそのまま複雑に捉えると、本質を掴むことが難しくなります。「分ければわかる」という言葉にあるように、複雑な問題を細かく分類し、明確化・言語化することで少しは捉えやすくなります。また、イラストにしてみたり、他の人と共有することで問題解決により近づくことができそうです。
11. 非合理、非生産的、怠惰的または混乱した思考源、情報源、人付き合いの排除
思考源というのがいまいちピンとこないのですが、おそらく非化学的な思考のことを指しているのではないかと解釈しています。
インターネットにある情報は玉石混交です。できる限り詳細で、引用元も表記されている情報を収集するようにしましょう。また、集中して物事に取り組むためには人付き合いにも適度な距離を保つことが必要です。「割り込み処理」で記載した内容とやや関連しているのかもしれません。
12. 様々なことについて突き詰めて考え、矛盾を発見し、解決すること
問題を取り組む際は、多角的な視点から突き詰めて思考し、そのプロセスを通じて矛盾点を明らかにして、解決に至ることで生産性を向上させることが期待できます。突き詰めて考えることがポイントだと考えています。
13. 常に周囲にあるものをなんでも観察してカウントすること。そこから何らかのパターンを見出すこと
14. 素晴らしい仕組み(サービス、インフラ、OS、アプリ、クラウド等)の構造の抽象的理解
世の中には、絶妙なバランスで成り立つ素晴らしいサービスがあります。それらの構造をより抽象度の高いレベルで理解することで、思考力を鍛えることができそうです。
15. 素晴らしい仕組みを成り立たせている物理的な実装を、自分の目で視て分析すること
先ほどの素晴らしいサービスがどのように成り立っているのかについて、その物理的な側面を、追求すべきでしょう。それらを実際に自分の目でみて確かめ、なるほどこのようにして実現できるのかを知れば、創意工夫の能力を伸ばすことができるでしょう。
16. 相似関係にある複雑な観念(政治学、経済学、哲学、化学、物理学、数学、論理学等)から知恵を会得する
絶妙なバランスで成立する素晴らしい仕組みは、複数の学問の知恵に基づいて発明されていると考えられます。したがって、コンピュータサイエンスの知識(オライリー本をはじめとした技術本)だけを仕入れるのでなく、政治学や経済学をはじめとした複雑な観念から知恵を会得することが肝要です。
17. 社会的に長期間成り立っているおかしな物を分析して楽しむこと
15とほぼ同義でしょう。
18. 朝から晩まで、難しい取り組みを、毎日継続して、集中して行うこと。日単位のコンテキストスイッチの削減
個人的には、これが一番重要ではないかと考えています。生産性が急に上がるということはほとんどなくて、解決が難しいタスクを継続して、集中して行うことで徐々に生産性を身につけていくのだと思います。難しいというのがポイントだと思います。また、コンテキストスイッチを削減することも納得できます。継続することが大切ですね。
まとめ
以上で、実践的な手法を終えることにしますが、最後に述べたいことがあります。それは、生産性を急激にあげることはほぼ不可能であると言うことです。今までにあげた小さな工夫を積み重ねることにより実現できるといえるでしょう。それと同時に、完璧主義に陥ってもいけません。確かに周囲の環境は大切ですが、あまり神経質になってはいけないとも思うのです。自分が見直してみようと思ったものがあれば、軽い気持ちで着手するのが良いでしょう。本当に大事なことは、生産性を上げることに固執するのではなく、仕事に勤しみ、成果を出すことです。
興味を持った方は別途動画を参照するのも良いと思います。