📅 날짜 : 07/02
😎 강사님: deep-dive 이웅모님
🔗 강의시간 : 240분
🔗 강의질문: slido링크
세션 후 느낀 점
- 3개월 안에 완성된 개발자가 될 수 있을거란 조급함 벗어나라!
부트캠프는 완성된 내모습을 만드는 과정이 아니라, 완성된 내 모습을 위한 과정이라고 생각하니 마음이 한 결 편해진다.
- 가독성이 제일 중요
코드는 개발자를 위한 문서이기도 하다.
가독성은 상대방에 대한 배려이자, 유지보수 비용을 줄이기 위한 첫번째 방법
- 이해와 고찰 === 관찰과 해석
무엇을 어려워 하는가에 대한 이해를 바탕으로, 왜 어려워 할까에 대한 고찰이 필요
무엇인지 문제인지 관찰하는 것이 먼저이고, 그 이유를 찾는 것(해석)이 두번째이다.
- 프레임워크는
패턴의 집합체
고, 패턴에는 컨셉
이 존재
불편함을 해결하기 위해 고안한 것이 컨셉
어떤 것이 불편했는지, 어떻게 해결하고자 하는 지 이해하기
vanilla JS로 불편함 느끼는 것 중요1. 질문
- 개발 서적, 글쓰기 관련
- 실행컨텍스트
- 책마다 다른 내용, Outdated 된 자료들
- ECMA Script Spec은?
- (관련 질문) TIL을 작성하며, 어느 부분을 강조하고 어떤 부분을 덜어낼 지 고민이 많다.
- 웅모님만의 글 작성 룰과 톤앤매너가 있는지 궁금
- 개발자는 문학서가 아닌 전문서를 쓰는 사람
- 아름다움을 추구하는 것이 아닌
사실을 이해하기 좋게 서술하는 것
이 목표 - 단정적인 표현 vs 열린 결말
..이다.
/ ..라고 볼 수 있다.- 정답이 없는 것이 많다. ⇒
나의 견해와 사실 구분
해야함 - 룰
- 사실: 정확한 내용을 위한
cross check!
- 프로토타입, 실행 컨텍스트, 비동기 …
- 최소 10개의 관련 글을 읽으며 cross Check 해보기
- 이해: 일반적으로 이해 가능한 내용인가?
- 너무 난해하거나, 일반적으로 필요하지 않은 내용 삭제
- 이유(원인): 현상의 원인은 무엇인가?
- 변수는 왜 사용해야 하는가?
- 호이스팅은 왜 발생하나?
- 호이스팅은 선언부가 스코프의 최상단으로 끌어올려지는 것
근데 왜 나왔냐!
- 호이스팅은 의도된 것인가, 부작용인가
- 호이스팅은 부작용이기 때문에 anti패턴으로, 사용을 지양해야하는 현상이다.
- 클로저는 어떻게 라이프사이클이 종료된 식별자를 참조할 수 있는가?
- 이것 자체가 궁금해야한다.
- TIL
- TIL은 누구를 가르칠 목적이 아니라, 미래의 나에게 쓰는 비망록
- TIL은 인간의 기억을 믿지 못하기 때문에, 미래의 나를 위한 기록이다.
- 글을 쓰게 된 동기
- 무엇을 모르는지, 정확히 작성하기
ex)
클로저가 어떤 개념인 줄은 알았지만, 무슨원리로 종료된 식별자를 참조할 수 있는지 궁금하였다.- 새롭게 알게된 사실
- 결론
- 부작용이 있으니 사용을 지양하자
- 매우 유용하니 앞으로 적극적으로 사용하자
결론이 없는 TIL이 많은데, 배운 내용의 활용에 대해서 고민해봐야한다!
- 글은 숙성시킬 필요가 있다.
- 쓰면 쓸수록 좋아지는 것이 글이다.
- 정확한 용어의 사용
- 선언, 정의
- 순회, 열거
- 순회는 순서를 가진 리스트
- 열거는 순서는 의미가 없는 리스트
- 문, 식
- 변수에 담을 수 없는 것이
‘문’
- 값으로 치환 가능한 것은
‘식’
- 할당, 바인딩 (링크)
- 할당은 변수에 값의 메모리 공간을 바인딩하는 행위
- 모든 현상에는 원인이 있다.
- 원인이 무엇인지 파악하는 것이 우선(
관찰 ⇒ 해석
) - 문법은 만들어진 이유가 있다.
- var 키워드 존재하는데 let과 const는 왜 필요한가
- undefined라는 값이 필요한 이유는?
- NaN이 왜 필요한가?
- 생성자 함수가 존재하는데 클래스는 왜 필요한가?
- 프로토타입은 왜 필요한가?
- DOM은 왜 존재하나?
- 이벤트는 왜 전파되는가?
- 꼭 비동기로 해야하나?
- 연역적 전개와 귀납적 전개
- 연역적 전개
- 명제 ⇒ 사례 ⇒ 결론
- 용어: 변수, 값, 표현식
- 귀납적 전개
- 현상 ⇒ 이유 ⇒ 결론
- 호이스팅, 클로저
- 서사
- 대부분의 개념이 순환적 구조를 가지고 있다.
- 함수 ↔ 객체
- 함수는 객체이기 때문에, 객체공부 필요
- 객체는 함수로 만들어지기 때문에 함수공부 필요
- 순서를 정하기 어렵다.
- 메타지식이 필요한 경우가 대부분이다
- 변수 ⇒ 스코프 ⇒ 실행 컨텍스트 ⇒ 클로저
Q. 딥다이브 내용 중, 가장 신경 써서 작성한 부분이 있다면?
Q. 개발서적을 쓸 때 중요하게 생각해야 할 점은 무엇일까요?
Q. 개발 서적쓰기가 어려운 이유
대부분 연역적 전개를 어렵다고 느낀다. 단, 연역적 전개가 더 필요한 경우가 있다.
- 지식 및 트렌드 습득 관련
- 메타인지
- 내가 아는 것과 모르는 것 구분하기
- 말로 설명하기
- 어려운 것과 익숙치 않은 것 구분하기 쉽지 않다
- 어려운 것은 조금 흘려보내보아라
- 나중에 돌아왔을 때 의외로 쉽게 이해되는 경우가 많다
- 이해(익숙)될 때까지 무한 반복
- 나무만 보지 말고 숲을 보기
- 글로 정리하기
- 만들어보기
- 어떻게 하면 될까 (HOW) vs 왜 안될까 (WHY)
- 구현에 급급하지 말고, 문제를 파악하고 원인을 찾자
- 되면 왜 되는지, 안되면 왜 안되는지
- 최선을 고민하기
- for vs map/filter/reduce ( imperative vs declarative 차이)
- 시간/공간 복잡도 vs
가독성
- 좋은 코드란 무엇일까?
- 프론트엔드에서는 변화에 대한 유연성이 중요하다.
- 약간은 말랑말랑한 상태를 가지고 있고, 쉽게 고칠 수 있도록 가독성 좋은 코드가 좋은코드
IT 인사이트를 얻는 사이트가 있나요?
데브코스에서 너무 많은 지식을 한 번에 습득하고 있어 혼란스러움을 느끼는데, 많은 정보를 나의 지식으로 내재화 시키는 방법이 있을까요?
- 신입 개발자가 갖춰야할 것
- 프레임워크는
패턴의 집합체
고, 패턴에는컨셉
이 존재 - 불편함을 해결하기 위해 고안한 것이 컨셉
- 컨셉을 패턴화해 구현해놓은 것이 프레임워크
- 리액트의 핵심은 reconcilation을 통한 렌더링 최적화이고, 그것을 이루기 위해 상태화 렌더링을 동일시하여 해결하고자 한다.
- 왜 이렇게 해야하나 ⇒
컨셉의 이해
- 이렇게 하면 무엇이 좋아지는 가 ⇒
패턴이 해결하려는 문제
- 이러한 불편함과 문제점은 바닐라자바스크립트를 사용해야만 알 수 있다.
- html, css 재사용, innerHTML을 이용한 DOM mutate
- 렌더링
- 대부분의 Front-end 프레임워크는 DOM을 다루는데 관심이 많다
- 상태
- 사용자의 action(event, 데이터fetching) 에 의해 변경될 수 있다.
- 상태가 변경되면 리렌더링 되어야 한다.
- Action ⇒ 상태변경 ⇒ 렌더링 (상태와 DOM을 동기화)
- 코드의 일관성 추구
- 인성(===태도, ≠착함)이 좋으면 성장 가능성이 크다.
- 좋은 태도란
- 피드백에 대한 태도 (지적 겸손함)
- 공부하는 태도 (성실함)
- 동료나 강사에 대한 태도 (예의)
- 자기자신에 대한 태도 (자존감)
- 마음가짐
- 일을 하면서 행복하면 좋겠다.
- 좋아하는 일을 하면 매일이 즐겁다.
- 즐거운 사람과 일하고 싶다.
- 좋아하면 → 관심 → 공부 → 잘하고 → 칭찬 → 더잘하기 → 연봉상승
- 뇌를 속이기
- 부정적 생각을 버리고 긍정적 생각가지기
- 뇌는 의외로 쉽게 속는다.