プログラマにおける「知識の幅」の重要性

プログラマーの立ち位置として年齢を重ねるごとに求められるのは「知識の幅」なのかもしれない。

プログラマーになりたてに言われた「動くだけのものならだれでも作れる」という言葉の意味を最近よく考える。この言葉は僕の中で的を射ていて、今ウェブサービスを作る人は素人でも5万といるしアプリを作る人も同じようにいっぱいいる。じゃあ、アプリを作れればその人はプロなのかというとそうではなくて、「動くものが作れる」のその後がプロと素人の違いなのかと思う。

Androidに限らず古いバージョンで動くが最新のバージョンだと動かなくなっていたり非推奨になっていたりするものがネットの海には溢れかえっている。モダンな書き方は日々進化するし、便利なライブラリは日々出てくる。言語仕様も変わればIDEも変わっていく。そんな中でこれが一番いいという書き方を見つけるというのは至難の業だし、実際そんな銀の弾丸なコードの書き方なんて存在しないんだろう。使用する言語が変わればコードの書き方が変わるように、一緒にいるメンバーによってコードの書き方も変わった方がいいと思う。

どんな環境でも室の高いコードを書くためには幅の広い知識を得るしか無い。プロジェクトの開始時に記載しだしたコードというのはそのプロジェクトの大きな指針となる。後から加わった人間はその指針にそったコードを書いていく可能性が高く、最初の指針が曲がっていればそのプロジェクトのコードはとんでもない方向へと進んでいくだろう。後から加わった人間の知識の幅が最初にコードを書いた人の知識の幅よりも狭い場合、とんでもない方向に進んでいることすら気づかずにプロジェクトは進んでいき、最終的には挫傷することになるんだろう。

新しいことをやろうとした時も同じだ。

「なにをやりたい」と言われたことに対して、それを実現できるかできないかを判断するのはプログラマーの仕事だ。プロジェクトの核となる「実現すべきこと」であれば調査するのに時間をさいて、実現方法・実現時間を出すのは許されるだろうが、日々の改修での見積もりや実現出来るかの判定はその人間の知識の幅で精度が決まる。知っていれば3分でできることでもプログラマーが無理だと判断すれば、実現すれば有効な施策が実現されないこともあるだろう。出来るかできないかの判定は知識がなければできないのだからここでも知識の幅というのは非常に重要だ。

手を動かしてできることはぶっちゃければだれでも出来る。実現するスピードは違うだろうしメンテナンス性も違うだろう。しかし、「動くだけで良いもの」であればだれでも作れる。その一つ上にたつためにプログラマーは勉強しなければいけないんだろうし、その一歩がプロがプロたる所以になるんだろう。

っと、ここまで書いて思うことは、果たして僕はプロだと胸を張って言えるのだろうかということだ。どれだけの知識を持っていればよいのかに終わりはないし、求められるレベルにもよるんだろうが、どのようなことを聞かれても即座に答えれるプロになってみたいものだ。