본문 바로가기
Project/우아한테크러닝 4기

우아한테크러닝 4기 / 20210615 / 교육에 대한 기록 / 메모장

by RUCKUS 2021. 6. 16.

1교시

컴포넌트 관련된 주제를 메인으로 수업을 진행.

 

민태님은 90년대 부터 컴포넌트 관련하여 업무를 진행해오다 보니, 리액트같은 프레임워크에서 사용하는 컴포넌트 라는 용어가 국소적이고 이질감이 느껴진다고 한다.

 

[민태님 질문]

컴포넌트가 뭐라고 생각하는지? 어떻게 빌드업해서 올라가는게 좋을지? 어떤 이미지를 가지고 있을지?

 

(답변들)

  • 기능 단위? 조각 같은 느낌
  • 리액트에서는 요소들?
  • self contained buliding block 이라고 생각하지만 실제로는 커스텀 엘레먼트로 밖에 사용하지 못하고 있다.

[민태님 스피킹]

컴퓨터에서 그래픽카드로 예를 들면 그래픽카드 자체가 컴포넌트이다. 그런데 만약 그래픽카드를 교체한다고 하면?? 공장으로 보내지 않는다. 그냥 그래픽카드를 뽑고 다른 그래픽카드를 꼽으면 동작한다. 이것을 HTML로 접목하면 태그하나하나가 디펜던시가 없는 하나의 조각의 최소단위인 것이고 이것이 본인이 생각하는 그나마 컴포넌트라고 설명할 수 있는 부분의 예 라고?? 생각한다. 다른 관점에서 설명하면 코드를 작성하고 컴파일하고 이러한 과정없이 바로 붙여서 실행이 가능한 수준?? 이 컴포넌트다?

 

그리고 그래픽카드를 바꿔 끼울때 흔히 말하는 버스? 라는 개념의 인프라가 있다. 그러한 데이터 프로토콜 규약에 맞춰서 제작된 그래픽카드이기만 하면 어떤 그래픽카드이던지간에 끼우기만하면 메인보드와 호환되어서 동작하게 된다. 근데 리액트는 이러한 부분에 대한 지원이 없다.

 

결과적으로 리액트는 컴포넌트 기반으로 개발하기 위해 제공하는건 거의 없다. 그리하여 재활용 가능한 컴포넌트를 만드려면 규격을 스스로 정해야한다.


2교시 ~ 3교시

1교시에서 컴포넌트에 대한 개념을 애기했다면, 그 다음에는 이것을 어떻게 적용할 것이냐? 를 보겠다.

 

나무를 보지 말고 숲을 보려는 노력을 계속 기울여야 한다. 일례로 제이쿼리의 $가 바닐라JS의 한 요소인줄 아는 개발자도 있었다. 요구사항에 맞춰서 개발 하는데에는 문제가 없겠지만 직접 설계해서 개발할때는 문제가 생길수도..?

 

리액트에서 사용하셨던 예제로 컴포넌트에 대해서 설명해주셨다. 그런데 사실 이해가 하나도 되지 않았다...

뭔가 한번 실행되면 최소한의 개입으로 코드가 작동하고 돌아간다는 원리를 설명해주시려는 것 같았는데... 알고리즘에서 재귀함수 같은 느낌을 받기도 했고... 더 깊게 생각하다보니 내가 제대로 이해하고 있는 건지를 파악하지 못했다.

 

따라서 편안한 마음으로 듣기 시작했다.

 

CS 지식을 알면 알수록 다양한 컨셉들을 시도해볼 수 있다. 그래서 CS 공부를 틈틈히 시간을 내어 하는 것이 좋다.

 

현재 우리는 REST API를 많이 쓴다. 거의 20년 동안 근데 이 REST가 약간 리액트 같은 측면이 있다. 무슨 말이냐면 Machine 리더블 하지 않다. 그리하여 클라이언트가 REST API 기반으로 만들어진 것과 연결하려면 개발자와 커뮤니케이션할 수 밖에 없다. 문서 없이는... 하지만 리액트처럼 심플하게 구현되어 있기 때문에 REST API가 인기가 많은 것.

 

블루프린트.js 코드 분석 .... ???....

 

다시 컴포넌트로 돌아와서...는 질의 응답 시간.

 

 

다음시간에는...

참가자 중 작성한 프로젝트를 가지고 리뷰하는 시간을 가져볼 것.

 


질의응답

 

질문 : 주니어 개발자가 새로운 기술을 배울 때 바텀업 학습, 탑다운 학습 중 어떤 형태로 학습하는걸 추천하시나요?

예를 들면 React -> JS인지 JS -> React인지??

 

답변 : 하이브리드로 하는 것을 추천한다. 개발하는데에 있어서 요즘은 학습해야할 것들이 너무 많다보니 동시에... 하나를 마스터하고 넘어가는 상태가 올까요? 안옵니다. 그리고 마스터했다고 인지하는 순간 성장이 멈춘다고 생각한다. 계속 끊임없이 모른다고 생각하고 탐구해야한다.

 

질문 : 회사에 달콤하지 않은 말을 하는 것?

 

답변 : 맥락이 다를 것 같다. 예를 들어 배민에서 UI/UX가 이러이러한데 이러이러한 부분을 고치면 좋겠다. 라는 수준의 말은 좋은 디스라고 본다. 문제의식도 있고 해결 방법도 제시하기 때문, 다만 그렇지 않은 형태로 얘기하면 좋지 않을 것 같다. 예를 들어 네이버 면접인데 요새 네이버의 사회적 이슈에 대한 민감한 질문을 하게 된다? 이것은 마이너스되는 질문이라고 본다. 항상 올곧은 얘기가 모든 상황에서 좋게 작용할 수는 없다.

 

질문 : 이상하게 공부를 하고 프로젝트를 할 수록 모르는 것 같은 기분이 들고 불안해서 어찌할지 모르겠습니다.

 

답변 : 당연하고 자연스러운 현상이니 그 것을 즐겨라. 오히려 모르는게 없다는 생각이 든다?? 그러면 망한것이다. 엔지니어로서의 마인드가 없어진 것. 상황은 정상적인다. 아주 굉장히.

 

질문 : 면접 준비를 많이 해온 듯한 지원자들을 봤을때, 어떠한 느낌을 받으시는지 궁금합니다. 오늘 면접을 보고 왔는데, 자기소개를 하자마자 준비한 티가 난다고 하셔서 어떻게 해야할지 모르겠습니다.

 

답변 : 이런 생각 해보시지 않으셨나요? 이미 이력서에 자기소개서가 있는데, 왜 굳이 다시 자기소개를 하라고 하는거지?? 근데 이것은 컴파일이 아닌 런타임에 들어보고 싶은 관점이라고 보면 된다. 어떻게 조리있게 말을 잘하나? 스트레스상황에서 어떻게 컨트롤 하는지에 대한 부분들을 보려고 하는 것. 준비해서 암기해서 스피치하는 것 같은 멘트가 굉장히 많다. 특히 주니어에서는 근데 그렇게 하지 않았으면 좋겠다. 그냥 편하게 친구와 얘기하듯이 했으면 좋겠다.

 

질문 : 가끔 짜는 코드가 구글링 코드인지 제 코드인지를 모르고 자꾸 모방하게 되는데...안보고 짜려면 어떻게 해야할까요??

 

답변 : 처음에는 무조건 보고 짜야죠. 근데 단순히 복붙이 아니라 복붙 후에 이게 어떻게 동작하는지에 대한 것들을 이해하려고 하고 자세히 보려고 해야할 것

 

질문 : 프로젝트 외적으로 감을 잃지 않게 매일 할 수 있는 것?

 

답변 : 사이드 프로젝트 같이 이것저것 계속 만들어보는 것? 밖에는 없는 것 같다. 강의같은 것을 해봐도 좋을 것 같다. 알려주면서 더 이해하게 되기도 한다.

 

질문 : 사이드프로젝트는 팀이랑? 아니면 혼자?

 

답변 : 저는 사이드프로젝트는 무조건 혼자합니다. 왜냐하면 팀프로젝트를 사이드로하면 제대로 된적이 없습니다. 자신의 리듬대로 하지를 못하기 때문입니다.

 

질문 : 이미 재직중인 사람이 면접을 볼때 어떤 이유여야 납득이 갈까요??

 

답변 : 전략이 필요하다. 왜 이직하려고 하시나요?

틀린답 -> 회사가 별로에요. 팀이 별로에요. 상사가 별로에요. 

맞는답 -> 해볼만큼 해보고 이직하는 것인가? 그것이 무엇인가? 

왜냐면 어느 회사나 문제는 존재. 그렇기 때문에 해당 문제가 생기면 바로 회피를 다시 할것인가. 아니면 문제를 해결할려고 할 것인가 등등