成長する方法を探しているジュニア開発者なら?
効果的なレベルアップのためのすっごい誤解ノート!
開発「よく」したいジュニア開発者は
どんなことを勉強すればいいですか?
もしこのような悩みをお持ちですか?
「今何を勉強するべきですか?どんなスタックを学ぶと役に立ちますか?」
「インフラ側を掘り下げればいいのか? Spring Securityを学びましょうか?」
ランダムな技術スタックを学ぶと「開発実力」が増えません!
あなたが技術や特定の概念を無作為に本を買って勉強しないようにお手伝いします。インフラストラクチャ(NoSQL、Message Queue...)やSpring securityなどの技術スタックを勉強することが、あなたの開発能力の向上につながるわけではありません!実践でき、必要な内容だけをすっぽり拾って短い時間内に説明した講義です。
だから、このような内容を学びます。
長年のコードレビューをしながら経験した、ジュニア開発者の方々が多くする開発ミスを訂正していきます!
依存性注入と依存性逆転の違いを説明できますか?機械的に覚えたあいまいな概念を正します。
テストコードがなぜ必要なのか、なぜテストコードを書くのが良い設計につながるのか教えてください。
会議の内容を追い出すのは難しいですか?実務に必要な概念を整理します! (MSA、ACLなど...)
ジュニアの皆さんの悩み
解決します。
あなたは依存性の逆転が何であるかを知っていますか?
...上位階層(ポリシー決定)が下位階層(詳細)に依存する伝統的な依存関係を反転(逆転)することにより、上位階層を下位階層の実装から独立させることができる。 (ウィキペディア「 依存関係逆転原則」中)
それで、これはどういう意味ですか? 🙄一つも触れない百科事典式問答解説は答えではありません!
正確な概念を自分の言語で解いて説明できるように知っておく必要があります。
これまでメンターの立場になって本当にたくさんのジュニア開発者の方々に会ってみましたようです。そして、この方々のメンターになり、毎回同じ質問に同じ回答を差し上げ、このような内容を専門的に扱う講義が一つほどあれば良いと思うようになりました。この講義は、ジュニア開発者の方々のメンターになっていた共通の質問・回答を集めた講義です。
私が見てきたジュニア開発者の方々の状況はほとんど以下の通りでした。
- コンピュータ工学の知識もある程度知っていました。
- Springをある程度扱うことを知っていました。
- JPAを扱うことをご存知でした。
- 『クリーンコード』も読んでみました。
ところで、この次のステップが何になるべきかわからないんですよ。 🤷♂️それでも残りの時間... 何でも勉強しなければならないので、会社で使うインフラ技術スタックであるNoSQL、Message Queue、RDBを勉強したり、最近トレンドという新しい言語を勉強します。もちろん私もそうでした!
こんな方なら
特に役に立ちます。
- コンピュータ工学だけを勉強して入社して、実務で使う開発用語をすばやく学習しなければならない方。
- ネットワーク/インフラ
- 運用用語/開発用語
- CI/CD / クーバーネティス
- NoSQL/MySQL
- 知らない実務用語が多くて会議内容を追いかけていない方
- デザインの勉強をしようとデザインパターンを無作為に覚えようとした方
😂私たち全員このような考えをしませんか? - TDD/DDD理論がとても素敵なのは分かりますが、一体実務にどのように適用するのか理解できない方
- コードレビューを受けていない、または会社内の私の成長を助ける指導者またはシューティングゲームがない場合
- 春の概念を機械的に覚えている人だけ
- スプリングアノテーションの意味について心配したことがある方
- Springにオブジェクト指向のコードを適用したい人
ジュニア開発者に必要なヒントを教えてください。
あいまいな概念を確実に
はっきり知っていますが、説明が難しい概念はありますか?依存性の逆転とは何ですか? Entityとは何ですか?サービスとは何ですか?シーケンシャル指向プログラミングとプロシージャ指向プログラミングは何がどう違いますか?知っていますが、正しく説明できない概念をしっかりつかみます。
実務に近い知識伝達
GNOMEのTDD、DDD...学習するのはとても良いです。とても素敵な理論なのは分かりますが、代替これを実務にどのように適用するのでしょうか?具体的には、スプリングフレームワークにどのようにTDD、DDDを適用するのですか?
TDD関連の本もたくさん探して関連セミナー映像もたくさん探してみますが、ちょうど入門者の好みに合うほど簡単な例だけを扱っています。実際にはどのように適用すればいいのかお知らせします。
暗記ではなく理解
デザインに興味のあるあなた、もしデザインの勉強をしてみようとデザインパターンを無作為に暗記しようとしませんでしたか?だからふとこんな気がします。例として出てきたコード... これは実際に実務で適用できるのか?
でも知ってみると、デザインパターンで重要なのはパターンがどのように見えるかではありません!依存関係を特定し、どのように依存関係を弱くするかが重要です!
学習が終われば、こんなに変わることができます!
- 今後の成長に必要な内容がどんな内容なのかがわかります。
- 既存の内容を知っていた内容なら、知っている内容をもう少し実務に近づけてまとめて覚えることができるようになるでしょう。
- 同社は、シニア開発者が会議の時間に何をすべきかをすばやく理解できるようになります。
- オブジェクト指向のコードが何であるかは少し感覚です。
- テストコードがなぜ必要なのか、どのように適用されるのかを知ります。
- 開発書籍3~4冊ほど読んだ満腹感を得ることができるでしょう。
オフライン受講生のレビュー💬
講義を聞いてから思わず書いた用語、聞いたが明確に定義できなかった言語に対する定義と語源、意味まで理解できるようになりました。このような内容を知らなくても開発に問題はないかもしれませんが、オブジェクトの行動と役割に悩み、各レイヤーの意味を悩み、よりOOPにコーディングしようとする姿勢を作ってくれました。直接悩んだ内容をジュニアの目の高さで、わかりやすく説明してくださったので、もっと触れて楽に聞くことができました。私がそうしたように、今入社したばかりのジュニアバックエンド開発者であれば、何を知らないのか、どこまで知るべきかさえ知らず、ヘメイすることが多いと思います。このような状況でどんな内容をもっと勉強しなければならないのか、私が知らなかった部分が何だったのかが分かり、アシスタントになってくれた講義でした。 (イ*ギュ)
普段深く考えていなかった部分まで教えてくれる良い講義のようです。ジュニア開発者として最近会社でしながらいつも同じことだけしながら成長しているのが正しいという悩みをしていたのですが、講義を聞いて方向性について知ることができました。 (シン・ホ)
最初に会社に入社したら、どのように開発すれば良いのか、どうすれば開発する際のミスを減らせるのかといった悩みを多くすることになります。この講義は、このような悩みを解決してくれ、ジュニア開発者が正しく開発ができるように方向をよく取ってくれる良い講義だと思います。業務的な知識以外にも「オブジェクト指向的にアーキテクチャを設計するにはどのようにすればいいのか?」、「DTO、VO、Entityは実務ではどのように区別して使うのか?」、「テストコードを本当に作成しなければならないのか?」などジュニア開発者が開発しながら難しくなりました。また、実務でよく使われる用語も学ぶことができ、実際の業務適応に役立つと思います。実務に慣れていないジュニア開発者や成長のためのすべての開発者におすすめの講義です。 (イ・チャン)
開発者として、現業で使用するオブジェクト指向の重要な概念を習得するのに多くの助けになりました。難しい概念も図式化が良くなっていて簡単に理解でき、むしろ簡単に説明してくれて一度聞いた後、概念が長く記憶に残りました。 (芯・鉄)
徹底的に低年次視線から
気になる内容をお詫び申し上げます。
予備受講生の皆さんは、シーケンシャル指向プログラミングとプロシージャ指向プログラミングの違いをご存知ですか?気になる場合は、無料で公開されたオリエンテーション映像を見て、どのような内容を学習するかを見てみましょう。
概念が何であるかを正確に理解すると、目に見えるものがはるかに多くなります!徹底的に低年次視線で不思議な内容を探しています。
ジュニア開発者が多くする開発ミス校正
最初の会社に入社したときに多くのコンベンションミスからオブジェクトが何であり、オブジェクト指向的にコードを織るためにはどんなことを気にする必要があるのかを学びます。そして、良いデザインを理解するために依存関係が何であるかを学びます。
スプリングをOOPで使用する
スプリングをOOPで使用する方法を学ぶために、逆にOOPで使用できなかったケースを見てください。そしてサービスとは本質的に何であり、各レイヤーをどこまで抽象化すべきかを調べましょう。
テストはなぜしなければならないのか?
テストコードが必要だと言われていますが、いざテストコードの作成がなぜ良い設計につながるのかがわからないと思いますか?テストはなぜ必要なのか、もう少し実践的な観点から説明します。そして、どうすれば自然なテストができるのかをお知らせします。
実務に必要な概念の整理
スプリングだけ知って実務をするには周辺に編まれたインフラ知識が多すぎます。会議の時間にネットワーク、インフラストラクチャの話だけが出てくると、何を言うのか探して忙しいか愚かな方が多いです。だからといって、インフラやネットワークの勉強をするために専攻書籍を再び広げるべきでしょうか?ちょうど実務に必要なレベルに要約します!
BONUS
学習資料を提供します!
授業別約15~20枚からなるPPT約20個を学習資料として提供します。また、別の練習環境を必要としません!出退勤路地下鉄でわずか20分だけ投資して勉強できるよう講義を構成しました。
開発者として成長する
助けてほしい!
こんにちは、キム・ウグンです! 👋
現在カカオで働いていて、作るのが好きなので、退勤後も常に何かを開発しています。 「巨人の肩の上に立った小人」という言葉があります。私もやはり小さな小人だけですが、上がった巨人の成長に役立つように知識の対峙に努めています。多くのジュニア開発者を指導した経験があり、あなたの成長を助けることができます。
- ✅ Github / Blog
- ✅県カカオバックエンドエンジニア
- ✅公開SW開発者大会2020一般部門金賞:情報通信産業振興院長賞受賞
Q&A 💬
Q. 非専攻者も聞ける講義ですか?
講義は基本的なコンピュータ工学の知識を知っていることを前提としています。ただし、専攻知識を知っていなければならない区間が非常に短いため、選手知識で求められるJava、Spring、JPAを知っており、以下の内容を既に知っている状態であれば十分に受講できます。
- Hash、Listが何であるかを知っている。
- 非対称鍵暗号化方式がpublic key、private keyから成り、public keyは公開されても構わないという事実を知っている。
Q. 詳細な概念説明は地揚だというが、では何を教えてくれるというのでしょうか?
概念の説明は、できるだけ3行の要約で終わることができるようにします。もちろん、MSAやOAuthなどの複雑な内容は、進行の流れがどのようになるかを説明します。代わりにOAuthの誕生と背景、OAuth 1.0、2.0 こんな詳細は取り上げないという意味です!とにかく実務では2.0を使うからです。そして実務者の立場ではトークンがとにかくsignatureがどうしてこういうよりはAPI通信でどんなデータをやりとりするのかがもっと気になりますからね。
さらに質問するには、曖昧なマイナーな用語も説明し、進む必要があります。例えば、私のような場合、初めて入社した当時CSという用語を知らず、会議の内容を追いかけて困った経験があります。ところでCSをGoogleで検索すると?何か一つ一緒に触れる意味ではありません。実は고객 문의だけなんですけどね!
Q. 概念説明をしてくれる映像やブログ投稿が多いのになぜこの講義を聞かなければなりませんか?
はい、そうです。実際、YouTubeやブログに良い文章や映像がすでにあまりにも多いです。しかし、ジュニアの皆さんは何を知らないのか分からない状態の方がはるかに多いです。バックエンド開発者として就職したのですが、インフラ/ネットワーク用語が出てくるたびにバンチシの方におられます。それでは、インフラを勉強する必要がありますか?とどんな内容なのかひとつも分からない、専門家向けの厚い本を一つ買って、理解もできないままクビの読みです。あまりにも効率的ではありませんか?
この講義は、急速な成長を助けるスターターパックのような講義と見なすことができます。加えて、ブログ記事をより見ると、大学生レベルでティーストーリーに勉強した内容を記録することが多く、誤った概念が書かれている場合がかなり多いです。たとえば、一部のブログ投稿では、DTOがDAOを使用してDBに保存するために使用されるオブジェクトであることを知らせる記事もありました。
Q. この講義だけの差別化された点は何ですか?
ほとんどのレッスンが設計についての内容は扱っていないようです。この講義では、良いデザインが何なのかについて、講演者次第の定義を説明しています。
設計に関連する講義が多くないのは、知識共有者の方々がみんなにぎこちないからだと思います。ご存知のように、良い設計には答えが決まっていません。ところで講義を制作する人の立場では正確な知識を客観的に伝えなければならないので、答えが決まっていない主題を本能的に避けることになるのです。それで、デザインに関連する講演は、せいぜいSOLIDが何なのか、デザインパターンがどのように見えたのか一つ一つ振り返るレベルなのです。自分なりに定義した良い設計が何なのかを説明しますので、コメントを一度聞いていってください。
Q. 良いデザインが何であるかを定義できない場合、知識共有者はどのように良いデザインを講義できるのでしょうか。
はい、良いデザインの定義を下すことができないので、講義で私が定義する良いデザインは私の個人的な定義です。しかし、事実、すべての非文学の書籍や講義は、他人の意見を聞いて、論理的に共感されれば受け入れる過程だけだと思います。それでも可能であれば、できるだけ客観的に解放しようと努力したので納得になれば収容し、そうでなければ本人だけの良い設計を新たに定義してみるのも良いようです。
- 概念の詳細な説明はありません。たとえば、クーバーネティスの内容を説明するとき、オブジェクトやコントローラのいずれかについての説明はしません。 「クーバーネティスは概略的にこのように戻ってきているので、皆さんが大切に学習しなければならない内容はこんな内容です。」程度で説明します。
- さらに、いくつかの概念を圧縮して説明する予定であるため、圧縮損失が発生する可能性があります。
- ディテールで的確な説明ではなく、少しは歪んでも理解できる説明を中心にしていく予定です! 😭
- このレッスンでは、プログラミング言語やスプリングを扱う方法などについては説明しません。そして、受講者がJava、Spring、JPAに関する基本的な知識があることを前提としています。
- PPTの一部をキャプチャして勉強した内容をブログに投稿することは許可されていますが、資料全体を個人のブログに共有することはできません。ご了承ください!