【メルマガ限定】「AIで作られたゴミシステムを直せるエンジニア」になるために、僕がSES時代から実際にやってきたこと

お疲れ様です。ゆうきです。

昨日のYouTube 「AIが作ったゴミシステムを直すエンジニア、時給6000円で需要が爆増する」 は見てくれましたか?

まだの人はこちらから↓  

https://www.youtube.com/watch?v=ECS_6UkteSI

動画の最後に予告した通り、今日はメルマガ限定の話をします。

動画では「直せる側のエンジニアになるには、設計力とビジネス視点が必要」って話したんですけど。

そしたら絶対こう思うじゃないですか。

「で、その設計力って具体的にどうやって身につけるの?」

って。

今日はその答えを、僕がSES時代から実際にやってきたことを全部書きます。

目次

SES時代の僕は、コードが読めなかった

最初に正直に言うと、SES時代の僕、現場のコードが全然読めなかったんですよ。

巨大な銀行システムの一部の画面実装+テスターしかやってなかったんで、「設計どうなってるか」「仕様の全体像」とか、まるで把握してない状態だった。

そこからスクール行って、自分で簡単なWebサービス作れるようにはなった。

でも実際にWeb系のチーム開発に入ったら、ファイル何百個もあって、頭が真っ白になった。

「なんでここでこの関数呼んでるの?」「このデータどこから来てるの?」「全体像どうなってるの?」、何もわからない。

1ファイル理解するのに1時間かかる。全体像把握に何日もかかる。

「これ、ヤバいな」と。

設計力以前に、他人のコードが読めないんですよ。

何が原因だったか

冷静に考えて、原因が見えたんですよ。

データの流れを理解してないから読めないんだと。

コードって、結局「データがどこで生まれて、どこで加工されて、どこに保存されて、どこに表示されるか」の流れなんですよね。

でも僕は、目の前の1ファイルを縦に読もうとしてた。

それだと全体の流れが見えないから、いつまで経っても全体像が掴めない。

僕がやった、地味だけど効いたこと

そこで僕がやったのが、データフローを紙に書いて見える化することなんですよ。

具体的には、こんな感じ。

新しい機能のコード読む時、いきなり全部読まない。

まず、「ユーザーがボタン押した瞬間、どこから始まる?」を探す。

そこから:

  • フロントのどこで処理されて
  • どこのAPIが呼ばれて
  • バックエンドのどの関数で受け取って
  • どのテーブルにINSERTされて
  • どこに表示されるか

を、紙にぐちゃぐちゃ書いていく。

最初は1機能でA4用紙3枚使ってましたね。線がぐちゃぐちゃで自分でも読めなくなる。

でも、これを2週間続けたんですよ。

そしたら、紙に書かなくても頭の中でデータの流れが見えるようになった

正直、最初の数日は「こんな地味な作業で本当に変わるのか」って疑ってました。

でも10日目くらいで、急に視界が開けたんですよ。

あ、ここのデータがここに流れてる」「この関数はあの処理の入り口だ」って、紙に書かなくても見えるようになった。

たった2週間。それで、現場のコードへの恐怖がほぼ消えた。

これが、今の「ぐちゃぐちゃのAI生成コードでも読み解ける力」のベースなんですよね。

「設計の視点がない」と指摘された日

で、コードが読めるようになって、満足してた時期があるんですよ。

俺、もうコード書けるようになった」って。

その時に、現場の先輩に飲みに誘われて、こう言われたんです。

「お前、コード書くのは速くなったけど、設計の視点がないよね」

って。

その瞬間は正直、ムカついた

「俺コード書けるじゃん」「何言ってんの」って。

でもその夜、布団の中で冷静になった時に、ハッとしたんですよ。

「確かに。なぜこのテーブル設計なのかって聞かれたら、答えられないな」

と。

「なぜここでこのデータ構造?」「なぜ正規化してる?」「なぜこの粒度でテーブル分けてる?」、全部答えられない。

書いてある通りに動かしてただけだったんですよね。

これが、僕のキャリアを変えた最大のフィードバックです。

設計力の獲得 = 「なぜ?」の積み重ね

そこから僕がやり始めたのが、全部のコードに「なぜ?」を投げかけることなんですよ。

「なぜこのテーブル設計?」

「なぜこのインターフェース切り方?」

「なぜここで非同期にしてる?」

「なぜこのアーキテクチャ?」

最初は答えがわからない。だから、現場の先輩に聞きに行きました。

ただ、ここで「これってどういう意図ですか?」だけ投げると、「自分で考えてないやつ」と思われて相手にされないんですよ。

僕がやったのは、自分なりに調べた範囲を見せた上で、教えてもらうって聞き方です。

例えば、

このテーブルのカラムをこうしてるのって、この機能でこういう使い方するからって認識であってますかね?

この処理を非同期にしてるのって、こういう理由かなって思ったんですけど合ってますか?

みたいに、自分が調べた・考えたことを見せた上で、教えを請う形にする。

これなら先輩も、「お、こいつ調べてから来てるな」って判断して、丁寧に答えてくれるんですよ。

逆に「これって何ですか?」だけ投げてた時期は、「コード読んできて」で終わってた。

この質問の質を変えるだけで、得られる情報量が全然違う。

で、答え聞いて、「あ、こういう理由でこうなってるのか」と理解する。

これを毎日積み重ねた結果、「自分が書く時にも『なぜこう書くか』を意識するようになった」んですよ。

ただ、ここからが重要なポイント

ここまでだと「現場で先輩に聞きながら自力で設計の視点を磨いていった」みたいに見えるんですけど。

正直に言うと、僕の場合自力だけじゃ厳しかったんですよ。

なぜかというと、現場の先輩に「なぜ?」って聞いて答えはもらえるんですけど、返ってくる答えが断片的なんですよね。

「ここはこういう理由でこうしてる」って単発で教わっても、設計のパターンとして体系で頭に入らない

そこで僕がやったのが、プロのフリーランスエンジニアにお金払って、設計のパターンを全部教えてもらうことなんですよ。

「データの持ち方の基本パターン」「責務の切り方」「アーキテクチャの選び方」「正解の判断軸」、全部体系で叩き込んでもらった。

そしたら、今いる現場の設計を見て「これってどのパターンに該当するんだろう?」って自分なりに考えられるようになったんですよね。

現場の先輩に聞いてた時は答えが断片的だったのが、自分の中の体系と照らし合わせて理解できるようになる。

これがあったから、フリーランスになって最初の現場でも通用した。

経験2年半で月単価83万円取れたんですけど、これも教わった設計パターンを使って動けたからなんですよ。

ゴミコードを「ゴミ」と判断できる目が育つ

ここまでくると、他人が書いたコードを見た瞬間に「あ、これゴミだな」と判断できる目が育ってるんですよ。

なぜか。

こういう理由でこの設計が正解」って判断軸が、自分の中に蓄積されてるから。

その軸と照らし合わせて、目の前のコードを見ると、

「あ、これ責務分離されてないな」

「これ、データの流れがおかしい」

って瞬時に判断できる。

これが、AIが書いたぐちゃぐちゃのコードを読み解いて直せる力の正体なんですよね。

体験したリファクタの話

で、これができるようになると、現場でリファクタの仕事が回ってくるんですよ。

この機能、なんかバグが出やすいんだけど、ちょっと見てくれない?

って。

具体的なエピソードで言うと、ある現場で「ユーザーの設定変更がたまに反映されない」って不具合があって。

普通のエンジニアなら、その不具合が起きてる場所を特定して、ピンポイントで直す。

でも僕が見たら、そもそもデータの流れがおかしいことに気づいたんですよ。

設定変更のロジックがあちこちに散らばってて、同じデータを更新する処理が3箇所書かれてた。

それぞれが微妙に違う条件で動いてて、たまに片方しか更新されないことがあった。

なので、「ピンポイント修正じゃなく、データフローの構造から作り直した方がいい」ってPMに提案したんですよ。

「時間かかりますけど、根本から直しましょう」って。

結果、リファクタは3日で終わって、それ以降同じ系統の不具合が出なくなった

PMから「やっぱり構造から見れる人は違うね」って言われて、契約更新で単価上がりました。

これ、「データフローを紙に書いて読み解いてた」経験がそのまま活きた瞬間でした。

ここまで読んで「自分にもできそう」と思った人へ

ここまで読んで、

「あー、データフローを紙に書く、なるほど」

「『なぜ?』を投げかける、できそう」

って思ってくれた人もいると思うんですよ。

そこはやればできます

ただ、僕がフリーランスで通用するレベルまで行けたのは、設計のパターンを体系で教えてもらったのがめちゃくちゃデカいんですよね。

これがなかったら、現場で「なぜ?」を聞き続けても、断片的な知識のまま長い時間使ってたと思います。

今日の話、自分のペースで試してみてもらえたら嬉しいです。

それでは。

追伸:

今日の記事で「現場のコードの読み方」「設計力の身につけ方」を書いたんですけど、これ実はうちの教材「登竜門」では、もっと体系的にまとめてます

  • 現場参画直後にやるべきこと(環境構築・ルール確認・システム理解の順番)
  • アーキテクチャを読み解くための具体的な手順
  • データフロー・ディレクトリ構造・テーブル設計の理解の仕方
  • タスクをそのまま受け取らず、意図を汲んで動くための思考
  • チーム全体の課題を発見・解決して評価されるための動き方

僕がSES時代に現場のコードが読めなかった状態から、月単価100万超えのプロダクトエンジニアになるまでに、現場でどう動いてきたかを、全29動画で体系化してます。

今日の記事、もっと体系的に学びたい」って人は、下のリンクから案内見てみてください。

→ https://yuki001.com/p/r/WMjJpO2D

※登録後にメールで教材の詳細を案内します。

目次