諸先輩方から口酸っぱくして言われたこと
「プログラムを上手に作るコツは、出来上がりを想像しながら作っていくことだよ」。
今を遡ること30年以上も前、まだ私が社会人になりたて、かつ、プログラマーとしての基礎知識をOJTで習得している最中、講師や先輩達から口を酸っぱくして言われ続けた言葉である。
出来上がりを想像する・・・・・。
今でこそすんなりと理解でき、腹に落ちるところまで持ってこれた感はあるが、働きはじめた新入社員当時の私には、その言葉の字面的な意味は理解できていても、本質は全く理解できていないものだった。
会社員として働くための必要最低限なマナーや、ゼロベースから学習するコンピュータ・プログラミングのイロハなど、覚えたり身に付けなければならない情報が山のように積み上がっていて、インプットするだけで日々精一杯であったのだ。それらをしっかりと咀嚼し、アウトプットまで結びつけるプロセスを体系的に理解し、実践することなど到底無理な相談である。人生初のボーナスを支給される前の人間にそれらを強要するのは、無理ゲーを攻略するよりハードルが高く、険しい。
数あるファミコンソフトの中でも特にクソゲーの誉れ高い、あの「スペランカー」の如き難易度の高さである。
30年以上を経過した今でも、もちろんスペランカーは1面でさえクリアできていない。
それより何より、ファミコン本体やソフトが既に手元にない状態であるがゆえ、1面をクリアするという大いなる野望は露と消えた。もう二度と我が家のTV画面に映ることは無い。
ちなみに、令和における新入社員研修はどのように変化しているのだろうか?
名刺の受け渡しや、外線電話の受け答えの仕方などをロールプレイで学ぶのだろうか?それとも、ビジネスに関する様々なお約束については、オンラインで学習するに留まるのだろうか?
当時、私が受けた研修では、ズラっと居並ぶ人事部の先輩達の前(しかも全員が強面)で、挨拶から始まり、名刺の出し方、受け取り方、その流れで会議に移行した際、いただいた名刺をどのような順番でテーブルに並べておくかなど、一挙手一投足にいたるまで、微に入り細に入り注意された記憶がある。まるで格式高い茶道のお稽古のようである。
リモートワーク全盛の中、Youtubeにアップされた新人教育動画を視聴するようなスタイルに移行しているのだろうか?実際にロールプレイで顔から火が出るような思いで演技をし、今でもトラウマとして鮮明に記憶に残っている、あの教育方法の是非を私は問えない。
仕事のやり方も経験すべき事柄も、それにまつわる習得すべき前提知識も、時代により常に変化しているからだ。
とにかく想定のバリエーションを増やす
画面制御のプログラムは出来上がりを想像しやすい。画面上で行われるであろうユーザのアクションが想像でき、かつ限定されるからだ。
アクションが決まってくれば(想定の範囲にしっかりと収まれば)、後はどのようにプログラムを反応させるか、だけの問題になる。つまり、設計段階において、いかにユーザアクションのバリエーションを抜け・漏れなく想定できるかにかかっているのだ。
データ制御のプログラムも基本的には同じである。
目的の機能をしっかりと処理させるため、さまざまな入力データのバリエーションを想定し、通常処理、イレギュラー処理、エラー処理、それぞれに対してコードを記述すれば問題はない。(私が習得した旧時代のプログラミング言語に限った話であり、今日の進化した言語では違うのかもしれない)
プログラミングの技術も当然関係してくるのだが、まずは設計段階において、要求される機能や処理のバリエーションをしっかり想定する作業こそが、後々の工程に大きく響いてくる。これは何もコンピュータ・プログラミングだけに限定される話しではないであろう。家を建てるにも、商品を生産するにも、何か行動を起こして他人に動いてもらうにしても、プロジェクトを遂行するにしても、それぞれの場合において必要となる要素をいかに想定し、明確化できるかにより、アウトプットの精度や成否が決まってしまうのだ。
要求要素を限界まで分解・抽出するには、ひとえに想定のバリエーションを増やすほかない。
またそのバリエーションを増やすには、様々な経験を経て蓄積される、「知の引き出し」を多く持つことが必須となる。
新入社員にいくら「出来上がりを想像することが大事」と説いてみても、想像するための経験値や知の引き出しが絶対的に足りないのだから、腹に落ちるわけがない。表面上でしか納得できないのだ。
数多く仕事を経験することにより、それらが徐々に蓄積されていき、要素想定のバリエーションや精度が高まっていく。ひいては、仕事の質が高まっていくのだ。
「出来上がりを想像すること」は、経験値を上げることなのである
与えられた仕事をこなすうち、自分なりのやり方やコツが掴めてくるようになる。
何が要求されていて、何を提供すべきなのかがハッキリとしてくる。
仕事の出来上がりを想像するには、ひたすらに経験値を上げること、知の引き出しを増やすことにより結実するのである。
諸先輩方からのアドバイスも、経験値が不足している新入社員には馬の耳に念仏なのだ。
体感することができないのだから納得のしようがない。
何年か経過し、仕事への対峙方法がそれとなく確立できはじめた頃、ようやく私はこの言葉を腹に落とすことができたのである。
IT技術がいかに発展しようとも、日々の営みが便利になろうとも、この仕事に対する本質的な原理は変わらないのではないだろうか?
何をするにも最初はダメダメ。失敗しては怒られて、提出した資料はダメ出しされ、半沢直樹ばりに「これはまさにゴミである!」と断罪されようとも、少しずつ知の引き出しを増やしていくことを怠ってはならないのである。
何事においても、我慢して耐える時期は必要であり、不可欠であり、避けては通れない。
大成した世の偉人たちのいづれも、この我慢してノウハウを蓄積する時期を経たからこそ、大輪の花を咲かせるに至ったのではあるまいか?
もう引き返せない
「五郎さん、いい加減、もうちょっと相手の想定要求を精査してから資料作ってくださいよ」
「あんたさぁ、妻である私がして欲しいこと、まだわかんないの?」
日々投げかけられる文句アドバイスを真摯に受け止めるには、どうやら私は年を取りすぎたようである。経験値は豊富(かどうかも怪しいが)にあるが、知の引き出しは一向に増えることなくアラフィフを無事に迎えてしまった。
仕事にしても夫婦生活にしても、経験値だけ豊富でもダメなのである。
学びから増やすことの出来る「知の引き出し」が一定数のままであっては、大成することはおろか、認めてもらうこともままならない。
出来上がりを想像することに失敗した私が、今ここにいる。
扇風機のみを与えられた私の部屋には、生暖かい空気が全身にまとわりついている。
「もう引き返せないのだなぁ・・・・・」と、一人つぶやく。
背中をつたう汗は、冷や汗にもかかわらず生暖かいものだった。