あてずっぽうプログラミング
最近、「プログラムを初めて学ぶ」みたいな人が周りにいる環境になり自分も初心の気持ちを持ちながら勉強してる。
その中で初心者エンジニアが陥りがちなイケてない行動・思考パターンが目につくことが多かったので、自分の中での整理がてら言語化しておく。
為念、添えておくと批判をしたいのではなくて、この振る舞いをしてしまうという覚えのある人に対しての注意喚起と、この問題への対策を書く。
あてずっぽうプログラミングとは
「よくわからないけど、ここにこれを書いたら動くかな」みたいな方法で問題解決を試みるプログラミング手法。バスに乗ってぼーっとしてるときに適当に自分が名付けたので正式名称はたぶんない。
一部の初心者プログラマーがやりがちで、本人も気付いてないけどかなり致命的な振る舞い。たいていは経験を通して矯正されるので、この振る舞いをする中上級のエンジニアはほとんどいないと思う。
まぁ、逆にそのレベルだと過去の経験を使って当てずっぽうでできるケースもあるけど。
原因:なんでこうなる
この振る舞いをしてしまう原因は、理解が甘い状態なのになんとなくで書いて動かそうとするから、だと思う。
もう少し抽象的に言うと「行動・思考パターンがイケてないから」だと思ってる。
なので、「私は技術力が足りないからなんですー」みたいな話ではない。逆に初心者の中でもこの振る舞いをしない人は結構いるので。
行動・思考パターンの端正のため、日頃の意識・環境をが大事な上に変えるのも時間がかかるので焦らないこと。人間に刷り込まれたパターンは一朝一夕じゃ変わらないので。
解決方法:この振る舞いをしちゃうんだけど、どうすればいいかな
「あてずっぽうプログラミング」をしちゃう人はきちんとした問題解決方法の行動・試行パターンを知らないだけの可能性が高いので、まずその方法論を知る、理解する、実践するの流れになると思う。
じゃあイケてる方法って何?について、周りに聞ける人がいればアドバイスをもらうことをおすすめしておく。
一応、自分が考える具体的な良い行動・試行パターンは下記に書いておく。
やっていることを説明できるレベルで理解する。
説明できるレベルにまで理解すること。
具体的には書かれているコードを1行単位で説明できること。
うまく動かないなら一行ずつ細かく追っていく
デバッグできること。
JavaScript ならせめて console.log で1つずつ変数を追いかける。きちんとデバッグするなら debugger を使うほうが楽なので、できるならそっちを推奨したいが、その使い方で詰まる可能性もあるので最初は console.log で良いかと。
泥臭く1つずつこなす覚悟を持つ
1行ずつ説明するのも、1行ずつデバッグして細かく見ていくのも、慣れてなかったり知識がまだ弱いと結構大変だと思う。
なので、無意識に「もっと楽な方法はないかな」みたいな逃げが生まれて、えいや、で動かないかなーからの「あてずっぽうプログラミング」をしちゃってる可能性がある。
それか、プログラミングの学習と問題解決にかかるコストを甘く見積もってるかもしれない。もし簡単に学べて、簡単に解決するなら、みんなスーパープログラマーになっとる。これらのコストは思ってるよりもかなり大きいので注意。
そして、残念ながらスマートに物事を解決する方法はないので、泥臭く1つずつやるしかないし、むしろそっちのほうが結果として低コストで済む。
おわりに
はじめてプログラミングを始めたころの自分もこの振る舞いをずっとしてたなー、というのをすごい思い出す。
そのときは、周りに指摘してくれる人もいないし「なんで他の人は出来てるのに自分はできないんだ、自分は向いてないんだな」って本気で悩んでたし苦しかった記憶がある。
ということで、この振る舞いをしちゃってる人がいれば強い言葉にならないように気をつけながら教えてあげてください。