お疲れ様です。ゆうきです。
昨日のYouTube 「AIが作ったゴミシステムを直すエンジニア、時給6000円で需要が爆増する」 は見てくれましたか?
まだの人はこちらから↓
動画の最後に予告した通り、今日はメルマガ限定の話をします。
動画では「直せる側のエンジニアになるには、設計力とビジネス視点が必要」って話したんですけど。
そしたら絶対こう思うじゃないですか。
「で、その設計力って具体的にどうやって身につけるの?」
って。
今日はその答えを、僕が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
※登録後にメールで教材の詳細を案内します。