見出し画像

プログラミングシンキング:07机の端のグラス


Q1. 3つの橋いつ渡る?
 突然ですが、次の図をご覧ください。目的地に行くために、川を渡らなければいけません。橋は三本あります。あなたはどのルートを通りますか?

橋

どのルートを通る?

Q2. 夏休みの宿題は? 
 次に、小学生の頃の夏休みの宿題を思い出してください。あなたは、夏休みのはじめの方であらかたやってしまうタイプでしたか?それとも計画を立ててコツコツやるタイプ?それともいつも最後にまとめてやるタイプだったでしょうか。

宿題

夏休みの宿題は?


Q3. 嫌いなものはいつ食べる?
 食事に嫌いなもの、嫌いとは言えないけど好きではないものがあったとき、あなたは最初に食べますか?最後に食べますか?または食べないで残してしまいますか?

嫌いなもの

嫌いな食べ物は?


Q4. 時間ー完成度カーブ
 あなたは何か仕事を依頼されたとします。締切も指定されました。横軸を時間、縦軸を仕事の完成度とすると、どのカーブで仕事を進めていると思いますか?どれにも当てはまらない場合は、自分で描いてみてください。

仕事カーブ

あなたの仕事のスタイルは?


仕事の速さは性格(習慣)で決まる

本当に仕事を早く終わらせたい?
 最初の川を渡るルートの選択は、嫌なことを先に済ますか、後でやるかの性格を判断するテストです。昔、初めてこれを見たときに橋を渡るという問題設定が絶妙だと感心しました。夏休みの宿題も嫌いな食べ物も同じ話です。小さい頃と今とでは変化があったでしょうか。

 質問の仕方によっては、次のような回答をするひともいるかもしれません。めんどくさいですよね。でも楽しいので私は好きです。

橋2

こういう人、めんどくさいけど楽しい

 早く仕事を終えることができるかどうかは、性格で決まると思います。私が早く仕事を終わらせたい理由は、できるだけ自由でいたいからです。なるべく自分がボールを持ってるストレスから解放されたいと思っています。そのために、なるべく早く終われるような習慣を身につけてきました。

 仕事の進め方は人それぞれです。早く終わればいいとは断言できません。ですが、今回は仕事を終わらせる習慣Tipsについてお話ししようと思います。

画像6

仕事を早く終わらせたいのは、自由でいたいから


理想の仕事の進め方
 下図は、私が心がけている時間-完成度のカーブです。依頼されたらすぐに、自分の中で完成したと思うレベルまで作って、依頼者に返します。できれば言われる前から作っておきたいとも思います。依頼者はそれを見て、あれこれ考えて再びリクエストしてくるでしょう。それまでボールは依頼者にあるわけですから、こちらは自由です。その間、どういうボールが返ってくるかを想像して準備することができます。たいていは想像通りのボールが返ってきます。余裕があればさらに付加価値をつけておくことも可能でしょう。そしてボールが返ってきたら、またすぐに投げ返します。これを繰り返すと、短期間で完成度の高い成果を出すことができるでしょう。

 図では一旦完成度を落としてから上げるようなカーブを描いています。これまでの作業を思い切って捨てることも重要です。これは後ほどお話します。

 また、そもそもつまらない依頼は受け取らない、他の人に依頼しないことも重要ですし、依頼を受けたとしても無視をする、締切を守らないという選択肢もあるかも知れません。小学生の夏休みの宿題じゃないのですから、本当に意味のある仕事をするのが、みんなが幸せになる方法だと思います。

ギザギザ

理想の仕事の進め方(私見)


 余談ですが、宇宙戦艦ヤマトの工作班長の真田志郎の「たぶんこんなこともあろうと思って〜」という台詞(ヤマト2 第10話)は、技術者にとって理想の心構えだと思います。小惑星イトカワからサンプルを持ち帰ったはやぶさのエンジントラブルの際、まさにこんなこともあろうかとダイオードを仕込んでいたという話が話題になりました。あらゆるパターンを想定して、事前に準備しておきたいものです。

 早く仕事を終わらせたいというモチベーションがなければそもそも無理ですが、早く終わらせたいのはやまやまだけど行動が伴わない、という方も多いと思います。それは性格なので仕方ありません。唯一の方法は習慣化することです。このあと、どのように習慣化すらば良いかのTipsをご紹介します。心構えについては、ブライアン・トレーシーの『カエルを食べてしまえ!』という本をおすすめします。


ゴールデンタイムは1日1時間

 下記の円グラフは、一日のうち、集中して仕事ができるフロー状態、普通の状態、ほとんど頭が働かないダメ人間の状態の時間です。私の体感的なデータですが、似たようなグラフを心理学者が作成しているのを見たことがあります。合計8時間にしていますが、残業で時間が増えたとしても、ダメ人間モードが増えるだけでしょう。

 また、ある数値の大部分は、一部の要素が生み出しているという有名なパレートの法則も当てはまるかもしれません。つまり、22%の時間で78%の成果を生み、残り78%の時間は22%の成果しか生まないというものです。これも体感的に納得できます。ということは、1日1~2時間働けば十分なのかもしれません。

134円グラフ

最高のパフォーマンスを出せるのはせいぜい1日1時間


やる気と仕事のマッチング
 問題はどこにどんな仕事を割り当てるかです。会議で時間を潰されることも問題ですが、自分の状態とタスク割り当てのアンマッチが問題です。働き方の本質だと思います。2割の乗ってる時に最高の仕事をして、あとは気を抜いてもできることすればいいでしょう。気分が乗らないときに難しい仕事を割り振っても、精神が病んでしまうだけです。

 もう亡くなられてしまいましたが、京大教授だった松山隆司先生とお仕事をしていた時、生産性は能力とやる気の掛け算だ、能力は頑張っても人並みの2〜3倍にしかならないが、やる気は簡単に1000倍になる、とおっしゃっていました。

 さらに、成果(創造性)は、この生産性と仕事の重要度(困難度)の掛け算だと思います。

生産性式

成果=生産性×重要度、生産性=能力×やる気


 下の表はあくまで概念ですが、フロー、普通、ダメ人間の状態でのそれぞれのやる気を10, 5, 1とすると、能力が一定であれば生産性も同じ比率になります。仕事の重要度も、10, 5, 1で定義できるとすれば、やる気のあるときにつまらない仕事、やる気のないときに重要な仕事をした場合①では、合計の成果は25になります。これでは、やる気も下がってしまい、ひとつもいいことがありません。一方で、やる気のあるときに重要な仕事を割り当てると、5倍以上の126になります。アドレナリンが出て楽しいですし、やり終えたあとも満足感を得られるでしょう。

マッチング表

最高の状態のときに最重要の仕事をする


 重要ではない仕事はなるべく受けないことも重要ですが、全体として重要な仕事は、頭をフル回転できるときに取り組むべき重要な部分と、ダメ人間モードでもできるその他の部分に「仕分けする」ことが重要になります。


作業を仕分けする

 ではどのように仕分けすればよいか、パワーポイントで資料を作成する例で見ていきましょう。パワーポイントではいろんな表現ができますので、操作は多岐にわたります。たとえば、整列、フォント選択、フォントサイズ設定、図形の塗りつぶし・枠色選択、線の太さ、最背面・最前面、右寄せ・中央寄せ・左寄せ、影など図形の効果、アニメーション、画像トリミング、などに時間を費やしているのではないでしょうか。本来最も大切なのは、刺さる文章を作成することです。これはフロー状態のときにやるべきでしょう。あとの残りのほとんどは、ダメ人間モードでもできそうです。スライド作成の仕事は、文章作成(重要度:高)とそれ以外の調整などの作業(重要度:低)の2種類に仕分けする、ということです。

パワポの作業

パワーポイント作業を仕分けする


 さらに、必要な情報を収集する、全体の構成やストーリーの流れ、伝えたいメッセージを考えるなど、そもそもパワーポイントを使う前の準備が大切です。

 また、整列やサイズ指定などの作業は、主にデザインの問題です。もちろんデザインは重要なのですが、プロのデザイナーではない方がいくら時間を使って試行錯誤しても大して良くなりません。前回お話したようなデザインのノウハウを愚直に守ることが、結局時間短縮になるでしょう。

 一例をご紹介します。あるとき、デザイナーの方に、背景が暗い場合と明るい場合の、それぞれ12種類、計24色を決めていただきました。複数の色が並んでいてもうるさくない配色です。この色をパワーポイントなどに登録して、かれこれ10年くらい使い続けています。色選びで時間を取られることはなくなりましたし、ひと目で私が作った資料ということがわかります。また、自分でプログラミングするときのGUIの色にも使っています。

画像12

あらかじめ決めた配色を使う

 プログラミングシンキングですから、プログラマーとしてどのように仕分けているかもご紹介しましょう。

 1回目から3回目でご紹介したように、プログラミングの重要な要素は、機能ブロック、フローチャート、ユーザインタフェースです。いずれもいきなりプログラミングして実装するのではなく、テキストで表現できるということをお話しました。手書きのメモやシンプルなテキストエディタで考えることができます。これはパワーポイントでスライド作成するときの、全体構成やストーリーの流れを考えることに相当します。この作業は、これまでの話をお聞きになられた非プログラマーのみなさんもできると思います。
 
 これらの構想が出来上がったあと、コーディングする作業は、資料作成で文章を打ち込む作業に相当します。メモを見て、細かい言い回しの修正や推敲しながら文章を打ち込むように、プログラムの骨子を見ながらプログラミングしていきます。これはそれほど頭を使う作業ではありません。

 さらに、資料の作図や全体のレイアウトを調整する作業に相当するのが、デバッグやリファクタリングです。やっかいなデバッグはかなり頭を使いますが、リファクタリングの多くは単純作業です。リファクタリングには、後から見てわかりやすくするための変数やUI部品の名前の変更、似たような処理の共通化、無駄なアルゴリズムの整理、長い関数の分割などがあります。

 他にも、eラーニングや業務報告作成など、自分で仕分けなくてもダメ人間モード用の仕事って結構あるものかも知れません。

スライドとプログラミング表


 私は、コロナ前には会社では頭を使わない作業を行い、自宅や通勤途中に難しいことをするように分けていました。リモートワークが一般的になってから、時間と場所の制約がなくなり、生産性が上がったと実感しています。


机の端のグラス① 集中しなくてもできる
 下記の写真をご覧ください。机の端にグラスが置かれています。なんだか落ちそうで不安にならないでしょうか。机の真ん中に移動したくなりませんか?性格にもよるかもしれませんが、人間は不安定なものに対して、なんとか安定にしたいという本能があるようです。この心理をうまく使っているのがWikipediaのような多数のユーザによって整理されていく集合知だ、ということを聞いたことがあります。

机の端のグラス

 まず、仕事を頭をフルに使うものとそうでないものに分けましょう。そして机の端のグラスを戻したくなる心理をうまく使って、一日の半分以上のダメ人間モードでは、後者の作業を割り当てます。グラスを真ん中に移動するのは本能ですから、頭をそれほど使わなくても可能です。二日酔い、体調が悪い、寝不足など、最低のダメ人間状態なら寝てればいいと思いますが、そういう時でもできる仕事を準備しておきましょう。最近のスマホアプリの充実によって、寝ながらスマホでできる仕事もたくさんあります。この原稿のほとんどは寝ながら書いています。

 また、義務で参加させられているセミナーや研修、退屈な報告会議や説明会など、できれば避けたいけど仕方ない予定もあると思います。そんなときは是非内職をしましょう。とはいえ、内職に集中するわけにもいかないでしょうから、このような仕事が最適です。


散らかして、片付ける
 全体として大事な仕事も、頭を使う作業とそうでない作業に仕分けします。頭を使う作業が上等で、そうでない作業はレベルが低い、というわけではありません。頭を使わない仕事は、効率的に創造的な仕事をするための準備でもあります。例えばプログラミングでは、十分にリファクタリングできていないと、フロー状態のときに無駄な作業が発生してしまう恐れがあります。一方、創造的な仕事をしているときは、整理整頓に時間を使ってはもったいないと思います。散らかす、片付けるを交互にこまめに行うことが重要です。発散と収束、と表現してもいいかも知れません。


キリの悪いところで仕事をやめる
 一日の最後、キリのいいところで終わらせたい、と思う方も多いのではないでしょうか。ちょっとやればできることを残したまま仕事を終えると、落ち着かない、スッキリしない、という気持ちもよくわかります。ですが、あえて残しておきましょう。

 次の朝、まだ頭が回転してなくても、なにをやればいいかわかってるので仕事の続きをスムーズに始められます。

 プログラミングでも、簡単に取れそうなバグをあえて残しておくことがあります。仕事が終わってから食事をしたり入浴したりしているときに、そのバグの取り方を無意識のうちに考えてしまいます。簡単そうなバグであれば、解決策まで頭の中で組み立てられます。そんな状態で次の日を迎えると、単に頭の中からプログラムにコピペするだけの単純な作業から始められます。

キリの悪いところ

キリの悪いところで仕事をやめる


その仕事、何分でできる?
 仕分けができるようになったら、次はそれぞれの作業にかかる時間を見積もれるようになりましょう。これはその都度見積もってみて経験を積んで精度を上げていくしかないと思います。

 仕事を依頼したり依頼されたりするとき、いつまでに完成させるかを決めると思います。何日までにといった日単位で合意することが多いかもしれません。そんな時でも、(相手には言わなくてもいいですが)自分なら何分でできるかを考えてください。具体的に考える過程で、本当に時間がかかる部分や、頭をフル回転しなければできなさそうな部分が見えてくると思います。

何分でできる

その仕事が何分でできるか見積もる癖をつける


 私は若いころ、現代音楽の作曲家と仕事していた時、バイオリンやピアノなどの演奏家とリハーサルする機会が何度かありました。リハーサル中にあれこれプログラムの変更指示が出て、その場で修正しなければいけません。その間演奏家の方には待ってもらわなければいけないわけですから、長くても5分で終わらせなければ申し訳ありません。それ以上かかりそうな場合は、できませんと降参して、次回までに作ってくるようにしていました。この経験はその後、デザイナーと仕事をするときに役に立ちました。デザイナーがインタフェース案を持ってきたら、〇分待ってとお願いし、その間に動くインタフェースを作り、使ってもらって検証していました。短時間に作る時は、コードの美しさには構ってられません。作り散らかした状態になりますので、そのあとの整理整頓がとても重要な作業になります。



スピード化のTips

 さて、ここからは早く作業を終えるためのいくつかの工夫についてご紹介します。

机の端のグラス② 不便なツールで余計なことをしない
 スティーブ・ジョブズやマーク・ザッカーバーグの服装は、いつもラフなことで有名です。服装に気を遣う時間や労力がもったいないから、とも言われています。スタイルを決めてしまい、あれこれ迷うことがないようにしているのでしょう。パワーポイントで資料を作成するとき、フォントの種類や図形の色、位置合わせなど、気を遣う必要がある項目が膨大です。これらに費やす時間は馬鹿にならなく、パワーポイントを禁止している企業もあると聞きます。フロー状態のときにこのような作業をするのはもったいないと思います。かといって、机の端のグラスの効果で、図形の位置がずれていると揃えたくなるし、フォントがバラバラと統一したくなります。

 これを避けるためには、余計なことはそもそもできないようにするのが近道です。机の端のグラスを見えなくすることです。資料作成の場合、文章を考えることとそれ以外に仕分けすれば、前者は手書きのメモでもいいですし、単機能のメモ帳アプリで十分です。位置合わせや整列のことは忘れられます。

 私はプログラムの骨子を考えるとき、紙とペンや、メモ帳アプリを多用しています。紙コーディングと呼んでいます。直接パソコンでコーディングするより、はるかに洗練されたコードを書くことができるようになります。


机の端のグラス③ 他人の脳を使いたおす
 机の端のグラスを他の人の目に触れるようにするとどうなるでしょう。きっとみんなグラスを机の真ん中に移動したくなるはずです。

 検索が容易になった現代においても、情報収集には時間と労力がかかります。また、得意な知識の領域によって、情報収集の量と質には個人差があります。いろんな人から情報が流れ込んでくるようにしましょう。いま自分が何をしてるか・何に興味があるかを積極的にオープンにすると、おのずと情報が入ってきます。情報の受信量は発信量に比例します。優秀な人は、たいてい秘密主義ではなく、考えをオープンにしている場合が多いと思います。

 また、自分のアイデアを他人に喋ってもらって、聞き手の反応ややりとりを観察すると、客観的に評価ができます。機会があれば是非やってみてください。


机の端のグラス④ ダメ人間モードを脱出する
 ゴールデンタイムは1日に1時間くらいしかないというお話をしました。それはいつでしょうか。来るのをじっと待つのもいいですが、私がよくやる方法をご紹介します。

 どうしても集中して取り組まなければいけない仕事があるとき、すぐに集中できそうであれば、もちろんすぐに取り掛かります。問題は、いまはダメ人間モードなのに、無理にでもフロー状態にしなければいけないときです。とても嫌な気分です。

 そんなときにも、机の端のグラスの効果を用います。ダメ人間モードでもできるように仕分けられた仕事から着手します。グラスを真ん中に移動する作業は簡単ですし、やっていること自体心地いいものです。前もって仕事を仕分けするとき、その観点も考慮しておくとよいでしょう。作業を続けていると、いつの間にかダメ人間モードを抜け出していることに気が付きます。そのときが、重要な仕事を始めるタイミングです。


ワーキングメモリを大きくする
 一旦エンジンがかかってきたら、想い存分集中して重要な仕事にとりかかりましょう。全体を把握しながら細部まで気配りできる状態です。そのときに大切なのはワーキングメモリです。パソコンにはハードディスクやSSDなどのファイルなどを格納する記憶領域と、プログラムを実行するときのメモリがありますが、後者にあたります。このサイズが小さいと過去の資料を見返すなどの余計なプロセスが必要になります。パソコンで言うとファイルアクセスに相当します。CPUに相当する頭の回転速度も大切ですが、なるべく多くの情報をワーキングメモリに読み込ませて、高速に処理をするトレーニングが大切だと思います。

ワーキングメモリ

ワーキングメモリ(前頭前野・帯状回)は大きい方がいい


楽するためには、どんな苦労も厭わない
 現在のほとんどのソフトウェアはグラフィカルユーザインタフェース(GUI)で設計されています。そのため、指やマウスなどを使って画面のあちこちをタップしたりクリックしたりすることになります。このような操作は直感的ではありますが、時間の無駄です。特に画面デザインの都合上で小さく作られたボタンや、文字と文字の間にカーソルを正確に移動するのには、相当の負荷がかかります。例えばこの原稿を書いているMicrosoftのWordには、上部のリボンにいくつかの詳細設定を開くための小さなボタンがあります。大きさはたったの8x8ピクセルで(反応エリアは16x16)、私のディスプレイでは約2mmです。

小さい領域

 また、例えばパワーポイントで文字を上付きに設定したいとき、対象文字を選択して、ホームリボンを選んで、フォントの詳細設定の小さいボタンを押して、フォントタブを選んで、上付きのチェックをオンにして、OKボタンを押す、という最大6回の操作が必要です。

ショートカットキー

ショートカットキーを覚えましょう

 ショートカットキーを覚えましょう。とにかく覚えましょう。忘れてしまったとき、GUIで操作するのではなく、この表で確認してからショートカットで操作してください。何度か繰り返すと必ず覚えます。ちなみに上付きに設定するには、対象の文字を選択して、Ctrl+;キー押下の2回の操作で済みます。

ショートカット一覧
https://twitter.com/YuU_Holy/status/1336052867778678787


過去の努力はなかったことにする
 冒頭の時間と完成度のギザギザのグラフでも触れましたが、一旦作ったものを思い切って捨てることも大切です。せっかく作ったのにもったいない、という気持ちもよくわかります。ですが、時間や労力をかけてもダメなものはダメです。時間をかけたから、努力したからといって、他人にはねぎらいの言葉をかけてもいいですが、少なくとも自分自身を過大評価しないようにしましょう。過去の成果を捨てることで自由になることができるでしょう。

使えるものだけ残す

使えるものだけを残し、頑張ったけど使えないものは捨てる


 これまで莫大な投資をしたので事業を止める判断ができなくなることをコンコルド効果といいます。ロンドンーニューヨーク間を3時間で飛んだ、形もかっこいい超音速の飛行機のコンコルドのことです。かなりの開発費をかけたのですが、席数が少ないなど採算がとれないことがわかっていても、事業を止める判断ができなかったという典型例です。1976年に運行が開始され、2003年に退役したそうです。

 こういった、もう取り返しがつかないコストをサンクコスト(埋没費用)と言います。お金だけでなく、すでに投資した時間や労力は返ってきません。つまり、どれだけ投資したかを判断材料にしても意味がないのです。それより、使えるか使えないかだけを見て、ダメなものは切り捨てましょう。ダメなものを大事に持っていても不良資産になるだけです。以前お話しした共通ライブラリの問題も同じ構図です。せっかく作ったからといって、あらゆる関数を大事にしていても、使われなければメンテナンスコストがかかるだけです。
 
 せっかくやるんだから、価値を生み出したい、と考えるのはよいのですが、せっかくやったんだから、価値を見出したい、と考えるのはよくありません。

 道元は「放てば手に満てり」という言葉を残しました。私の大好きな言葉です。

道元

「放てば手に満てり」道元


まとめ

 今回は、自分のモードを知る、それぞれに適切な仕事に仕分けする、机の端のグラス効果をうまく使うという3つのお話をしました。自分のモードには、最高のパフォーマンスを出せるフロー状態から、たいして仕事ができないダメ人間モードがあります。それぞれのモードに適切な仕事を割り当てるために、集中してやるべき仕事と不調な時や内職でもできる仕事に仕分けておくことが重要です。また、不安定や不完全な状態を安定や完全にしたいという人間の心理、すなわち机の端のグラスの効果をうまく使うことで、ダメ人間モードでもできる、余計なことはしない、他人に任せる、エンジンをかけるなどのメリットが考えられます。

 今回、自分で仕事の進め方を振り返ってみて、これは小心者の自己防衛のための工夫、よく言えば知恵や戦略なんだということに気づきました。このスタイルが合う人も合わない人もいると思います。ささやかなTipsの中に、ひとつでも参考になったものがあれば幸いです。

この記事が気に入ったらサポートをしてみませんか?