【#も読】初心者と熟練者、同じ5行のコードを見た時の視界の違い(@yusuktan)のトップ画像

【#も読】初心者と熟練者、同じ5行のコードを見た時の視界の違い(@yusuktan)

投稿日時:
maguroのアイコン

Deno Land Inc. / ソフトウェアエンジニア

maguro

Xアカウントリンク

「あの人も読んでる」略して「も読」。さまざまな寄稿者が最近気になった情報や話題をシェアする企画です。他のテックな人たちがどんな情報を追っているのか、ちょっと覗いてみませんか?


みなさんこんにちは。

「あの人も読んでる」、第12回目の投稿です。maguro(X @yusuktan)がお届けします。

初心者と熟練者、見ている世界の違い

2025年8月22日、素晴らしいエントリがZennにて公開されました。

瞬く間に拡散され、9月15日現在で1800強のいいねを集めるなど、猛烈な評価を得ているこのエントリ。僕はXのタイムラインに流れてきて読みはじめ、すぐに「これは珠玉の内容だ」と思いました。 これだけ拡散され、評価を得ているエントリですから、既に数多くの方が読んでいることと思いますが、本当に良い記事は宣伝しすぎるくらいでちょうどいいと思い、今回の「も読」で紹介することにしました。

詳しい内容はぜひ元の記事のほうを読んでいただければと思うのですが、ざっくり言うと以下のたった5行のJavaScriptコードを例に挙げて、これがエンジニアとしての経験値に応じてどのように見方が変わっていくのか、ということが述べられています。

async function getUserName(userId) {
  const response = await fetch(`https://api.example.com/users/${userId}`);
  const user = await response.json();
  return user.name;
}

僕がこのエントリを素晴らしいと思った最大の理由は、シンプルな題材を使いながら、初心者と熟練者の見えている世界の違いを明解に表している点です。

今の大生成AI時代において、「とりあえず動く」コードを書けるということの価値がじわじわと減っていきます。まさに冒頭で紹介されている5行のコードは、「XXXというエンドポイントからユーザー情報を取得して、name フィールドを返したい」みたいに指示したら、ほんの数秒で生成してくれそうなコードです。そして、そのAIの出力に対して、満足してそのまま使うのか、それまでの経験や知識をもとに「改良が必要だ」と判断するのかは、人間の仕事です。

経験豊富なシニアであっても、例えばプロトタイプを高速に作るフェーズであれば、この出力を「あえて」そのままで使う、という判断をすることもあるでしょう。一方、しっかりとプロダクト開発を行うフェーズであれば、このたった5行のコードの中に潜む「不十分さ」を嗅ぎとり、AIに追加の指示をするなり、自分で修正するなりをするだろうと思います。

これがジュニアだとどうでしょうか。とりあえずこのAIの出力結果を動かしてみて、「よし、ちゃんと動いてるっぽいな。OK」となるかもしれません。

件のエントリでは、このことを端的に以下のように表現しています。

でも、初心者は「他に方法を知らないから」 これを書きます。
熟練者は「すべての選択肢を知った上で、今回はこれで十分だ」 と判断して書きます。

見えている世界がまったく違います。

mizchiさんの「CLINEに全部賭けろ」に以下の一文があります。

高度なAIは自分の鏡みたいなもので、AIから引き出せる性能は、自分の能力にそのまま比例する。

自分が知らないことをAIにやらせることはできない――と言い切るのは言い過ぎかもしれませんが、少なくともAIの出力に対して、批判的な視点を持ったり、適切な追加の指示を与える能力は必要といえるでしょう。さもなくば、AIの出力を盲目的に承認することで、潜在的な問題点を知らず知らずのうちに見逃してしまうことになるかもしれません。

いかにも僕が熟練者側の立場で語っているように見えるかもしれません。今回の例で挙げられているような「fetch でデータを取ってきて、一部のフィールドを返す」という部分に関しては、かなり慣れ親しんでいる部分なので、熟練者といっても差し支えはないだろうと思います。しかし、ひとたび慣れない領域に出れば、僕もまだまだ日々勉強を重ねる毎日です。

例えば、インフラ側の知識に関しては、必要になるたびに既存のTerraformファイルを見よう見まねでコピペしていじったり、Kubernetesもかなり大雑把な理解を基に触っていたりします。この分野の熟練者の人からしたら非効率だったり、ご法度だったりすることをやっているかもしれません。でも僕自身では気づけません。

OpenTelemetry周りも雰囲気でやっており、「とりあえずなんかtrace取れてそうだから、ヨシ!」という感じでやることもあります。そうやって雑にやっていると、いざ障害が起きた時に必要なデータが取れていなかったなど、痛い目を見ることがあります。そうやって次回は同じ轍を踏まないようにと学んでいきます。おそらく、技術書などで体系的に学ぶほうが近道だと思うのですが、最近は技術書をしっかりと読む時間があまりとれていません。

エントリを読んで、自分自身、未知の領域に対する学びを継続していかなければならないなと初心に立ち返る思いでした。

生成AIの発達が目覚ましく、学ぶことの意義を見いだせなくなっている人がいるかもしれません。ちょっと勉強したくらいだと、生成AIのほうが自分より圧倒的に賢く見えるからです。

でも、自分の経験や知識がある一定の水準を超えると、生成AIが自分の知識を増幅・補佐してくれる良き同僚や議論相手になります。生成AIに手綱を握らせるのではなく、生成AIと二人三脚でやっていく。今のところ、僕はこのようなスタイルが理想と考えています。

そして、その理想状態に到達するため、そして理想状態であり続けるために、学んでいくのだろうと思います。

私たちが学び続ける理由。
それは、「世界の見え方が変わっていく、その瞬間瞬間が素晴らしく面白いから」 なのかもしれません。


maguroさんの「も読」過去記事