上達する人と上達しない人の違い
元ネタはプログラミングではないのだけど、タイトル通りのことが書かれていて気になったので、用語を置き換えてみた。
プログラミングが上手くなるタイプ
- 明確な目標がある
- 常に向上心
- 理解力がある
- 自分で考える肉食系
- 自分に厳しく、テキパキと仕事をこなす
- 時間厳守
- 厳しく評価してくれる人に恵まれている
- 良い師匠と目指すコードに巡り合えた
- コードを書く環境が整っている
- 時間と金に余裕がある
プログラミングが上手くならないタイプ
- 目標が定まらずダラダラ断続
- ついに思考停止
- 理解しようとすらしない
- 自分で考えず与えられた事しかしない家畜系
- 自分に甘く、ついサボって他の事に逃げてしまう
- 時間にルーズ
- お世辞しか言わない環境に浸れている
- 師匠を決められずコードが不安定
- コードを描く環境が整っていない
- 時間と金に余裕が無い
置換した上で、気になったものに言及してみよう。まず「明確な目標がある」については、「スマートフォンでアプリが作りたい」とか「趣味をサポートするツールを作る」や「某社に入社したい」など、何でもいい。ただし、大きな目標1つでは、それを追うことに疲れてしまうので、それを達成する為の小さな目標をブレークダウンすることが必要だと思う。
「常に向上心」は、僕が思うに、コードを書いたら書きっぱなしにするのではなく、それを見直すこと、あるいはレビューしてもらうことが望ましい。新しい機能やパターン、パラダイムを習得したときには、特に。
「自分で考える肉食系」は、独学のみであれば、自分で考えるより他ないので問題ないのだけど、そうではない場合。つまりチームで開発を行う場合において、自分で考えずに人に聞いてばかりでは育たない。確かに人に聞くことは大事だし、悩んでいる暇があるなら聞いて欲しいケースも多々あるのだけど、「この機能を実装するにあたって、これこれこういうことを考えましたがいかがでしょうか?」と、自分の考えを明らかにしてから質問することが自分にとってプラスになると思うし、質問される側も答えやすくなる。
「厳しく評価してくれる人に恵まれている」「良い師匠と目指すコードに巡り合えた」「コードを書く環境が整っている」この3つの根本は「環境」である。人間の能力は環境依存している部分が少なからずあり、環境をコントロールすることで自分の能力を高めていける。社内に師匠となる人がいなければ、外に出ればいい。僕も師匠(と勝手に思っている人)は社外にいる。しかも年下である。社内に閉じこもっているうちは、成長できても社内で必要な人止まりだ。もちろん会社にもよるんだろうけど。「コードを書く環境」というのは、開発環境から、周りに気が散る要素がないかといった心理的なものまで様々。
「時間と金に余裕がある」……技術書をホイホイ買ってしまうようになってお金に余裕がありません。助けてください。それはともかく、この2つのリソースに余裕があれば、地方に住んでいても勉強会に参加しやすかったり、PCに、技術書に、何の躊躇いもなく注ぎ込むことが出来て素晴らしい。
僕から1つ付け加えるとするなら、「言い訳をしない」かな。やるか、やらないか、が全てで、やっていなければ、当然上達の幅は狭いままだ。努力に言い訳をしてはいけない、と自戒の意味も込めて。