テントで十分な時に豪邸を建てるな:あるIT学生の「成長」の教訓
自分を優秀に見せたいというプライド、周囲からのプレッシャー、そして技術選定における高い代償を伴う教訓についての実体験です。最もシンプルな解決策は受け入れにくいこともありますが、多くの場合それが正しい選択です。
これは、女子学生の前で見栄を張ったばかりに友情を失いかけ、パニックに陥った夜々——そして「シンプルさ」について学んだ、高い代償を払った大学3年生の物語です。
昔の僕は、自分がすごく「イケてる」と思っていた
大学3年生——それは学生生活の中で最も不安定で、プレッシャーに押しつぶされそうになる時期です。周りの友人たちはインターンシップに向けて動き出し、あちこちで内定(オファー)をもらったと自慢し始めます。同調圧力(ピアプレッシャー)が毎日重くのしかかってきました。
しかし正直に言うと、その年の大きなグループ課題で私が「狂った」ように熱中した最大の原動力は、非常に男の子らしい理由からでした。私たちのグループには、女子学生が1人いたのです。
ITという男だらけの業界において、グループに女子がいることは、まるで新しい生命の息吹のようでした。「技術的に頼れる存在」であることをアピールしたいという本能が即座に目覚めました。自分の履歴書(CV)をキラキラに見せたかったし、彼女を感嘆させるような「超絶スゴい」システムアーキテクチャを背負って立ちたかったのです。
本格的なシステム設計(System Design)の授業など受けたこともなく、ネットで拾い集めた知識しかないにもかかわらず、私は最初のグループミーティングで堂々とこう宣言しました。
「この科目はマイクロサービス(Microservices)でやるべきだ。サービスを細かく分割して、Dockerを動かして、メッセージキュー(Message Queue)を設定してカッコよく仕上げよう。3つも機能があるのにモノリス(Monolith)で1つの塊にするなんてダサすぎる。先生に見られたら手抜きだと思われるよ!」
半信半疑の目で見つめる3人の友人を前に、私は自分がまるでアーキテクチャの「神」にでもなったかのような気分でした。徹夜して、矢印が交差しまくり、ブロックが複雑に絡み合うシステム構成図を描き上げました。
それこそが「ハイレベル」だと思い込んでいたのです。しかし、それは暗黒の過ちの連鎖の始まりに過ぎませんでした。
午前2時の悪夢と、無力なプライド
私たちは、まともなレンガすら一つも持っていないのに、豪邸を建てようとしていたのです。
発表の日が近づくにつれ、システムは崩壊していきました。ロジックのコードを書く代わりに、私たち4人はアパートの部屋に引きこもり、時間の80%を「目に見えないエラー」の修正に費やしました。Dockerの環境エラー、サービス間のデータのズレ、そしてGitコンフリクトという名の悪夢です。
進捗デモの第2回目を翌日に控えた、午前2時のことでした。
私が git push を叩いた瞬間、ターミナルの画面が真っ赤な文字で埋め尽くされました。システムが完全にクラッシュしたのです。Authサービスが落ち、それに引きずられるように他のすべてのサービスも完全に沈黙しました。直そうとすればするほど、コードはさらに絡み合っていきました。
向かいに座っていた親友が机を激しく叩き、目を血走らせて叫びました。 「もう勘弁してくれよ!なんでお前、急にマイクロサービスなんて言い出したんだ?今じゃローカルでWebを立ち上げることすらできないじゃないか。明日、何を報告するんだよ?全員で単位落とす気か?」
息が詰まるような重苦しい空気。しかし、その時私にとって一番恥ずかしかったのは、グループの女子の不安げで無力感に満ちた視線でした。彼らは私に成績を託してくれたのに、私の「見栄っ張りな病」がグループ全員をどん底に引きずり込もうとしていたのです。傲慢なプライドは粉々に砕け散りました。その夜、誰も眠ることはできませんでした。

先生の助言による「方向転換」
翌朝、私たちはバグだらけのシステムを教室に持ち込み、低い評価を受ける覚悟をしていました。しかし、私が一番良いところを見せたかった「彼女」から、思わぬ転機が訪れたのです。
状況があまりにも絶望的だったため、彼女は授業の前に自ら先生のところへ行き、アドバイスを求めてくれていました。席に着くなり、彼女は優しくこう提案しました。
「先生がね、私たちは自分たちで自分を苦しめているだけだって言ってたよ。先生はシステムが正しいロジックで動くかどうかを評価するのであって、最新のテクノロジーをどれだけ詰め込んだかを評価するわけじゃないって。締め切りに間に合わせるなら、DockerやKafkaなんかは全部やめて、すべてをモノリス(Monolith)にまとめ直した方がいいってアドバイスしてくれたの。みんな、どう思う?」
その言葉は、私の愚かさを目覚めさせる優しい平手打ちのようでした。私が複雑さを使って周りを「威嚇」しようとしていた一方で、彼女の冷静さと現実的な視点こそが、グループを救う唯一の希望だったのです。
私は見栄とプライドを捨て、頷きました。「うん、先生の言う通りにしよう。最初からやり直そう。」

シンプルさがもたらした魔法
私たちはあの複雑に絡み合った構造をすべてゴミ箱に放り込み、**モノリス(Monolith)**へと回帰しました。
すると、魔法のようなことが起きました。無駄な複雑さを捨て去った瞬間、作業のスピードが恐ろしいほど速くなったのです。ネットワークエラーも消え去り、バグを見つけるのも信じられないほど簡単になりました。
2日間で機能のフローを完成させ、さらに2日間でUIの最適化とバグ修正を行いました。女子メンバーは非常に完成度の高いスライド資料を作ってくれました。発表の日、私たちのグループのシステムはバグ一つなく、完璧にスムーズに動きました。先生は微笑み、私たちに「A」評価をくれました。
教室を出た瞬間、4人で抱き合いました。それは最高に幸せな「A」評価であり、同時にパニックと友情を引き換えにして得た、骨身に染みる教訓でもありました。

嵐の後に得た3つの教訓
大学3年の時のあの戦いは、その後の私のエンジニアとしての考え方を決定づけました。
- テクノロジーは見栄を張るための道具ではない: 自分が「カッコよく」見えるからという理由だけで技術を選んではいけません。テクノロジーは、課題を最も最適な形で解決するために生まれてきたのです。
- 傾聴とシンプルさは常に勝つ: プログラミングの頂点は、複雑なものを大量に詰め込んでクラッシュさせることではありません。時には、部外者の現実的な視点や先人の経験こそが、黄金の鍵となるのです。
- 自分の現在地を知る: 嵐が来る前に頑丈なテントの張り方すら知らないのに、無理をして豪華な豪邸を建てようとしてはいけません。基礎がしっかりしてこそ、家は高く建つのです。

おわりに
今でも、バックエンド(Backend)の新しいタスクを受け取るたびに、私の頭の中に最初に浮かぶのはこの問いです。「どうすれば一番シンプルで、一番クリーンに、それでも完璧にこの課題を解決できるだろうか?」
複雑さの頂点は、時にシンプルさそのものです。そしてこの業界で成長していくためには、時に自分のエゴ(プライド)を下げることを学ばなければならないのです。