강의

멘토링

커뮤니티

BEST
Programming

/

Back-end

Java/Spring Junior Developer's Mistake Notes

Now that you know a little about Spring and JPA, what should you study and how to grow in the future? Are you studying design patterns to study design and just memorizing the patterns? I'll help you!

(4.9) 80 reviews

1,222 learners

  • kok202
자바
스프링
객체지향
백엔드개발자
java
Java
Spring
oop
Software Test
kakao-tech

Reviews from Early Learners

What you will gain after the course

  • Correcting Mistakes Frequently Made by Junior Developers

  • Correcting common mistakes junior developers make when using Spring

  • Correcting misconceptions about dependencies/entities, etc.

  • Concept organization required for practical use (MSA, ACL, etc.)

  • Infrastructure/Network Concepts Needed by Backend Developers

  • How to write object-oriented code in a Spring environment (TDA, etc.)

Are you a junior developer looking for ways to grow?
A notebook of mistakes for effective leveling up!

Junior developers who want to be good at development
What should I study?

Have you ever had these concerns?

"What should I study now? What stack will help me learn?"
"Should I delve into infrastructure? Should I learn Spring Security?"

Just learning the technology stack won't improve your "development skills"!

I'll help you avoid blindly buying books and studying just any technology or specific concept. Studying technology stacks like infrastructure (NoSQL, Message Queue, etc.) or Spring Security won't necessarily improve your development skills! This course focuses on practical, essential content, concisely explaining it in a short amount of time.

So, you learn things like this.

I'll help you correct common development mistakes made by junior developers, based on my experience reviewing code for many years!

Could you explain the difference between dependency injection and dependency inversion? Let me clear up some vague concepts I've memorized by rote.

I'll tell you why you need test code and why writing test code leads to good design.

Are you having trouble keeping up with the meeting? Let me summarize the concepts you need for practical work (MSA, ACL, etc.)


Juniors' worries
I'll solve it for you.

Do you know what dependency inversion is?

...by inverting the traditional dependency relationship whereby higher layers (policy decisions) depend on lower layers (details), the higher layers can become independent of the implementation of lower layers. (From Wikipedia, " Dependency Inversion Principle ")

So, what does this mean? 🙄 An encyclopedic question-and-answer explanation that doesn't make any sense is not the answer!
You need to know the exact concept so that you can explain it in your own words.

Over the years, I've met countless junior developers as mentors. And as I mentored them, I've often given them the same questions and answers. This led me to think it would be nice to have a dedicated course dedicated to this topic. This course is a compilation of common questions and answers I've received from junior developers as mentors .

The situation of most junior developers I've seen was like this.

  • You also have some knowledge of computer engineering.
  • You seem to have some knowledge of Spring.
  • You know how to handle JPA.
  • You've also read "Clean Code".

But I don't know what the next step should be. 🤷‍♂️ Still, with my spare time... I need to learn something, so I study NoSQL, Message Queue, and RDB, which are the infrastructure technology stacks used by companies, or learn new languages that are trending these days. Of course, I did the same!


If you are like this
It will be especially helpful.

  • Someone who only studied computer engineering and joined the company, and needs to quickly learn development terminology used in the field .
    • Network / Infrastructure
    • Operational Terms / Development Terms
    • CI/CD / Kubernetes
    • NoSQL / MySQL
  • People who can't keep up with the meeting content because there are a lot of unfamiliar practical terms
  • Anyone who tried to memorize design patterns in order to study design
😂 Don't we all think this way?
  • I know the TDD/DDD theory is really cool, but I don't understand how to apply it in practice.
  • Those who are not receiving code reviews or do not have a mentor or mentor to help them grow within the company
  • Those who have only memorized Spring concepts mechanically
  • Have you ever wondered about the meaning of Spring annotations?
  • Anyone who wants to apply object-oriented code to Spring

Here are some essential tips for junior developers .

Making vague concepts clear

Are there concepts you know but struggle to explain? What is dependency inversion? What is an entity? What is a service? What's the difference between sequential and procedural programming? We'll help you understand these concepts, but explain them clearly.

Transfer of knowledge close to practice

Those damn TDD, DDD... they're great when you're learning them. I know they're fantastic theories, but how do you apply them in practice? More specifically, how do you apply TDD and DDD to the Spring Framework?

I've read many books and watched numerous seminars on TDD, but they mostly cover simple examples that are perfect for beginners. I'll show you how to apply it in practice .

Understanding, not memorization

If you're interested in design, have you ever tried to memorize design patterns in the hopes of learning more about them? Then, a thought suddenly arises: Are these example codes actually applicable in practice?

But as it turns out, what matters in design patterns isn't what the pattern looks like! It's understanding the dependencies and how you're weakening them !

After you finish learning, you can change like this!

  • You will learn what you need to grow in the future .
  • If you already know the content, you will be able to remember it by organizing it into something more practical .
  • You will be able to quickly understand what senior developers at your company are saying during meetings.
  • I have a little bit of an idea of what object-oriented code is.
  • You will learn why test code is needed and how to apply it.
  • You will be able to get the same satisfaction as reading 3-4 development books.
Reviews from offline students 💬

After attending the lecture, I was able to understand the definitions, etymologies, and meanings of terms I'd casually used and terms I'd heard but couldn't quite pinpoint. While this knowledge might not be a problem for development, it did encourage me to think about the behavior and roles of objects and the meaning of each layer, cultivating a more OOP-like approach to coding. The lecture explained the concepts I'd personally considered, from a junior perspective, in an easy-to-understand manner, making it more engaging and comfortable to listen to. Like me, I imagine many new junior backend developers often feel lost, unsure of what they don't know or how much they need to know. This lecture provided valuable guidance, helping me understand what I needed to learn and what I was missing. (Lee*Gyu)

This lecture is a great resource, covering areas I'd never really considered. As a junior developer, I've been wondering if I'm growing properly by doing the same thing over and over again at work. This lecture helped me gain a sense of direction. (Shin*ho)

When you first join a company, you often worry about how to develop properly and how to minimize mistakes. This course addresses these concerns and provides excellent guidance for junior developers to develop correctly. Beyond practical knowledge, it also covers topics junior developers have likely encountered and wondered about at least once, such as, "How should I design an object-oriented architecture?", "How should I distinguish between DTOs, VOs, and Entities in practice?", and "Do I really need to write test code?" You'll also learn frequently used terminology, which I believe will be invaluable for adapting to real-world work. I highly recommend this course to both junior developers new to the field and those looking to grow. (Lee Chan)

As a developer, this course was incredibly helpful in helping me master the core concepts of object-oriented programming used in my field. Even difficult concepts were well-illustrated, making them easy to understand. Furthermore, the simple explanations helped me remember the concepts for a long time after just one listen. (Sim*Cheol)


From a thorough perspective of the younger generation
We will answer any questions you may have.

Prospective students, do you know the difference between sequential and procedural programming? If you're curious, watch the free orientation video to find out what you'll learn.

Once you understand the concept clearly, you'll see much more! We'll thoroughly address questions you might have from a junior perspective .

Correcting common development mistakes made by junior developers

We'll cover common convention mistakes made when joining your first company, what objects are, and what you need to keep in mind when writing object-oriented code. And to understand good design, we'll explore dependencies.

Using Spring in an OOP way

To learn how to use Spring in an OOP-like manner, let's examine a case where it fails to do so. We'll also explore what a service is essentially and how far each layer should be abstracted.

Why do we need to test?

People say you need test code, but you're not sure why writing test code leads to good design? Let me explain why testing is necessary from a more practical perspective. And I'll show you how to create natural-looking tests.

Organizing concepts needed for practical use

There's too much infrastructure knowledge surrounding Spring to get the job done right. When networking or infrastructure comes up in meetings, many people either struggle to understand the topic or just sit there blankly. Does that mean you need to open a textbook just to learn about infrastructure or networking? I'll summarize it for you, just to the level you need for practical work!

BONUS

We provide learning materials!

We provide approximately 20 PPTs, each containing approximately 15-20 pages, as learning materials for each class . Furthermore, no separate practice environment is required! The lectures are designed so you can study in just 20 minutes on the subway during your commute.


Growing as a developer
I'd like to help!

Hello, I'm Kim Woo-geun ! 👋

I currently work at Kakao, and because I love creating, I'm always working on something after work. There's a saying, "A dwarf standing on the shoulders of giants." While I'm just a small dwarf, I strive to pass on my knowledge so I can help the giants grow. Having mentored numerous junior developers, I believe I can help you grow as well.

  • Github / Blog
  • ✅ Current Kakao Backend Engineer
  • ✅ Gold Prize in the General Category of the 2020 Open SW Developer Competition: National IT Industry Promotion Agency Award

Q&A 💬

Q. Is this a course that non-majors can also take?

This course assumes a basic understanding of computer science. However, since the required specialized knowledge is limited, you can easily take the course if you already have a basic understanding of Java, Spring, and JPA (the prerequisites), as well as the content below.

  • I know what a Hash and List are.
  • We know that asymmetric key encryption consists of a public key and a private key, and that the public key can be made public.

Q. You say you avoid detailed explanations of concepts, so what exactly are you trying to tell us?

I'll try to keep the concept explanations to a three-line summary. Of course, I'll explain the flow of complex concepts like MSA and OAuth. However, I won't delve into the specifics of OAuth's origins, background, and 1.0 and 2.0, as we'll likely be using 2.0 in practice anyway. And from a practitioner's perspective, they're more interested in what data is exchanged via API communication than in tokens and signatures.

I'll try to explain even the most minor terms that are difficult to ask about. For example, when I first joined the company, I didn't know the term CS " and was frustrated because I couldn't keep up with the meeting content. But what if you Google "CS"? It's not a single, unrelated term. It's really just 고객 문의 !

Q. There are many videos and blog posts explaining the concepts, so why should I take this course?

Yes, that's right. In fact, there are already so many great articles and videos on YouTube and blogs. However, it's far more common for junior developers to simply not know what they don't know. Perhaps you've just landed a job as a backend developer and find yourself stumped every time infrastructure or networking terms come up. So, you think, "Should I study infrastructure?" You buy a thick, expert-level book, completely oblivious to the content, and pore over it without understanding it. Isn't that incredibly inefficient?

This course can be considered a starter pack to help you grow quickly. Furthermore, many blog posts contain college-level content written on Tistory, so there are many instances of misconceptions. For example, some blog posts even explain that DTOs are objects used to store data in a database using DAOs!

Q. What makes this course unique?

Most lectures don't seem to cover design. This lecture provides the lecturer's own definition of good design.

I believe the reason there aren't many design-related lectures is because knowledge-sharing professionals are hesitant. As you know, there's no set answer to good design. However, lecturers need to objectively convey accurate knowledge, so they instinctively avoid topics with no set answer. That's why design-related lectures often go so far as to revisit SOLID and design patterns step by step. I'll explain my own definition of good design, so please share your thoughts.

Q. If you can't define what good design is, how can you teach it?

Yes, since I can't define good design, the definition I give in this lecture is simply my own personal definition. However, I believe all non-fiction books and lectures are simply a process of listening to others' opinions and accepting them if they logically resonate with you. Still, I've tried to present this as objectively as possible, so if you find it convincing, please accept it. If not, I encourage you to redefine good design on your own.

📢 Please check before taking the class!

  • I don't provide detailed explanations of concepts. For example, when explaining Kubernetes, I don't explain each object or controller individually. I just explain, "This is how Kubernetes works in general, and these are the important things you need to learn."
  • Additionally, since I will be explaining several concepts in a compressed form, there may be compression loss .
  • Rather than providing detailed and accurate explanations, I will focus on explanations that are understandable even if they are slightly distorted! 😭
  • This course does not cover programming languages or Spring. It assumes that participants have a basic understanding of Java, Spring, and JPA.
  • While it's permissible to capture portions of the PPT and post them on your blog, sharing the entire material on a personal blog is prohibited. Thank you for your understanding!

Recommended for
these people

Who is this course right for?

  • People who can't keep up with meetings because they don't know many concepts

  • Anyone interested in design

  • Those who have joined the company but don't know how to develop

  • For those of you who are wondering why we do tests

  • A person who has memorized the characteristics of springs mechanically

  • For those of you wondering if I'm handling springs correctly

  • New hires

  • Developers who want to grow

Need to know before starting?

  • Anyone who can understand Java code

  • Spring Basics (For those who know what Controller/Service/Repository are)

  • Anyone who has used JPA for a while

Hello
This is

3,554

Learners

267

Reviews

47

Answers

4.9

Rating

2

Courses

  • (현) 카카오 백엔드 엔지니어
  • (수상) 🏆 공개 SW 개발자 대회 [2020 일반부문 / 금상_정보통신산업진흥원장상] 

 

현재 카카오에서 일하고 있고, 만드는 것을 좋아해서, 퇴근 후에도 항상 무언가를 개발하고 있습니다.

"거인의 어깨 위에 선 난쟁이"라는 말이 있습니다. 저 역시 한낱 작은 난쟁이일 뿐이지만, 올라탄 거인의 성장에 도움이 될 수 있도록 지식의 대물림을 위해 노력하고 있습니다. 다수의 주니어 개발자분들을 멘토링 한 경험이 있어서 여러분의 성장을 도와줄 수 있을 거예요. 

 

깃허브 > https://github.com/kok202
블로그 > https://kok202.tistory.com

Curriculum

All

25 lectures ∙ (4hr 8min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

80 reviews

4.9

80 reviews

  • dfghcvb11님의 프로필 이미지
    dfghcvb11

    Reviews 5

    Average Rating 5.0

    5

    52% enrolled

    개발 실력의 추월 차선과 같은 강의입니다. 베테랑은 똑같은 작업을 하더라도, 더 깊은 지식과 넓은 시야로 다른 결과물을 만들어 냅니다. 저는 이것이 연차의 무서운 점이라고 생각합니다. 이 강의는 오랜 연차로 쌓을 수 있는 지식과 테크닉들을 전수해줍니다. 강사분의 개발에 대한 집요한 집착과 다양한 경험으로 쌓아낸 귀한 정보나 테크닉들을 저 같은 초보자들을 위해 친절히 소개해줍니다. 처음 봤을 때는 내내 놀라움으로 강의를 보았습니다. 모호하게 느껴지던 개념들을 이젠 말로 설명할 수 있게 되었고, 당장 시키는 대로 객체지향을 더 공부하며 적용하고, 리팩토링을 해보니 프로젝트의 구조가 더욱 깔끔해졌습니다. 처음 강의를 보았을 때는 아직 경험이 적어, 말씀주신 내용들을 다양하게 적용해보지는 못 했습니다. 이후, 새로운 프로젝트를 하며 이 강의가 떠올랐습니다. 강의를 다시 보며 알려주신 내용들을 적용해보니, 스스로 느끼기에 이전과는 비교할 수 없을 정도로 개선된 코드가 나왔고, 프로젝트 멘토님이나 팀원들이 다들 읽기 좋고 잘 짠 코드라고 칭찬해주었습니다. 이 강의는 시야를 넓혀주는 강의라고 생각합니다. 단순히 잘못된 점을 바로잡고, 고수의 노하우와 지식들을 전수 받을 수 있는 것을 넘어 어떤 선택을 할 때, 초보에겐 보이지 않는 다양한 선택지들을 알려주는 감사한 강의라고 생각합니다.

    • catsriding님의 프로필 이미지
      catsriding

      Reviews 24

      Average Rating 5.0

      5

      100% enrolled

      BAD 샘플 코드가 제 코드랑 너무 비슷하네요 🫣 사수없는 환경에서 혼자서 어떻게든 서버를 구축하고는 있지만 다음 단계로 가고 싶은데 좀 막막하더라구요 😮‍💨 길을 못찾고 있었는데 강의를 듣고 나니 감이 좀 잡히는것 같습니다. 정말 감사합니다 👍🏻 설계 관련한 강의 더 올려주셨으면 좋겠습니다 🙏🏻

      • y2gcoder님의 프로필 이미지
        y2gcoder

        Reviews 21

        Average Rating 5.0

        5

        100% enrolled

        저한테 너무 유익한 강의였습니다. 좋은 설계에 대한 고민을 시작하고 있는 와중에 최소한 이것은 하지 말아야겠다는 것을 가르쳐주셔서 너무 좋았습니다. 또한 모든 인용구에 출처를 남겨주셔서 좋은 책들도 많이 알아가게 되어 더 좋은 강의라고 생각합니다. 강의 내용과 별개로 말씀해주시는 톤이나 강의 진행 방식도 깔끔해서 많은 용어들을 설명하는 후반부도 재밌게 들었습니다. 좋은 강의 제작해주셔서 정말 감사합니다!

        • 박지운님의 프로필 이미지
          박지운

          Reviews 4

          Average Rating 5.0

          5

          100% enrolled

          잘 들었습니다. 이론과 실무의 경계에서 고민하던 부분들을 여러 가지 관점에서 들을 수 있어서 좋았습니다. 특히, 주니어 개발자 입장에서 공부를 해야 하긴 하는데 뭘 공부해야 할지 모를 때 들으면 좋을만한 키워드들을 던져주기 때문에 한번씩 다시 보면서 개념을 상기하면 좋을 것 같네요

          • 권기준님의 프로필 이미지
            권기준

            Reviews 11

            Average Rating 4.6

            5

            100% enrolled

            6년차개발자입니다 호기심에 들어봤는데 제가봐도 정말 알맞은 팁들 놓치고있던부분 굉장한 도움이되는 강의가 많습니다. 감사합니다

            $46.20

            kok202's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!