< 메타인지 >
1. 고정형 마인드셋 / 성장형 마인드셋(태도에 따른 구분)
생각하는 대로 살지 않으면 사는 대로 생각하게 된다.
"one much live the way one thinks or end up thinking the way one has lived"
- 폴 발레리(Paul Valery)
고정형 마인드 셋 | 성장형 마인드 셋 |
- 재능과 능력은 변하지 않고 고정적이기 때문에 아무리 노력해도 바뀌지 않는다고 생각함 - 자신의 실패를 타고난 재능과 능력의 부족으로 봄 - 자신의 결함이 드러날까 새로운 도전을 두려워하고 기피함 - 자신이 잘 할 수 있는 것에만 집중 - 다른 사람들의 비판을 개인적으로 받아들이고 피드백에 방어적인 모습을 보임 |
- 재능과 능력은 노력을 통해서 변할 수 있다고 생각함 - 결과보다는 성장하는 과정에 집중함 - 새로운 도전을 성장의 기회로 보고 자신이 잘 못하는 일이라도 적극적으로 참여함 - 실패를 성장의 발판으로 생각할 수 있음 - 다른 사람들의 비판을 건설적인 것으로 보고 적극적으로 수용함 |
얼핏보면 운명론을 믿냐 안믿냐 처럼 나눴다고 생각이 들기도 한다. 가장 큰 차이는 변화나 상황을 적극적으로 수용하는 태도와 아닌태도로 나눠진다고 생각한다. 유연한 사고와 뭔가에 대해 실패했을때 실패(Fail)이 아닌 극복하기 위한 원동력(Not Yet)으로 생각하는 사고가 중요하다고 생각한다.
뇌의 가능성 = 변화하는 뇌 = 꾸준함과 끈기로 해당분야에서 노력하면 뇌도 지속적으로 맞춰서 변화함
Q1 개발자가 되기 위해 새로운 도전을 시작하신 여러분은 고정형 vs 성장형 마인드셋 중 어떤 마인드셋을 가지고 계시나요? Q2 성장형 마인드셋을 가지기 위해 필요한 것은 무엇이 있을까요? |
2. 메타인지, 자기주도학습의 열쇠
특정한 지식을 습득하는 것이 아닌 독립적인 사고와 판단을 할 수 있는 일반적인 능력을 개발하는 것이 항상 우선되어야 한다.
The development of general ability for independent thinking and judgement should always be placed foremost, not the acquisition of special knowledge.
- 알버트 아인슈타인(Albert Einstein)
메타인지 = 생각에 관한 생각(Thinking about Thinking) = 자신에 대한 객관화를 통한 개인화 전략
-3가지 메타인지
1. 자기 자신을 보는 거울
2. 스스로를 믿는 능력
3. 나의 완벽하지 않은 모습을 인정하는 것(완성의 착각)
노력을 하는 것은 무엇인가를 이룰때 반드시 필요하다고 생각한다. 하지만 그것만으로는 성취에 다가가기 어렵기 때문에 지속적인 모니터링과 단점 보완을 위한 컨트롤을 하며 점진적으로 진행하는 것이 필요하다. 즉 메타인지는 빠른 성취를 위한 단기적 도구가 아니라 점진적 도구이다.
Q1 지금 현재 나의 학습상태가 어떤지 최대한 객관적으로 생각해 봅시다. 어느 부분이 상대적으로 부족하다고 생각하나요? 부족한 부분을 보완할 수 있는 방법에는 어떤 것이 있을까요? Q2 이번 섹션에 대한 구글 캘린더 일정을 한번 확인해 봅시다. 앞선 일정들을 고려하면서, 나만의 학습 전략에 대해서 생각해 보고 학습 계획을 세워봅시다. Q3 앞서 고민했던 리사 손 교수가 설명하는 메타인지의 세 가지 내용 중 나에게 가장 필요한 부분은 무엇이라고 생각하시나요? 어떻게 보완할 수 있을까요? |
3. 메타인지 트레이닝 가이드 / 메타인지를 활용한 유닛별 회고
- 거울보기 & 데일리 회고
이해도 자가 점검 리스트
학습을 진행하다 보면 '마치면서' 챕터를 만나게 됩니다. '마치면서' 챕터는 해당 유닛의 이해도를 최종적으로 점검하는 시간 입니다.
이해도 자가 점검 리스트의 각 대주제별 필수 개념을 확인하고 현재 자신의 이해도 상태를 점검 합니다.
자기주도적 학습 가이드
앞서 진행한 '자가 점검 리스트'를 기준하여 답변할수 있는 개념들의 개수를 확인한 뒤 '자기주도적 학습 가이드'에 기반한 추가 학습 계획을 수립하고 복습을 진행 합니다.
이때 자가 점검 리스트의 아는것과 모르는것의 기준을 정확히 구분하여 모르지만 아는것으로 체크한것은 아닌지 다시한번 확인이 필요합니다.
<예시>
1. 지금 현재, 당신의 기분이나 느낌을 표현해 주세요.
Tip1. 오늘 하루 전체보다는 현재에 집중해 주세요. Tip2. '좋았다'. '힘들었다.' 등 짧은 한 문장으로 표현하기보다는, 구체적으로 표현해 보려고 노력하는 것이 좋습니다. 처음에는 조금 어려울 수 있지만, 점점 구체적으로 표현하는 것을 목표로 삼아주세요! |
어려운 내용을 따라가느라 너무 지치고 힘이 든다. 배열에 대해서는 그래도 잘 공부했다고 생각하는데, 객체 관련 코플릿을 풀 때부터는 페어의 이해 속도를 따라가기가 벅찼다. 페어가 친절하게 설명해 주고, 기다려주어서 고마운 마음이 들었지만, 한편으로는 내가 페어의 학습에 걸림돌이 되고 있는 것은 아닌가 하는 생각 때문에 마음이 편하지 않았다.
2. 오늘 무엇을 학습한 내용 중 지금 떠올릴 수 있는 단어를 모두 나열해 주세요.
Tip. 약 5분 정도 오늘 학습한 내용을 복기하면서 생각나는 모든 단어를 적어 봅니다. 이후 질문을 통해 이 중 '설명할 수 있을 정도로 이해하고 있는 것'과 '그렇지 않은 것'으로 분류하는 작업을 진행하게 되므로 최대한 많은 단어를 떠올려 보는 것이 좋습니다. |
배열, 객체, 인덱스, 키, 값, 속성, 요소, for ~ in 반복문, for ~ of 반복문, break, continue, pop(), push(), slice()...
3. 2에서 작성한 단어를 가지고, 오늘의 학습 내용을 설명해 보세요.
Tip1. 2에서 나열한 모든 단어를 사용하지 않아도 괜찮습니다. 설명할 수 있는 단어를 여러분의 언어로 설명해 보세요. Tip2. 완벽한 설명이 아니어도 좋습니다. 여러분이 이해한 내용을 스스로 점검하기 위한 수단으로 생각하고 진행해 주세요. |
배열과 객체는 여러 개의 데이터를 다룰 수 있는 방법이다. 비슷한데 약간? 다르다.
배열은 요소들의 나열로 이루어져 있다.
배열은 요소가 나열되어 있으니까 순서성이 중요한데, 요소의 순서를 인덱스라고 한다.
배열의 첫 번째 요소는 1번째 요소가 아니라 0번째 요소이다. 즉, 배열의 요소의 인덱스는 0부터 시작한다.
자연스럽게 맨 끝에 있는 요소의 인덱스는 배열 전체 길이에서 -1을 해주면 된다.
객체는 키와 값으로 이루어져 있다. 키는 값을 설명해 준다.(?) 예를 들면 이름:운도 이런 식으로.. 이걸 나열하면 객체가 된다.
배열에 요소를 CRUD를 할 때는 메서드들이 정해져 있다. 앞에서 삭제 또는 제거 shift() unshift(), 뒤에서 추가 삭제 push(), pop()
4. 설명하기 어려운 단어가 있다면, 그 이유는 무엇인가요?
Tip. 3에서 설명하지 못한 단어를 나열하고, 그 이유에 대해서도 간단히 적어 봅니다. |
키, 값이랑 속성의 차이를 알기 어려웠다.
for ~ in 반복문과, for ~ of 반복문이 각각 배열 반복을 위한 건지, 객체 반복을 위한 건지 헷갈린다.
5. 그 단어를 스스로 설명할 수 있기 위해서 누군가에게 질문을 한다면, 어떤 질문을 해야 할까요?
Tip. 설명하기 어려웠던 단어는 추가적인 학습을 통해 습득해야 합니다. 여기서 만든 질문을 바탕으로 검색과 아고라 스테이츠를 통해 다른 사람에게 설명할 수 있도록 학습해 보세요. |
키, 값이랑 속성(property)는 같은 건가요, 다른 건가요?
for ~ in 반복문을 통해 객체를 반복할 수 있는 거 맞나요?
break 를 쓰면 그 즉시 함수가 종료되는 건가요?
continue 는 반복문이 종료되는 건가요? 아니면 함수가 종료되는 건가요? 함수가 종료되는 거라면 break와의 차이가 무엇인가요?
<페어프로그래밍>
1. 페어프로그래밍(Pair Programming)
- 짝을 지어 진행하는 코딩
- 에자일방법론 중의 한 기법
- 개인으로 하는 코딩보다 오류 확률이 적고 해당 프로그램에 대한 커뮤니케이션을 통해 이해를 높임
2. 페어프로그래밍의 방법
- 한 컴퓨터로 두명의 개발자가 같은 공간에서 함께 작업
- 한명은 네비게이터(Navigator)로 전체적인 방향을 제시하고, 다른 한명은 드라이버(Driver)로 네비게이터가 제시한 방향으로 코드를 작성
- 한 문제 혹은 정해진 시간단위로 역할을 바꿔가며 진행.
3. 네비게이터와 드라이버의 역할(Detail)
네비게이터 | 드라이버 |
- 숲을 보는 역할 - 문제를 해결하기 위한 전체적인 방향을 제시 - 드라이버에게 직접적인 코드를 알려주기보다는 질문을 통한 유도 - 드라이버의 코드 중 실수가 보이면 바로바로 피드백 |
- 나무를 보는 역할 - 네비게이터와 함께 문제를 해결할 수 있는 방향을 고민 - 네비게이터가 제안하는 방향에 따라 구체적인 문제해결 방법을 생각하여 코드를 작성(단, 코드에 대한 설명이 가능해야 함) - 네비게이터의 의견에 동의하지 않더라도 합의점에 도달하도록 충분한 소통 진행 |
페어프로그래밍 주의사항
-늦거나 불참은 금기
-연락이 되지 않는다면 이슈쉐어링으로 공유 후 솔로로 진행
-기본적인 예의 지키기, 개인정보를 묻는 등
- 과제 시작전 페어와 충분의 논의
- 페어와의 실력차에 실망하거나 낙심하지 말것
- 문제가 풀리지 않는다면 각자만의 시간을 가지기
4. 의사코드 작성하는 방법
- 의사코드(슈도코드(pseudo code))란?
프로그래밍 언어로 작성하기 전에 무엇을 어떤 과정으로 진행할것인지 사람의 언어로 작성하는 작업
- 한 컴퓨터를 공유하기 때문에 정확하게 어떤 동작을 어떻게 구현할것인지에 대한 생각이 필요하다. 이것을 글로써 작성해서 목표 및 목적을 좀더 분명하게 표시하고 페어프로그래밍 전 가장 기본 단계라고 생각한다.
PS>
- TIL
TIL이란? Today I Learned. 오늘 내가 학습한 것들을 기록하는 방법
- SQ3R활용
Survey : 목차를 보고 훑어보기
학습할 유닛을 훑어봅니다.
Question : 질문하기
훑어보는 와중에 질문을 합니다.
"이것을 왜 배울까?"
"어디에 쓰일까?"
"어떻게 쓰일까?"
Read : 궁금한 점을 찾았으니 적극적으로 읽기
스스로 질문한 것을 중점으로 읽고, 자신의 질문에 답을 내려봅니다.
Recite : 책을 덮고 최대한 무슨 내용이었는지 소리내어 말해보기
이 개념은 왜 배웠는지, 어디에 쓰일지, 어떻게 쓰일지 생각 & 말로써 정리합니다.
Review : 기억한 것이 맞는지 확인하기
우리 스스로 답을 내렸을 때, 그 답이 맞는지 확인해야합니다. 확인하는 방법은 여러가지가 될 수 있습니다.
- 테스트, 검색, 아고라 스테이츠(질문) 등
'ing' 카테고리의 다른 글
웹 개발 용어정리 (0) | 2024.02.20 |
---|---|
웹 서비스 이론 (0) | 2023.08.22 |
Section 1-2 웹 개발 기초(2) (0) | 2022.10.21 |
Section 1-2 웹 개발 기초(1) (0) | 2022.10.21 |