これ、すごい分かるなあ。かく言う私も「ついていけなかった」ことで1度諦めてしまった人間なのです。 私自身の落ち度や弱さも沢山感じているのですが。 恐らく元のツイート主さんは考えてらっしゃるんだな、と思ったのでこれくらいなら全然良いのですが、「考えさせる教育」って大事だけど上手く行かないパターンって結構あると思うんですよね。
これ、ベテランからすると「若手に考えさせてる」だけど、若手の視点に立つと「少ない手がかりからベテランの脳内にある正しい手順を忖度して完璧な模範解答を出せるようになるまでダメ出しされ続ける」なんでめちゃくちゃしんどいし理不尽に感じて当たり前だと思う。 https://t.co/qcZXicFTwn
— つるや@なろうにて小説執筆中 (@tyurukichi_AA) November 13, 2024
やってみせ 言って聞かせて させてみて 誉めてやらねば 人は動かじ
山本五十六の言葉はやはり好きです。定形作業者じゃなくても通用する話だと私は理解しています。
と言うのも、「考える」のは確かにエンジニアの仕事ですが、「何にフォーカスして考えるか」は教えてあげないとキツイと思うからです。この時重要なのは再現性のある問題に着目することです。 大体、コンビニの店員であれ、小売の店員は確かに「マニュアル主義」の発想です。が、作業にも「コツ」が沢山あります。例えばダンボールを切る手順やモノを運ぶ方法だって、それなりの「コツ」があるんですよ。実際その業種を経験した私が思うに、そういう方たちでもちゃんと「考えさせる」ことは必要です。考えないで仕事ができるものなどないのです。
プログラミング初心者の場合、基本的に「日本語ドキュメント」や「有料のハンズオン」を参照する傾向にあります。私自身がやっていたことですが、他のメンバーの人たちもドボンとかを参照していて、「ああ、私だけじゃなかったんだ」と初めて気付いたことがあります。 プログラミングを上達させるには、1つとしては「組み合わせの応用を増やす」「自分が今何をやっているかを理解する」ことが重要だと考えています。これは公式ドキュメントや関数コメントが最も近しいことを示している場合が多い為、そこを見る習慣を身につけるだけで劇的に変わります。と言うか、私のプログラマの「ブレイクスルー」ってそこでした。
そんなことに「気付く」ということはとても難しいことです。だって知らないんですもの。このようなことは、「例を示して教えてあげる」とちゃんとみるみる伸びてくれます。「組み合わせをどう考えよう」と自発的に「考えてくれる」ようになります。彼らが自分から「このタスクはできる」と言ってくれた時、とても嬉しかったです。なので、「そこは教えてあげた方が良い」と結論づけています。サボっちゃいけないと思うのです。
バグの報告や発見も結構「コツ」があります。例えば「期待結果」と「再現手順」を考えることは結構重要です。そこをちゃんと考えないと、再現する方は大変だし、伝わりにくいことも多いです。また、モンキーテストで上手く行かないことは結構あります。結局私は自分でそこに気付きましたが、これは「教えてあげる」人がいれば、確実に生産性は上がると思います。
では、どんなところに注意するべきなのでしょうか。私自身の思い出で言うと、「主観に注意する」ということがあると思います。
私は他のメンバーにWindows Formsを教えていましたが、これってコードベースで割り当てても作れたりデザイナベースでも作れるのです。こういったものは実に主観的な考えが入り交じることが多いです。その分別をつけることです。チーム内で方向性を統一し、正解と言えそうな例を例示してあげると相手も理解してくれたりすると思います。当時は当初コードベースで作成されていましたが、これをデザイナベースにしようということになって、その手法はどうするべきか、どんな感じにしていこうか、記憶はおぼろげですが、みんなで考えていきました。
悪いのは「センス」という部分に正解を求めさせることです。要は「自分の考えをエスパーさせること」。これは結構悪手なのではないでしょうか。
残念ながら、このパターンは結構エンジニアには相当数あるあるだと思います。とりあえずそこについていく能力も私はまだまだ必要なのですが、自分に関しては避けたいことだ、と考えています。
問うべきこと:「分からせ」って同人ジャンルありますよね。「分からせた人」って「考えられる人」なんでしょうか。
ちなみに「出来る子は勝手に伸びるから、それで議論は終わり」という意見もあります。こういった人は確かにどの人も求めているでしょうし、そういう人は優秀な人材だと思います。が、これこそ一番ナンセンスな議論だと思います。そういう人は「要領を得ている」と言うのだと思います。つまり、先に述べた「コツ」をすでに掴んでいるから出来る子なのであって、単なる教育を放棄した意見、と私は思います(私が言うのもなんですが、こういう人だけを欲しているなら採用活動に何重にも注力した方が良い)。
「手取り足取り教えて…」と言うのは「自分の教え方が非効率ではないか?」と考えることも重要です。正直私もどちらかといえば、手取り足取り教えていましたが、「コツ」を教えて個人で実験をしてくれるようになれば、こっちのものかもしれない、と思っています。そこからが、彼らの活躍のスタートだったからです。ともかくも、私は「ちょっと受動的な人」がある瞬間から(それは不明瞭なものですが)、「自発的に動くようになる」ことは存在するらしい、と言う観測をしたことがあります。私はこのあたりに良いメソッドが見つかってはいないのですが、「そういう方向に導けないのか?」と考えることも大事なのではないでしょうか。
製造業だと「カンコツ」という言葉が使われると学んだ記憶があります。つまり、そんな「カンコツ」を掴めていない人に、掴めてる人が教えてあげるのが教育というものなのではないでしょうか、と自分は考えています。
最後に私の思っていることを書きたいと思います。一度失敗した自分と、ど素人から優秀に育って良い会社に入っていったメンバーたちを思って考えていることは以下のとおりです。
プログラマに向き不向きはあるかもしれません。でも、何にせよ出来ない人はいない
とりあえず、自分自身はそう思っていたりします。
しかしさ・・・
欧米発の知見(XPやGoogle理論)で本来は答え出てるんじゃないと思うの。
属人性はダメとか要件を隠すのはダメって散々言ってるじゃんね。ブリリアントジャークは良くないよってネットフリックスも言ってるじゃん。SNS中でなぜか真逆のオレオレ論調が飛び交ってエスカレーションするの、なんか戦前の失敗の本質っぽい気がするなあ…と思うのであんまり過激なのは目にしない方が良いんだろうね。