1. はじめに 転職活動の中で、配属当初の絶望を思い出した話
1.1. 転職活動で自身の経験を思い出す
はじめまして。SE歴約3年のコムギです。
主に、Java / Spring Boot を使ったWebアプリケーションの保守・運用・開発に携わっています。
この度、自身のキャリアを見直し、転職することになりました。
転職活動をする中で、過去の経験を思い出していると、色々と懐かしい思い出がよみがえってきます。
-
「研修でJavaやったんなら大丈夫!」と言われて、意気揚々と入った最初のプロジェクト、ソースコードがまったく読めずに撃沈。
-
「わからないことがあれば聞いて」と言われるが、そもそもわからないことを言語化できずに一人で抱え込んでしまう。
-
チームメンバーの会話に使われる用語がわからず、「ここは異国か?」という感覚になる。
などなど…。
現場に配属されて最初に担当したのは、Spring Bootを使った新規画面の開発でした。
CRUD機能(登録・検索・更新・削除)付きの画面を2画面、自分一人で担当することになりました。
「新規画面2画面くらい、すぐできそう」と思われるかもしれません。
でも当時の私には、どこから手をつければいいかすらわかりませんでした。
1.2. 研修と現場のギャップ
新人研修では、インフラからアプリまで、様々な用語や基礎的な考え方を学び、特にアプリの研修では、Javaの基礎を学びました。
変数・条件分岐・繰り返し・クラスの使い方。 最後には総合研修という形で、チームで一つの簡単なシステムを製造しました。
当時は開発経験がほとんどなかったので苦労しましたが、「これが書ければ現場でも多少は通用する」と思っていました。
現場に配属されたとき、最初にやったことはプロジェクトのクローンでした。 エディタで開いた瞬間、ファイルの多さに固まりました。
研修で触っていたのは、多くても数ファイル。
でも現場のプロジェクトには、似たような名前のクラスが何十個も並んでいました。
「Controller」「Service」「Repository」「DTO」「Entity」。どれが何をするのか、何もわかりませんでした。
研修で学んだJavaは、現場ではほとんど役に立ちませんでした。
正確に言うと、「Javaの文法はわかる。でも、このコードが何をしているのかわからない。」という状態でした。
1.3. 「聞いていいよ」と言われても、何を聞けばいいかわからなかった
周りには恵まれており、「わからないことがあれば聞いて」と言ってもらえましたが、自分が何をわかっていないのかすら、うまく言葉にできませんでした。
今思えば、「何がわからないかがわからない」 という状態だったんだと思います。
聞いたとしても、そもそも知識のギャップがあり、「わかったようなわからないような…。」という曖昧な理解になってしまいました。
当時の自分には、質問をするための前提知識が足りていなかったのです。
1.4. 具体的に何につまづいていたか
現場配属当初、私がつまづいていたことの一部を紹介します。
① Controller → Service → Repository の流れがわからなかった
研修で学んだJavaよりも、明らかにクラスの数が多い。
「MVCアーキテクチャを使っているよ」と記事を渡してもらいましたが、Spring Bootのどのクラスが、MVCのどれに対応しているのかがわかりませんでした。
先輩への聞き方もわからず、一人で抱え込んでいました。
② RESTの仕組みがわからなかった
「GetMappingとPostMappingって何?」「URLのパスにはどんなルールがあるの?」
そういった基礎知識がないまま開発を始めたので、新規画面を作ったときはURLのパスが一致しておらず、画面を表示するだけでバグ探しに時間を溶かしました。
③ UIとAPIでフォルダが分かれていて、どのファイルを触ればいいかわからなかった
プロジェクトを開くと、UI側にもController → Service → Repositoryがあり、API側にもController → Service → Repositoryがありました。
なぜ二重に存在しているのか意味がわからず、どのファイルを修正すればいいのか迷子になっていました。
新規画面を作るときも、UI側から作るべきなのか、API側から作るべきなのか、まったくわかりませんでした。
④ デバッグして勉強しようとしたが、デバッグ自体ができなかった
①の流れを理解していなかったので、ブレークポイントをどこに貼ればいいかわかりませんでした。適当に貼ってみたら処理があちこち飛んで、余計に混乱しました。
「デバッグで勉強する」どころか、デバッグ自体が謎でした。
今は「これがわからなかった」と言語化することができるのですが、当時は「@Controllerって書いてあるけどなんだろう…。」「APIってよく聞くけど結局何なんだろう…。」というような、漠然とした疑問が点在し、点と点がつながっていない感覚でした。
検索することで言葉や概念は調べられても、「だから何?」「結局どういうこと?」と感じてしまいました。
2. このnoteを書こうと思った理由/今後の投稿について
今後の投稿は、「過去の自分がどう教えてほしかったかを思い出しながら、あの頃の自分に向けて説明する」つもりで書いていきます。
現場に出て、コードを見て、何もわからなくて。
先輩は「わからないことがあったら聞いてね!」と言ってくれたけど、何を聞けばいいかもわからなくて。
そんな時期が、私にもありました。
当時の自分に足りなかったのは、全体像でした。
細かい部分を調べる前に、「そもそもどういう仕組みで動いているのか」を知っていたら、もっと早く理解できたと思っています。
そのために、まず 「全体像が見えると、質問も自然に鋭くなる」 ところを軸にします。
いきなり手を動かしても、前提となるつながりが掴めていないと「何が分からないか」自体が言語化できない——そんな壁に、配属直後の自分の実感を重ねながら向き合います。
たとえば、「Spring Bootって何?」が出発点だったところから、「なぜDIを使うの?」「この処理はなぜControllerに書くの?」というように、理解が深まるにつれて質問が一段ずつ変わっていく流れを、読み物として整理して紹介します。
また、私自身、まだまだ経験が浅いエンジニアです。
完璧な答えをお伝えできるわけではありません。
でも、「あの時これを知っていたら、もう少し楽だったな」と思うことを、少しずつ書き残していきます。
ご縁があって、もし同じように悩んでいる若手エンジニアの方に届けば幸いです。
3. 投稿したい記事(検討中)
「Webアプリケーションってどう動くの?」全体像から理解する
「Spring Bootって結局何?」フレームワークが必要な理由
「Spring Bootは誰が何を担当している?」クラスの役割を整理する
「ボタンを押すと何が起きる?」リクエストからレスポンスまで
「REST APIって結局何?」URLだけでデータを操作できる理由
「なぜUIとAPIを分ける?」二重に見えるフォルダ構成の正体
「HTMLは誰が作っている?」画面が表示される仕組み
「@って何者?」Spring Bootのアノテーションを理解する
4. おわりに このnoteを読んでほしい人
4.1. このnoteはこんな人に向けて書いています
Java / Spring Boot を使った現場に配属されたばかりの人
-
コードは書けるけど、全体の流れがよくわからない人
-
先輩に聞きたいけど、何を聞けばいいかわからない人
-
「研修と現場、全然違う……」と感じている人
特にJava / Spring Bootを使って開発している方には、より具体的に刺さる内容になると思います。
ただ、フレームワークが違っても「全体像を先に理解する」という考え方は共通して役立つはずです。
4.2. こんな人にも見ていただけると幸いです
-
Spring Bootの全体像はすでに理解しているけど、新人への説明で困っている人
-
エンジニアではないけど、ITに興味がある人
ITに詳しくない人でもわかるような記事を心がけますので、新人教育で奮闘しているベテランエンジニアの方や、非エンジニアの方も見ていただけると嬉しいです。
「もっとこんな表現ならわかりやすいのに」「専門用語が多くてわかりにくい」などのご指摘もあれば、教えていただけると幸いです。
最後まで読んでいただき、ありがとうございました!