禅で学ぶ「エンジニア」人生の歩き方
第8回 もう一歩先へ
今回はスキルアップにまつわる禅語を3つ,チョイスしてみました。
如何に己を磨くか。
そんな公案が古くから連綿と伝わっていることに改めて驚きを感じながら書いてみたいと思います。
禅語「時時勤払拭」
ランク:新人 カテゴリ:スキルアップ
じじにつとめてふっしきせよ,と読みます。日々,ホコリや塵をはらって綺麗にするように努めなさい,という言葉です。
さて。「IT関連のスキルアップ」と「日々の掃除」とのあいだに,どんな関係性があるというのでしょうか?
日々の仕事に追われる中で,それでも,我々の仕事の多くはそれなりにわからないところ,悩むところがあると思うのですが如何でしょうか?
例えば。どう実装するかを調べて,とりあえずサンプルコードを見つけはしたのだけれど「そのコードの各ステップが何を意味しているのか」がよくわからずに……本当であれば調査/学習をしたいところなのだけれど,時間がないので「とりあえずコピペ」で片付けてしまったり。
バグの修正で,いじくり回しているうちに「よくわからないけど何となく直った」っぽいので,原因究明を「一端」後回しにしたり。
もう少しうまくclass切りができそうかもしれないんだけど……とりあえずベタで書いてしまったり。
「関数化したほうが多分綺麗になるし後々楽だろうなぁ」と思いつつ,ついコピペでソースを増産してしまったり。
ふと気付いてしまったセキュリティホールを「後で直せばいいや」と,一端見なかったことにしたり。
などなど。
そんな「ちょっと後回し」をまったくしたことがない,という方は非常に稀だと思うのですが,如何でしょうか?
問題なのは,その「ちょっとの後回し」をどうにかする時間がなかなか取れずに,日々の仕事に忙殺され……気がつくとすっかりと忘却の彼方に行ってしまっているのではないか,ということです。
はじめは「まずいなぁ」と思いながらの後回しが,気がつくと「後回しにするのが当然」になり,つまりは「コピペ」であったり「原因不明なバグ」であったり「セキュリティホール」であったりを放置するのが,そんな様々が,あたりまえ,になってしまってはいないでしょうか?
ふとどこかで思い出しても……あまりにも積もってしまった塵の山に,やっぱり頭によぎるのは「時間がないから後で」。
割れ窓理論,という言葉をふと想起してしまうのですが。
そんな「割れた窓」をそのままにして,あちこちの新しい仕事の窓も,全部割ってしまってはいないでしょうか?
そうして。 そんな「割れた窓」の状態を「だって時間がないから」の一言で,逃げてしまってはいないでしょうか?
時時勤払拭。
塵が積もっていくと,特にこのIT業界,本気で手が出せないくらいに問題が肥大化したりします。
無論,他の人が積もらせてしまった塵をどうにかする,というお仕事もあるかと思うのですが,それが大変なことを知っていればこそなおのこと,まずは「自分の仕事では塵を積もらせない」ことが,大切なのではないでしょうか?
汚れを綺麗にするためには,無論「汚さない」のも大切ですが,同じくらいに「毎日掃除をすること」。時々に勤めて拭い去ること。
あなたは。
そんな拭き掃除を積み重ねて綺麗にしていますか?
それとも,埃を積み重ねて手が付けられない塵の山を,割れ窓を,作ってしまいますか?
禅語「百尺竿頭に一歩を進む」
ランク:中級 カテゴリ:スキルアップ
「百尺竿頭須進歩,十方世界是全身」。「百尺竿頭に須らく歩を進め,十方世界に全身を現ずべし」と書かれます。
百尺の竿というのは「到達できる本当に最後の最後の地点」という意味があります。では,そのさらに先に一歩を進める,とはどんな意味なのでしょうか?
よく「**ができる人」「**が使える人」という表現を目に耳にします。募集要項なんかで多いですね。 Excelができる人,C言語ができる人,Javaができる人,UNIXができる人,Webができる人,インターネットができる人,などなど(すべて募集要項の文章で拝見したことのある文言です)。
そもそも「できる」という言葉の定義自体が,非常に難しいと思うのです。特に「Webができる人」「インターネットができる人」あたりになると,本気で筆者には想像も付きません(苦笑)。
あんまりわかりにくいものを取り上げると文章が先に進みませんので,「(ある特定の言語)ができる」という言葉を取り上げてみましょう。 「ある特定の言語」の中には,とりあえず一般的な「手続き型言語」を適宜脳内変換していただければと思います。
例えば。
変数の宣言の仕方がわからない,反復(forなどのループ)や分岐(ifなど)の書き方がわからない,などの人が「できる」と言えない,というのは非常にわかりやすいと思うのですが,では「もの凄く汚いしその後のメンテナンス性なんて皆無だし遅いしメモリ食うし,でもとりあえず動くことはなんとか動く」プログラムしか書けない人は,果たして「できる」に入るのでしょうか?
どうせなら「ソースコードが大変に簡潔で綺麗で可視性も高く,その上で早くてメモリを食わなくて,機能拡張がしやすい」ところまで「できる」ほうがよいのではないか,と思います。
プログラムも「言語」です。日本語や,その他さまざまな言語と同じように。
つまり「一通りどんなものでもとりあえず書けるようになった」というのは,実はゴールではなくてスタートなのです。
「文法や言葉の使い方など大分問題はあるにしても,とりあえず意思の疎通はできる」というあたりがスタート地点だとすると,例えばそこから「誤解されにくい説明文が書ける」「美しく理論展開された論文が書ける」「感動を涙を自在に導き出せる叙情詩が書ける」「臨場感に溢れた小説が書ける」「他人を堕落させうる,詭弁と悪意に満ちた文章が書ける(やっちゃだめですよ)」などなど,日本語であっても「より優れた文章」という,さらなるレベルアップの方向が色々とあるのです。
そうしてそれは,プログラムも同じです。
より可視性の高いプログラム。より高速なプログラム。より軽量なプログラム。より保守性の高いプログラム。
あるいはさまざまなデータ構造やアルゴリズムの理解,などなど。
では。
それらを仮に「極めた」としたら,その先はないのでしょうか?
それこそがまさに今回のお題です。
百尺竿頭に一歩を進む。
もしあなたが百尺の竿頭に立てたのだと,極めたのだと,仮定して。 禅は,あなたにこう問いかけます。「その次の一歩は?」と。
スキルアップは,驕ることなく慢心することなく,間断なく積み重ねた先にあるものです。 勝って兜の緒を締めよ,という言葉もあります。
言語を習得できた,**ができるようになった,そんな時こそがまさに,試しの時です。 そこで安住してしまうのか。そこから先に「さらにもう一歩」進めることができるのか。
あなたは。
竿頭のさらに先に進むことが,できますか?
それとも,竿頭に至る前に慢心で己の成長を止めてしまいますか?


