「プログラマアンチパターン: 問題意識無く新技術に飛びつく」がなぜ発生するか
極論の結論を言うと、その方がプログラマとして何かやってるっぽいから。
※この記事ではプログラマといったときに、いわゆるSEやプログラマとかを区別していません。
プログラマアンチパターン: 問題意識無く新技術に飛びつく
まず「プログラマアンチパターン: 問題意識無く新技術に飛びつく」の説明。
これは文字通りで、
本来は解決したい問題があるから、既存の技術からシフトする意思決定をして、それを行うために本を読んだり新技術にキャッチアップするにもかかわらず、
何かを解決したいという問題意識なく、ただ新しいというだけでその技術を勉強して、何かができるように思い込んでいる、ということ。
周りからみたらバカバカしく、せっかく時間を使って勉強しているにもかかわらずそれが無為になるということが滑稽に見えるかもしれない。
なぜアンチパターンが発生するのか
ただ、全然それは起きうる。
プログラマから見える知識の段階は次のようなもの
0. 何もプログラムのことわからない
1. 業務上最低限なプログラムのことがわかる
~~~~ 何か厚い壁 ~~~~
∞. 何でも知ってるすごい人(おそらく想像上の生物)
もうちょっと細かくしたものが以下にあります。
ここで多くの人は「1. 業務上最低限なプログラムのことがわかる」に達することができる。その時の状況はこんな感じ。
・一応毎日の仕事は今の知識でこなすことができる
・でも知らなくて困ることは多い。
- 自分の関わる全体を見渡すとわからないことばかり
- 何かコミュニティで新しいものがまたでてるっぽい(新技術)
- 実際仕事の中でわからないこと多く、毎回調べながらやってる。
・そんな状況から抜け出したいし、スキルアップしてるほうがエンジニアっぽい
・言語の教科書っぽいもの(RubyやJavaの入門書)は読んだけど、次に何をすればいいか誰も教えてくれない。
・厚い本は難しそうだから自分に合いそうな本を読みたい
こんなときに飛びつくのが、新技術やバズワード。
なんかやっててテンション上がるし、他の人がやってるのを見るとすげーって思う。最新の技術知ってるから最先端にいる感じ。
特に古い技術を使っていると馬鹿にされる気がするから、それで追われて新しい技術勉強するっていうのもある。
これは全然あるあるで、私もJava(Spring)で仕事していて、PythonでDjangoやったり、CouseraのDeepLearningの講座受けてスキルアップした気になっていた
アンチパターンの何がいけないか
別にやっても良いんだけれども、おそらくやっている人が思っていることは、勉強しているほど評価されない、自分のスキルが上がっている気がしない、ということだと思う。
なぜなら私のJava(Spring)をやってる中のPython(Django)がいい例で、MVCで同じ問題を解いているにすぎないから。もちろんPythonだから◯◯がいい、とか言語自体を比べたら解ける問題は違うけど、そこを主として勉強してない。ほとんど、自分が持っている技術と同じことを横展開してその技術を得たと錯覚している。
あとAI学習も同様で、自分のコア技術としてそれで食べていくわけじゃないのにアクセサリー感覚でバズワードに関わっただけ(期せずしてその知識を仕事で間接的に使うことはあったけど)
じゃあどんな技術を学べばいいのさ
別に50年前のやり方でも今の問題が解けるなら全く支障はない。
自分が何の問題に直面しているかを知る必要がある。
そういうと自分がそれ一本で食っていくほど興味のある技術なんて無いっていう人が多いと思う。
だけど、私たちは意識せずに技術的な問題の渦中にいる。
・コードが重複して2重管理になってバグの温床になる→設計
・オレオレソートプログラムがめっちゃ遅い→アルゴリズム
・インフラエンジニアと話が食い違う→インフラ
何がきついかを明確にし、それがどの分野で解決できるのかがわかればおのずとやることが決まってくると思う。問題解決のために厚い本を読むのが必要だとしても、テコが効く可能性があるから、1年かけてでも読む価値はある。
技術と技術書のマッピングでおすすめは新卒のときにお世話になったこのサイト
偉そうなことを書きましたが、私も同じアンチパターンにハマることが多く、なんだったら、このアンチパターンへの警鐘はほぼ私への言葉なので、お手柔らかに。