プログラミングの『才能』とは何か?
読者の方から、
「私にはプログラミングの才能があるんでしょうか?向いているでしょうか?」
という相談を受けることがよくあります。
「才能」という言葉はスポーツの世界でよく使われますよね。
「あいつはサッカーの才能がある」という場合、
- 走るのが速くてスタミナがあるなどの身体的・フィジカルの素養
- 狭い空間を通すスルーパスを正確に蹴る技術
- 「あそこにパスを出すスペースが空いてるな」などと空間を把握する能力・センス
等があります。
これらを総合的に見て他の人より秀でてる人を「才能がある」と言いますよね。
では、「才能のあるプログラマーとはどういう人なのか?」について考えていきましょう。
プログラマーにおけるフィジカルな素養
まず、フィジカル的なものから考えてみます。
プログラマーに必要なフィジカル的な素養とは、「座ってコツコツと作業する力」です。
じっと座ってるのが苦手な人っていますからね。そういう人は体を動かす仕事の方が向いています。
コードを根気よく書いていくには、じっと座っていられるという身体的素養だけじゃなく、コツコツ作業を積み重ねることを苦としない精神的な素養も必要です。
ソフトウェアを完成させるまでには、長い道のりがあります。
頭に浮かんだロジックを打ち込んだら、一発で正しく動くコードが書けたとなることはめったになく、書いて動かしては、間違いに気づき修正してまた動かして動作を確認して…、という繰り返しによってソフトウェアは完成していきます。
このような作業を根気よくコツコツと続けられる心と体が必要なんです。
プログラミングのセンスとは何か?
頭の中にどれだけたくさんのロジックを積んで正確に再現できるかでしょう。
チームで開発するソフトウェアは規模的に一人で全てを把握するのは難しいですが、優れたプログラマーは、大量のプログラムロジックを頭の中で再現して「ここがおかしい」とか「ここを変えればもっと高速化できる」といった発見ができます。
このような能力は経験を積むことでも、身につけられますが、元々持ってる素養によるものもあるでしょう。
才能うんぬんより、一歩ずつ上達していけばいい
頭の中で大規模なロジックを再現できなくても、ソースコードをひとつずつ根気よく調べていけば、バグ修正や性能チューニングはできます。
世界のトップレベルになるとかでなければ、大抵の才能は、努力でカバーできます。
スポーツでもトップレベルのプロ選手になるのではなく、市内の大会で優勝するレベルであれば、努力すれば到達できそうですよね?
プログラミングも同じで、
- 知識をひとつひとつ時間をかけて身につける
- 時間をかけて一歩一歩作業をする
地道な努力を積み重ねることで偉大な仕事を成し遂げられます。
ですから、「自分にはプログラミングの才能があるかな?」と考えるよりもプログラミングが好きならプログラマーになればいいんです!