NAVER Boostcamp Web・Mobile 10期 — 修了振り返り
ベーシックからグループプロジェクトまで、てCS知識を体得し、AIエンジニアリングと設計の本質を悟りながら成長した7ヶ月間の軌跡
- #Naver Boostcamp
- #振り返り
コメント
入力したパスワードは秘密コメントの閲覧、修正、削除に使われます。
まだコメントがありません。
ベーシックからグループプロジェクトまで、てCS知識を体得し、AIエンジニアリングと設計の本質を悟りながら成長した7ヶ月間の軌跡
入力したパスワードは秘密コメントの閲覧、修正、削除に使われます。
まだコメントがありません。
7ヶ月という時間が本当にあっという間に過ぎ去りました。開始当初に抱いていた「脱落せずに最後まで完走できるだろうか」という不安が嘘のように、今、最後のピリオドを打つ場所に立っています。
無我夢中で駆け抜けてきたために見逃してしまった瞬間を再び捉え、ベーシックからチャレンジ、メンバーシップ、そしてグループプロジェクトまで、この長い旅路を落ち着いて振り返ってみたいと思います。
ブートキャンプの前も後も、正直なところAIへの依存度自体はそれほど変わっていません。しかし、その中身を見てみると、明らかな質的変化が存在します。
以前は「これどうやるの?」と投げて出てきたコードをコピペしていましたが、今は用途に合わせて選んで使います。各ツールの強みを把握し、目的に応じて組み合わせる形です。どのような単位で質問を分けるべきか、どのようなプロンプトを使えば望む方向に近づけるか、その感覚が少しずつ積み重なっています。
一度、Three.jsのキャラクター実装中にAIの言葉を信じて丸一日を無駄にしたことがあります。実際には存在しない方法だったのに、自信満々に答えてくれたのです。結局、公式ドキュメントやコミュニティで別の方法を探して、ようやく完成させました。
逆に、基礎知識がある時は違いました。Framer Motionを使う時、アニメーションの原理をある程度知っているので、詳細な命令を下すことができ、結果もはるかに良くなりました。AIがすべてをこなす時代に自分の役割は何かと悩みましたが、結局、誰が命令するかによって結果は千差万別でした。AIをうまく活用するためには、結局自分の知識がしっかりしていなければならないという結論に至りました。
基礎がしっかりしているほど、AIをエンジニアリングする効率が極大化される。
非専攻者として抱いていた最大の渇望はCS(コンピュータサイエンス)でした。以前は「なぜこれを知る必要があるのか?」という疑問ばかりでしたが、ブートキャンプを経て、これらの知識が実際にどこで使われるのかを身をもって体験することになりました。
ネットワークの原理を知っているからこそデータ通信の最適化を悩み、コンピュータ構造を理解しているからこそ、なぜ効率的なコードが必要なのか納得できました。シェルスクリプト、仮想メモリ、ネットワーク7階層といった概念が、実際のプロジェクトにどのように溶け込むかを直接経験しました。
この変化を最も強く実感したのは、大学のCS理論の試験を受けた時でした。チームプロジェクトのためにほとんど勉強できずに臨んだのですが、試験問題の大部分がブートキャンプですでに熾烈に悩んだ内容でした。知識が「体得」されるとはどういうことか、その日初めて心から感じることができました。
ベーシックとチャレンジで記憶に残っている経験は、Vanilla JSで状態管理を直接実装したことでした。ライブラリなしでクラスを継承し、イベントを処理しながらコンポーネントを構成する過程は、想像以上に困難でした。
そうするうちに、自然と一つの疑問が生じました。「フロントエンドではなぜクラスの代わりに関数型を目指すのか?」その悩みの結果をReactで関数型プログラミングを目指す理由という記事にまとめたりもしました。
ゼロから直接実装してみなければ、Reactが提供する宣言的UIの快適さをこれほど深く理解することはできなかったでしょう。
コードレビューのセッションで他の方のPRを見ながら、設計とは何かを初めて真剣に考えました。
私はAIと対話してフォルダ構造を作り出したのに対し、その方は「なぜこのようにしたのか」という思考の過程を段階別に細かく残していました。結果ではなく過程を記録することが設計能力なのだと、その時初めて知った気がします。
コーヒーチャットで聞いた言葉も長く心に残っています。「フロントエンド設計の核心はコンポーネントをいかに細かく分けるかではなく、ビジネスロジックとUIをいかにうまく分離するかだ」ということです。私が執着していたコンポーネントのディテールよりも、この原則をもっと早く知っていれば、時間をより有意義に使えたのではないかという心残りがあります。
これらの悩みを経て、新しい技術を取り入れる際に自然と慎重になりました。むやみに流行のスピンを貼る代わりに、ADR(Architecture Decision Record)の作成を習慣化しました。「この技術が私たちのサービスのどのような問題を実際に解決してくれるのか?」を自問し、記録に残す方法です。
いきなり画面から作り始め、後でDBを直すのに苦労した過去を過ぎ、今ではデータフローとDB設計を先に描いてから始められる人間になりました。
チャレンジとメンバーシップの後半は、個人的にも大きな痛みがあり、感情的にもひどく消耗した時間でした。今日はもう寝てしまおうかと思った日が何度もありましたが、そのたびに私を引き止めてくれたのは、共に最後まで行くべき仲間たちでした。
次第に情熱が冷めてきていると感じていましたが、Slackチャンネルやマスタークラスで毎回さらに探求し意見を交わす仲間たちを見て、自分でも気づかないうちにエネルギーをもらいました。チームメイトとチームメイトの能力を信じたからこそ、プロジェクトを成功裏に終えることができたのだと思います。
ウェブアクセシビリティの発表の際、インタラクティブなPPTサイトを自作して共有したところ、「ディテールとUXが並外れている」という言葉をいただきました。デザイン専攻者としての感覚が、開発者として独歩的な武器になり得るという確信が持てた瞬間でした。
コーヒーチャットを通じても、自分がどのような環境で働きたいのかがより明確になりました。各自がやるべきことだけをやる場所ではなく、お互いにコミュニケーションをとりシナジーが生まれるチームで共に成長したいということ。7ヶ月間、夜を徹して情熱的な仲間たちに出会った経験が大きなインパクトとして残り、会社に行ってもそのような仲間たちと働きたいという熱望が強まりました。
なかなか直せない高次的な問題は、体力管理でした。いつ寝ているのかもわからないほど走り続け、どのレベルで止まるべきか基準を定められず、毎回体を酷使しました。
非専攻者として人より知っていることが少ない、追いつくためにはもっと努力しなければならないという事実が常に心の片隅を圧迫し、その間隔を時間で埋めようとしていた気がします。
持続可能な開発者になるためには、自分を燃やして結果を作る方式から抜け出さなければならないこともわかっています。早い開発が要求される状況であれば、どこでどれだけ妥協するか、その基準を自分で定める練習が、次のステージで真っ先に解くべき宿題です。
7ヶ月前の私は「あんなのはどうやって勉強するんだろう?」と、スキルの高い人たちを遠くから眺めるだけの人でした。今はその人たちが勉強する方法を学び、私もまたその道を歩んでいます。
心残りがないわけではありません。仲間たちが「今回のスプリントで何を得たいか」と尋ねた時、うまく答えられませんでした。学ぶことがすべて新しくて、何が重要か考える余裕がありませんでした。それでも、その質問が今の私には鮮明に見えます。それだけでも十分に成長したのだと思います。
活動期間は終わりましたが、やるべきことが鮮明に見えるという点で、むしろ今が本当の始まりのような気がします。ブートキャンプを経て、設計する方法、AIを活用する方法、今後何を勉強すべきかなどの方向性が定まりました。
当面は約1ヶ月半のプロジェクトが待っています。同時に、今回はコードよりも自分自身をまず把握する時間を設けてみようと思います。コーヒーチャットで聞いた「履歴書を書く前に自分自身をまず知らなければならない」という言葉がずっと頭に残っています。
大学の勉強と並行して情報処理技術者試験の準備もし、自分のインタラクションとUXの感覚を完全に込めたポートフォリオサイトも自作してみたいです。やるべきことが多いですが、細かく分けて一つずつ終わらせていけば、ある瞬間すべて完了していると信じています。
もしこの記事を見ることになるキャンパーの方がいたら、ブートキャンプが終わってもずっと近況を分かち合いながら、各自の場所で共に成長していければ嬉しいです。
ブーストキャンプ ウェブ・モバイル 10期を共にしたすべてのキャンパーの皆さん、本当にお疲れ様でした!