「機能はスタート地点であって、ゴールではない」
「プログラミングをするために、何から始めれば良いのだろう」
師匠いわく、それは開発言語やソースコードの習得だけではないらしい。
師匠は、紙とペンを用意し、「このシステムに必要だと思うことを、どんどん書き出してみて」と言った。
その日から、来る日も来る日もシステムのことを考えては紙に書き出していった。開発言語やソースコードの勉強をする時間が2割くらいだとしたら、残りの8割はひたすら考える時間だったといっても過言ではないくらい。
どんな機能があると便利なのか。
ボタンはどこに置いたら良いのか。
このボタンを押した先には、どんなページがあるべきか。
私は日々、考え続けた。
「プログラマーって、もっとソースコードをガリガリ書いたり、開発言語の勉強をするものだと思っていました」と言った私に、師匠は教えてくれた。
「コードだけが書ける人はただのコーダーに過ぎない。本当のプログラマーに必要なことは、そのシステムの未来を見据えた要件定義と設計をすること。そのためには、『本当に必要なことは何か?』を考え続けることが、何よりも大切なんだよ」と。
今もこの先も、この言葉はずっと私のモットーだ。
「正解を出すより、答えを導き出す過程が大切だ」
ソースコードを書いていると、壁にぶつかることがある。
自分が思い描いている機能を落とし込もうとしても、実現できないのだ。
そんな時、師匠は言った。
「ひとまず一週間考えてみて、わからなかったらまた聞いて」
一つの実装に一週間も!?
あまりにのんびりしているのではないかと感じたが、師匠の言葉通り、私は様々な角度から調べ続けた。
一体どのようにしたら実現できるのだろう。
いろいろな道を通り、正解を追い求めたが、いつまで経っても機能は実現しない。
一週間後、師匠に聞いた。
すると、師匠はたった三行のソースコードを書いて、機能を実現させてみせた。
「これだけ調べたのに、たった三行で……」
自信を無くしている私に、師匠は言った。
「実装に正解はないし、この方法は調べても出てこないと思うよ。でも、たくさん調べたことで、いろいろ勉強になったでしょ?」と。
私はこの時、「正解だけが全てではない」と知った。
答えを導き出す過程で、自分の考え方が正しいかどうかを考えながら調べ進めていくと、その答えが正しくても、そうでなくても、調べた分の知識は備わっていくからだ。
そもそもこの世の中に、たった一つの「正解」なんてものはないのかもしれない。それでもその正解を出すための過程を大切にすることで、「最善」を見つけることはできる。
いつしか私は、そんなふうに思うようになった。