수강평 173,508개, 만족도 96.9%

🔥실시간으로 올라오는 진짜 수강평!🔥


대학교에서 네트워크 전공을 수강하고 이번 HTTP 강의를 듣게 되었는데, 전공을 수강하였을 때는 각각의 기능들이 어떻게 동작하고 어떤 개념들이 있는지에 대해서는 자세하게 배웠으나 통합적으로 엮어나가는 과정이 부족하였습니다. 이 강의를 통해 그 부족한 부분이 채워지는 것 같아서 되게 만족하였습니다. 그리고 이전 스프링 핵심 원리 강의를 들으면서 막연히 문장 의미만 알고 있었던 SOLID에 중요성을 알게 되어서 너무 만족스러웠습니다. 사실 이거는 이전 수강평에 작성을 하여야했는데 이미 작성을 해서 여기에 추가로 적게 되었네요 그리고 혹시 제가 인터페이스와 SOLID를 맞게 이해하였는지 확인해주시면 감사하겠습니다. 인터페이스가 무엇인지 설명하기 위해서는 앞서 언급한 SOLID가 무엇인지 정확하게 언급하고 넘어가야 한다고 생각한다. ​ SRP : 단일 책임 원칙(Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. ​ 만약 해당 원칙을 따르지 않고 설계한 프로그램에서 한 클래스의 특정 기능에 문제가 생겼을 경우, 해당 기능을 수정하기 위해서 그와 연관된 다른 클래스들을 찾아내고 함께 수정을 해주어야 한다. 자바가 가진 특징 중 하나인 모듈화 프로그래밍 기법을 온전히 이용하고 있다고 보기 힘들다고 생각한다. 여기서 모듈화가 무엇인지에 대해서 알아보자 위키백과에서는 모듈을 다음과 같이 설명하고 있다. 모듈(module)은 역사적으로 프로그래밍이라는 관점에서는 기본적으로 본체에 대한 독립된 하위 단위라는 필연적인 개념의 큰 틀을 따르고 있지만 본체와 모듈 간에 가지고 있었던 문제들을 해결해 나가는 과정에서 발전하였다. 모듈에 가장 큰 영향을 미쳤던 클래스 그리고 라이브러리가 향상됨에 따라 점차 발전하였다. 이러한 지속 가능성은 이것의 가장 큰 장점 중 하나이다. 초기에는 분리된 독립성의 모듈로 도입되었으나 점차로 객체화, 캡슐화, 모듈화 프로그래밍 기법 등 여러 기능들이 추가되면서 점차적으로 영역이 나뉘어가고 있다. 그러나 이로 인하여 모듈성을 제대로 반영하지 못하고 있다는 비난을 받을 수도 있다. 한편 이러한 비난은 모듈 시스템, 모듈 프로그래밍이 갖는 현재의 한계를 인식하고 보다 안정적으로 발전하기 위해 효율적인 방향을 추구하는데 기여할 수 있다. 여기서 본체는 하드웨어적인 운영체계일 수도 있고 규모 있는 소프트웨어 프로그램의 본체일 수도 있다. ​ 그렇다면 모듈화란 무엇일까? 모듈화는 시스템을 상호 연결된 모듈로 분해하는 것을 의미한다. ​ 다시 본론으로 넘어가서 단일 책임 원칙을 따르지 않을 경우 모듈화 프로그래밍 기법을 이용하고 있지 않다는 이유를 모듈을 레고로 비유하여 설명해보려한다. 레고의 경우 하나 하나가 독립적으로 되어있어 서로 다른 레고를 조합하여 하나의 물체를 만들 수가 있게된다. 그리고 이 물체를 다른 물체로 변경하려 하였을 때는 레고를 분해하고 다시 조립을 하면 된다. 하지만 레고가 열에 녹아서 끈끈하게 붙어버리게 되었다면 레고를 분해하기가 상당히 곤란해질 것이다. 나는 이 경우를 단일 책임 원칙을 따르지 않는 경우라 생각한다. 즉 단일 책임 원칙을 따르고 설계할 경우에는 클래스 혹은 모듈을 독립적으로 분해할 수 있고, 그것이 문제가 생겼을 경우에는 레고 블럭 조각을 교체하듯이 쉽게 수정할 수도 있을 것이다. 하지만 그렇지 않을경우 어느 한 클래스의 문제가 생겼을 때 그와 연관된 다른 클래스들도 코드를 수정하게 되고, 클래스가 독립적으로 이루어지지 않아 서로 다른 클래스를 조합하기도 힘들어지게 될 것이다. ​ 하지만 이것을 한 번 다르게도 생각해보고자 한다. 과연 책임은 어디까지를 말하는가? 즉, 책임을 한 번 분명하게 생각해보고자 한다. OrderServiceImpl라는 클래스가 있고, 할인 정책(고정 할인, 비율 할을 반영한 클래스가 있고 코드를 다음과 같이 짰다라고 가정해보자 ​ public class OrderServiceImpl implements OrderService { private final Discountpolicy discountPolicy = new RateDiscountPoilicy(); ​ 여러 기능들... } ​ 이럴경우 나는 하나의 책임에서 하나란 여기서 new RateDiscountPolicy()처럼 구체화를 지정해주는 것과 OrderServiceImpl의 속해있는 여러 기능들 이 두가지 개념을 분리해야 한다 생각한다 즉 위 코드는 하나의 책임을 갖고 있는 것이 아닌 두 개의 책임을 갖고 있는 것이라 보며, 구체화를 지정해주는 클래스를 따로 설정을 해주어야 한다 생각한다. [여기서 나온 개념이 관심사 분리라는 개념이 아닐까 생각해보기도 한다.] ​ 이 두 가지 관점이 SRP가 내포하는 진정한 의미가 아닐까 라고 생각한다. ​ OCP : 개방-폐쇄 원칙 (Open/Close Principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. ​ 여기서는 역할과 구현이라는 표현을 이용해보고자 한다. 역할이란 인터페이스를 의미하고, 구현이란 인터페이스를 구현한 클래스를 의미한다. 그렇다면 확장은 무엇이고, 변경은 과연 무엇일까? 확장이란 어떠한 역할을 구현한 구현체 즉 클래스를 여러 개 만들 수 있는 것이고, 변경이란 이 역할 즉 인터페이스를 이용하는 클라이언트에 영향이 생겨서는 안되는 것을 의미한다. 예를들어, 운전자가 있고 역할을 담당하는 자동차 모듈이 있다. 그리고 구현을 담당하는 구현체인 K5, 소나타, 테슬라 같은 차들이 있다고 가정해보자 여기서 자동차 모듈의 역할을 충실히 따르기만 한다면 제네시스를 구현체로 추가할 수도 혹은 아우디 차량을 추가할 수도 있다. 이것은 모두 종류는 다르지만 자동차라고 볼 수 있을 것이다. 하지만 이것을 운전하는 운전자는 K5에서 소나타로 차를 바꿔도 혹은 다른 차로 바꾸어도 운전을 하는 행위에 영향이 생겨서는 안될 것이다. 하지만 '변경에는 닫혀 있다'라는 의미를 다르게도 생각해 볼 수 있다. ​ SRP에서 언급한 내용을 이용해 보고자 한다. 구체화를 지정해주는 클래스를 구성 영역으로 하고, OrderServiceImpl처럼 이러한 기능만을 수행하는 클래스들을 모아놓은 곳을 사용 영역이라 해보자. 변경이란 구성 영역에 해당하는 코드들이 수정되어도 사용 영역에 해당하는 코드들은 수정되지 않아야 한다라고도 볼 수 있다 생각한다. 또한 '확장에는 열려 있다'는 위 내용을 이용하자면 Discountpolicy라는 할인 정책을 반영한 인터페이스가 있고 이를 구현한 RateDiscountPoilicy라는 비율 할인 정책을 반영한 클래스가 있다라고 가정할 때, Discountpolicy라는 할인 정책을 반영한 인터페이스를 구현한 FixDiscountPolicy라는 고정 할인 정책을 반영한 클래스를 추가할 수 있다는 것이다. ​ 이 두 가지 관점이 OCP가 내포하는 진정한 의미가 아닐까 라고 생각한다. LSP : 리스코프 치환 원칙 (Liskov Subsitution Principle) 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야한다. ​ 이 개념은 자바의 다형성에 대해 설명하면서 믿음 즉 신뢰에 대한 의미도 내포하고 있다라고 생각한다. ​ 우선 하위 타입의 인스턴스로 바꿀 수 있어야한다는 것에 대해 이야기해보고자 한다. 이것을 이야기 하기전에 다형성에 대해서 우선 이야기해보고자 한다. 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 이를 좀 더 구체적으로 말하자면, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 이 구체적으로 말한 부분을 예시를 들어서 자세히 살펴보자. ​ 나는 LSP 원칙을 잘 적용한 대표적인 사례는 자바의 컬렉션 프레임워크(Collection Framework)라고 생각한다. 컬렉션 프레임워크에서는 컬렉션데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스인 List, Set, Map을 정의하였다. 그리고 인터페이스 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였다. 만약 Collection이라는 인터페이스 타입으로 변수를 선언하여 할당할 경우 변수에 ArrayList 자료형을 담아 사용하다, 중간에 전혀 다른 HashSet 자료형으로 바꿔도 add()라는 메서드는 동작을 보장받는다. 이것이 하위 타입의 인스턴스로 바꿀 수 있어야한다는 의미이며, 다형성이다. ​ 이번에는 프로그램의 정확성을 깨뜨리지 않는다는 부분에 대해 이야기해보고자 한다. 앞서 얘기한 것으로도 이미 이 부분을 이해할 수 있으나 다른 시각으로도 봐보려 한다. 만약 우리가 컬렉션 프레임워크처럼 자바에서 미리 제공된 것들을 이용하지 않고 직접적으로 클래스 혹은 인터페이스를 만들고 그것을 상속 혹은 구현하는 클래스를 만들었을 때 우리는 다른 누군가가 혹은 나 자신이 그것을 추후 이용할 것이라고 생각하면서 코드를 작성하여야 한다. 하지만 내가 만든 코드를 다른 누군가가 이용할 때 믿음과 신뢰가 없다면 어떠할까? 그 코드가 옳바르게 작성되어져 있는지 계속 확인하여 하며 이것은 시간이 많이 소모되는 작업이다. 즉, 우리는 이러한 신뢰와 믿음을 바탕으로 클래스들을 이용하고 있다. 이러한 신뢰와 믿음을 주기위해서는 인터페이스가 혹은 클래스가 의도한대로 코드를 작성하여 정확성을 깨뜨리지 않아야하며, 사용하는이도 코드를 작성한 자가 위의 원칙을 따라 작성하였다는 것을 믿고 사용하여야 한다고 생각한다. ISP : 인터페이스 분리 원칙 (Interface Segregation Principle) 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다. 범용적인 인터페이스 보다는 클라이언트가 실제로 사용하는 인터페이스를 만들어야 한다. ​ 나는 이것을 SRP라는 개념을 인터페이스에서 다시 한 번더 강조한 것이 아닐까라고 생각한다. 만약 인터페이스의 추상 메서드들을 범용적으로 구현하였다면, 그 인터페이스를 상속받는 클래스는 자신이 사용하지 않는 인터페이스의 추상 메서드들 또한 반드시 구현하여야만 한다. 또한 인터페이스의 추상 메서드가 변경되게 된다면 그것을 구현한 여러 클래스들에서도 수정이 필요하게 된다. 이것은 코드의 복잡성을 낳게 되고, 또한 수정을 하기 어려워지게되어 시간과 비용이 증가되게 된다. 따라서, 클라이언트의 목적과 용도에 적합하도록 인터페이스를 잘 설계하여야 한다라고 생각한다. ​ 인터페이스 분리 원칙은 단일 책임 원칙과 상당히 유사한 개념을 갖고 있다고 생각한다. 여기서 SRP인 단일 책임 원칙은 클래스의 개념에서 단일 책임을 강조하고, ISP인 인터페이스 분리 원칙은 인터페이스의 개념에서 단일 책임을 강조한다고 생각한다. DIP : 의존관계 역전 원칙 (Dependency Inversion Principle) 프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다." 의존관계 주입은 이 원칙을 따르는 방법 중 하나 ​ 우선 의존이란 과연 무엇일까에 대해서 얘기를 해보고자 한다. 통상, 프로그램 구조를 설계할 때는, 코드 뭉치가 제공하는 기능을 기준으로 클래스로 나누는 경우가 잦다. 예를 들어, 문서 작성 프로그램에는 다양한 확장자(.pdf, .hwp, .docx 등)로 파일을 저장할 수 있도록 기능을 제공하는 클래스가 존재할 것이다. 프로그래밍 언어의 라이브러리 관리 툴에는 HTTP 요청을 보내는 클래스, HTTP 응답으로 전송받은 파일을 버퍼에 담아 다시 합하는 클래스 등이 존재할 것이다. 코드가 제공하는 기능(이하 서비스)를 기준으로 클래스를 나눌 때, 외부에 기능을 제공하는 클래스를 서비스 제공자 Service provider , 그 기능을 사용하는 클래스를 서비스 사용자 Service user 로 나눌 수 있다. 이 관계를 서비스 사용자는 서비스 제공자에게 의존한다고 얘기한다. 단순하게 의존성 혹은 의존관계로 표현하기도 한다. ​ 그렇다면 이제는 왜 추상화에 의존해야하는지, 구체화에는 왜 의존하면 안되는지에 대해서 이야기해보고자 한다. 만약 우리가 짠 코드가 구체화에도 의존하게 된다면 구체화를 다른 구체화로 변경할 시에 그것을 의존하는 클래스 또한 코드의 내용이 변경되어야 한다. 여기서 객체 지향이란 무엇인가에?에 대해 적었던 내용을 덧붙이려한다. 만약 우리가 A클래스라는 코드를 작성하였다고 한다. 이것이 추상화에만 의존하였을 경우에는 추상화를 구현한 구체화가 변경되더라도 A클래스의 코드는 변경되지 않는다. 하지만 A클래스가 추상화 뿐만 아니라 구체화에도 의존하게 된다면 구체화를 변경하였을 때 A클래스의 코드 또한 변경이 된다. 이것을 방지하기 위해 추상화에만 의존하도록 코드를 짠다면 어떻게 될까? 추상화를 구현한 객체가 생성되지 않아 NullPoiterException이 생기게 될 것이다. 이 문제점을 해결하기 위해 나온것이 의존관계 주입(Dependency Injection)이라 생각한다. 의존관계 주입이란 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의미한다. 즉, 의존관계 주입을 사용하면 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있게되며, 의존관계 주입을 사용하면 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있게된다. 여기서 '외부에서 실제 구현 객체를 생성' 이 부분을 공연에 빗대어 표현하고자 한다. 공연을 생각해보면 남배우와 여배우가 있고 공연의 남배우, 여배우를 뽑고 할당할 감독이 있다. 이것을 프로그램에서도 적용을 하는 것이다. 어느 한 클래스에서 직접적으로 구현체를 선언하는 것이 아닌 의존관계 주입에 맞춰서 구체화를 지정해주는 클래스를 따로 설정해 주는 것이다. 이것이 앞에서 언급한 관심사 분리이며 감독에 해당하는 영역을 구성 영역, 배우에 해당하는 영역을 사용 영역으로 두는 것이다. 이렇게 할 경우 배우는 상대 배우에 행동에만 주의하면 되지 그 배우가 누구인지에 대해서는 알지 않아도 되며, 배우를 지정해주는 감독도 따로 있기에 배우가 할당되지 않는 경우도 없게 된다. 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC 컨테이너 또는 DI 컨테이너라 하며, 의존관계 주입에 초점을 맞추어 최근에는 주로 DI 컨테이너라 한다. 이제 인터페이스에 대해서 언급하려 한다 앞서 인터페이스를 껍데기라 표현하였다. 지금도 인터페이스를 껍데기라 생각하는 것에는 동의한다. 하지만 SOLID 또한 인터페이스를 설명하고 있다고 생각하고 궁극적으로 객체란 무엇인가, 다형성이란 무엇인가에 대한 의미를 내포하고 있다라고 생각한다. 즉 인터페이스란 좋은 객체 지향을 설계하기 위한 훌륭한 도구이며, 자바의 특징 중 다형성을 가장 뚜렷하게 나타내는 것이 아닌가라고 생각한다.

깃을 명령어로 처음 배울때는 바로 덮었었는데 시각적으로 이해 할 수 있게끔 소스트리로 처음에 배우게 되니 확실히 이해가 훨씬 쉬웠습니다. 좋은 강의 감사합니다.

항상 감사드립니다!!! 로드맵 시작전에는 언제 저걸 다듣나 ..싶었는데.. 하루하루 듣다보니깐 욕심이 들어서 많이듣게 되네요!! 강의를 너무 잘해주셔서 수월하게 넘어가고있습니다!! 너무 감사드립니다!

JPA강의 부터 spring까지 끝까지 다 왔네요..영한님 강의 덕분에 촌구석에서 si업무를 하면서 매일 야근에 시달리면서 일을 해왔는데 30살이 넘어서 서울로 올라오게 되어 네카라쿠배 정도의 회사는 아니어도 훨~씬 좋아진 환경에서 개발 하게 되었습니다. 그동안 고생 많으셨구요. 정말 감사합니다. 저는 비전공자라 주변에 개발자 인맥이 적습니다. 그래서 영한님 강의를 통해 많은 것을 배우게 됩니다. 앞으로 실무적으로 좀 더 깊이 사용할 수 있는 강의가 나왔으면 좋겠어요. 감사합니다~

혼자 맨땅에 헤딩으로 언리얼을 공부해왔었기에 해당 강의를 통해 처음보는 다양한 소스와 기능들을 공부할 수 있었고, 개체들간의 의존성을 최소화하는 방법을 공부 할 수 있어서 저에게 있어서 상당히 만족스러웠던 강의이었습니다. 하지만 해당강의는 언리얼을 처음 시작하는 분들이 쉽게 공부할 수 있는 강의는 아니라고 느꼈습니다. 잦은 코드 복붙과 어떤 함수나 소스가 무슨 일을 하는지 자세한 원리와 설명이 부족했다는 점, C++ 전문강의이라서 블루프린트의 사용방법 등 강의자료가 부족한 상태에서 마지막 "게임의 완성" 강의에서의 Player와 UI간의 상호작용 로직을 블루프린트로 작성해야한다는 여러 문제로 인하여 강의자체 난이도는 초급이나 이해하거나 활용하는 과정에서는 의도치 않게 초급이 아닌 중급으로 올라가버린 것 같습니다.

JPA 가 어떤 것인지 빠르게 파악할 때 매우 좋은 강의입니다. 보통 저는 포괄적인 지식을 먼저 익히고 실무에서 만나야하는 세부적인 내용들은 공식 레퍼런스를 참조하는데, 이 강의는 좋네요. 개인적으로 객체 조회가 단순해진다고 엔티티 매핑을 함부로 남발하지 말라는 말도 인상 깊었습니다.

이해를 바탕으로 한 암기가 가능하게 해주는.. 정말 정말 좋은 강의입니다. 실세계와의 비유를 통해 큰 그림을 우선 머릿속에 잡을 수 있도록 한 뒤, 큰그림 -> 중간그림 -> 세부그림 순으로 계속 머리속에 때려박아줍니다. 모바일 개발자인데 지식이 얕아 지금까지 다른 사람이랑 얘기할 때 속으로 '세션 통신? HTTP? REST는 세션 통신이 아닌건가?;; 패킷.. 데이터 단위인건 알겠는데.. 학부때 듣긴 했는데 뭐였더라..?' 하고 있었는데 강의 듣고 이해가 되었읍니다... 네트워크 기초 강의는 모바일이나 클라 개발자들도 꼭 들으면 좋을 것 같아요. 큰 도움이 됩니다. 이제 정리해둔 내용을 바탕으로 계속 반복해서 읽으면서 암기하고, 까먹으면 다시 읽어야겠어요. 심화편까지는.. 아직 주니어 모바일 개발자로서는 불필요할 것 같다 생각하여 이제 이 강의로 얻은 지식을 바탕으로 HTTP 공부쪽으로 넘어가려 합니다. 좋은 강의 정말 감사합니다!! 돈이 하나도 아깝지 않았어요!!

트랜젝션 전파 부분은 모르고 있으면 나중에 힘든 시간을 보낼수도 있겠다 라는 생각이 드네요 ㅎ 항상 마지막에 선배 개발자로 조언해주시는 부분이 앞으로 공부함에 있어서 자극이 됩니다. 이번 강의도 잘 들었고, 다음 강의도 잘 듣겠습니다. ^^

플러터 좋은 강의 감사합니다~ 강의 들으면서 아쉬운 점이 많아서 길게 적었습니다. 요약 - 플러터로 앱을 만드는 강의로써는 훌륭하나, 플러터를 이해하는 데는 글쌔? ------------------------------------------------------ 전체 수강 평 flutter 코드를 짜시는 속도를 보니 관련된 작업을 많이 하신 것 같은데, 그에 비해 전체적인 프로젝트 설계 능력이나 경험, IT 지식 등이 다소 부족한 느낌이었습니다. 물론 취준생분들이나 학생 분들이 듣기에는 충분하다고 생각하나, 어느정도 경력이 있는 개발자가 듣기에는 중간중간 개념설명이 잘못된 부분이나 프로젝트를 왜 이렇게 구성했지? 라는 생각이 많이 들었습니다. 강의 들으면서 처음에는 질문하기를 통해 글을 남겼는데, 이거 계속 쓰면 강의 진도가 안 나갈 것 같아서 따로 메모하면서 그냥 강의를 넘겼네요. 일단 적은 거는 아래와 같습니다. - 인증 과정 설명 중 token이나 session에 대한 이론 설명 부족 -> 이건 질문에 남김 - 프로젝트 구조를 가져가는 데 있어 자세한 설명 부족. 플러터에서 어떤 패턴들을 사용하는지 얘기를 좀 듣고 싶었는데 설명없이 repository 만들고 provider 만들고~ - 제공된 서버 API의 response 형식 안 맞음. 페이징을 하던 안하던 응답 모델이 동일해야 개발하기 편한데 페이징 있는 건 data로 한번 감싸서 내려주고, 아닌 건 그냥 쌩으로 내려주니, 이건 클라에서도 공통으로 관리할 수가 없어서 너모 불편한데,, - Dio 인터셉터 만들 때 '그냥 rule이에요~'라고 하면서 따라 하면 된다는 식의 설명, 전체적으로 네트워크 쪽이 설명이 미흡 - 중간중간 "oop를 아신다면 ,,"이라고 설명을 스킵하는 부분이 있는데, oop에 대한 개념이 아님에도 말하는 부분이 있음 - 네이밍이 전체적으로 안 맞음. 같은 이미지 URL필드도 imgUrl, imageUrl 두개 쓰임, user_model은 userModel로 camel로 사용하지만 username은 왜 userName으로 안 쓰는지 모르겠음 - 강의 후반으로 갈수록 같은 말을 반복하는 구간이 늘어남. 영상 편집 때문인 것 같은데 같은말 반복하는 구간도 있고.. 보는데 불편 - gorouter 챕터 이후 갑자기 UerMeRepository로 넘어감. 이전 강의에서 UserModel은 안만들었는데 생김. 강의가 빠진것 같음 ... 위와 같은 내용들 때문에 사실 강의를 듣는다기 보다는, 강의 처음 시작할때 무엇을 해볼까요~ 하면 강의 멈추고 직접 구현하고 비교하는 방식으로 강의를 봤는데요, 실제로 github이나 stackoverflow 등에서 본 레퍼런스 코드들이 훨신 깔끔하고 구조가 좋은 느낌이었습니다.(+ 집필한 책도 구매해서 보았는데, 뭔가 큰 회사의 프로젝트를 경험한적이 없다는 느낌이 드네요.) 강의를 들으면서 수강평은 안남기는 편인데, 강의 도중에 이런 말을 너무 많이 해서 글을 쓰게 됬습니다. "이건 프로젝트, 팀, 사람마다 다르기 때문에 이 코드와 다르게 짤수도 있어요" "이건 이렇게 할수 있지 않나요? 라고 하시면 저는 할말이 없습니다." 등등 태클에 대해 방어적인 말들을 많이하시는데, 강의를 듣는 입장에서는 오히려 부정적으로 들립니다. 다양한 프로젝트 경험이 있다면 다양한 예를 설명하면서 이런방법 저런방법이 있다라고 설명할 수 있을 것 같은데, 그러지 못해서 이런 말을 하는것처럼 보이거든요. 차라리 언급은 안하셨다면 더 좋았을 것 같네요. 그리고 "돈주고 파는 강의이기 때문에 다 알려드립니다"라는 말도 많이 하시는데, 설명이 너무 빈약합니다. 강의 들으면서 내부 코드 까보는데 더 시간 오래걸린것 같네요. 제가 생각하기에 '중급'이라면 내부적으로 코드가 어떻게 돌아가는지까지 설명받길 기대하는데, 안이 어떻게 돌아가는지 모르고 그냥 있는거 가져다 쓰는 강의였습니다. 추후 강의에서는 다양한 프로젝트에 대한 예시나 내부 로직등에 대한 설명도 추가되었으면 좋겠습니다.
채널톡 아이콘