인트로
- 세상은 날마다 변하는데 학교와 교도소는 내적(수업방식)으로도 외적(건물외관)으로도 변한게 없다.
- 이런 "당연"하게 치부되는 권위 교도소와 교도관의 권위와 교편의 권위에 무조건적인 굴종이 아니라, "동의되지 않는 권위에 굴복하지 마라" 라는 어느정도의 능동성이 필요함
- 교육자 중심의 "교육"이 아니라, 앞으로는 학습자 중심의 "학습"으로 나아가야 한다(심지어 정부부처 이름도 "학습부"가 아니라 "교육부"이다 뭔가 push --force한 느낌이 난다)
기존 교육에서의 프로그래밍 학습의 문제점
- 기존교육에서 느끼는 가장 큰 단점은
- 이론적인 기반 지식이 부족하다고 항상 느끼고
- 이론을 바탕으로 뭔가를 생산해내거나 새로 만들기에는 불안해지고
- 이론공부가 너무 재미가 없는경우, 학습에서 부정적인 감정을 느끼고
- 공부 자체가 싫어지는
- 중요한건 교육자의 교육이 아니라, 학습자 스스로 주도적인 학습인데 잘 생각해보면 어떤 인강강사가 얼마나 잘 가르치냐가 아니라, 스스로 어떻게 얼마나 공부하냐가 중요하다 라는 부분을 저자는 강조한다.
- 스스로 어떻게 학습할까? 저자가 제시하는 답은
- 역량을 쌓는데, 이런 능력이지 지식이 아니다
- (삶의 문제들은 퀴즈쇼나 4지선다가 아니기 때문)
- 역량을 쌓기 위해서는 양질의 경험을 해야되고,
- 양질의 경험이란 : 해결,소통,협력을 통해 어떤 문제를 자기만의 방식으로 풀어내었던 과거 사례
- 그리고 마지막으로 가장 중요한건 "동기부여"와 "자기효능감" 인데 이건
- 작은 성공에서부터 하나씩 "하면된다" 와 하니까 된걸 바탕으로 "할만하네? 재미있네 라는 심리적 보상" 심리적 보상을 얻기 위해 더 열심히 해내는 동기부여가 필요하다
결론적으로 어떻게 해야하나면
- 순서 바꾸기
- 기존의 방식이
- 적어도 프로그래밍 세계에서 만큼은..
- 목표를 먼저 제시하고
- 스스로 목표에 도달하기 위해서 실습부터 해내고 나면
- 그다음에 이론에 대해서 배우는
- 교육의 순서만 바꿈으로써 진짜 코딩공부를 할수 있다
- 그리고 공부법은
- 위 방법도 포비 개인의 생각일뿐, 공부법은 사람마다 맞는 방식이 다 다르다
- 단하나 중요한게 있다면 동기부여인데,
- 단순히 피교육자가 배우고자 하는 의지가 있다 없다가 아니라
- 학습하고자 하는 사람의 상태가 어떤지, 기본지식이 얼마나 있는지 아니면 아예 없는지
- 누구와 함께 공부할 수 있는지, 투자할 여력이나 시간이 얼마나 되는지 등도 중요한 요소임
- 이 책을 통해서 전하고싶은 부분은
자신만의 공부법을 찾고 >> 다른사람의 성공이 아닌, 당신들만의 성공을 해내기를 바라는 마음에서 글을 씁니다
동의되지 않은 권위에 굴복하지 않기
- 이 모든 이야기는 제목처럼, 프로그래밍 공부에 한정
- 지식중심의 공부법은 똥이야!
- 뭔가를 만들어내는 코드를 만들어내는 사람이라면 적어도 목표를 완수했을 때 성취감은 있어야 해
- 목표목표 하는데 목표가 뭔지 궁금하니?
- 목표란, 니가 만들고싶은거,해결하고 싶은 현실의 문제를 목표라고 해
- 실현가능한 목표를 설정하고 계속 시도하고 실패하고 피드백하고 - 시도하고 실패하고 피드백하고 ... 이 과정을 반복하다보면 언젠간 도달할수 있는 곳이 목표고 성공이야
핵심목표 : 목표로 가는 길에서
- 과제가 너무 많고 힘들어요
- 이런경우가 있을꺼야
- 과제(업무) 가 너무 어려워요 ㅠㅠ
- 공부를 하세요
- 공부하려면 목표달성을 해야되요
- 목표달성하려면 과제(업무)를 하세요
- 이런게 반복되는 악순환이 일부 전공자, 국비학원이나, 혼자 공부하는 많은 사람들에게서 나타나는데 이건말야
- 이 과제의"핵심목표" 가 뭔지 파악하고
- 그 핵심목표만 달성해라
- 예를들어서 "git으로 베이스소스 받아서 java로 구구단좀 만들어라" 라는 주문이 있다면, 핵심목표가 git인지 Java코딩인지 핵심만 파악해서 거기에 집중하라는 말임
- 이 책에서또, 포비의 말만 절대적으로 신뢰하지 말고 자신만의 방법 자신만의 길을 찾아가라는 말을 하는데
동기부여
- 동기부여는 회사에서도 필요한건데
- 좋은회사라면 구성원의 성장을 위해서든 물질적 보상이든 심리적 보상이든 간에 피드백을 통해서 열심히 하고자 하는 동기를 끊임없이 불어넣어 주는데,
- 반면 구린회사라면, 심리적이든 물질적이든 보상은 하나도 없이 그냥 강압적으로 프로세스, 일정, 회사 구조적으로 개인들에게 끊임없는 채찍과 강요를 통해서만 업무를 진행한다.
- 이렇게 회사를 운영하는 경우 똑똑한 사람은 회사를 떠나고, 떠나지 못하는 사람만 회사에 남게 된다.
- 결국 일만 만드는 회사는 아무도 그 일을 할수 없게 되 망하고 만다
뉴비를 도와주고 싶어도 그게 잘 안되
- 아래 순서는 뉴비들을 도와주고싶은 착한 개발자가 있어도 도와주기 힘든 사이클인데
- 뉴비 : @@@@이게 안되요 도와주세요
- 고수 : AA는 해보셨어요? 이 상황이 B에서 A가는건데 왜 이걸 하는거에요? AA와 B, A의 차이는 알고계세요? 뭘 모르시는거에요?
- 뉴비 : 다 안되고 다 뭐가뭔지 모르겠어요
- 고수 : 뭐하자는거아 ㅅㅂ
- 천리길도 한걸음부터, 회사에서 웹페이지가 필요하다고 해서 C언어 개발자가 단숨에 Spring Boot로 웹페이지를 만들순 없다.
개발자로 취업하고 싶니? 그러면 이게 필요해
- 깊이있는 경험이 필요해
- 문제의 본질을 파악하는 insight
- 인사이트 바탕으로한 자기만의 해결책
- 해결하고 난 뒤에 도전,성취, 즐거움
- 혹은 실패의 좌절, 어려움, 나만의 극복방법
프로그래밍 공부의 어려움
- 동영상 링크 : 포비
- 한줄요약 : 죽음의 골짜기
골짜기를 너머 개발자로 도약하기 위해서는
- 1단계
- 작은 성취감에 지속적으로 맛보기
- 두려움 대신, 자신감과 즐거움
- 2단계
- 분야를 옮겨다니면서 수박 겉핧기 X
- 새로운 분야로 바꾸지말고 내 분야에 집중하기
- 많은걸 조금씩 하기는 노노! NO XXX
- 하나만이라도 제대로
- 3단계
- 절망의 극복
- 목표설정 , 집중
- 끝까지 해내기, 묵묵하게
- 영과후진 : 물은 웅덩이를 만나면 채우고 비로소 나아간다
조그마한 부분이나 단윈 공부법
- 필요한 부분만 일단 흡수하고
- 전체적인 그림과 내가 필요한 부분이 어딘지를 파악하고
- 끝에서부터 차례대로 끝에서부터 처음까지 공부한다
의식적인 노력이 필요해
- 한가지 일을 오래동안 반복하면 잘한다는건 착각이자 오해
- 양치질을 20년동안 한다고 해서 양치질을 잘하는건 아니잖니?
- 의식적 노력으로 실력을, 한계점을 극복하고 돌파하는 능력이 필요함
- 어떻게? (by 1만시간의 재발견)
: 목적의식을 가지고 제대로 된 연습
- 명확하고 구체적인 믹표가 필요하다
- 집중하자
- 멘토에게 피드백을 받자
- 의도적으로 불편해지자 : 내 실력 범위안에서만 놀면 편안하다, 내 실력의 135% 정도 되는 불편한부분, 컴포트존에서 벗어나자
포비의 추천 : 의식적 노력으로 TDD, 리팩토링, OOP 학습
- 학습자의 수준에 맞는 난이도와 요구사항을 갖춘 문제로 연습하자
- 1) 명확한 요구사항
- 2) 의존관계가 적은(DB, 프레임워크 등이 없는)
- 3) 복잡한 로직이 있는 (체스룰, 바둑룰, 오목룰), 그러나 명확한 규칙이 있는
어떻게 연습할 것인가
- 혼자연습하는 경우 / 그룹이서 같이 연습하는 경우
- 혼자하면 방향성을 잡기 힘드니까 조금더 엄격한 기준을 두고 연습해라
- 여럿(그룹)으로 연습하면 서로서로 피드백 줘가면서 연습해라
제약사항을 두고 연습하자
by 소트웍스엔솔로지, 객체지향 생활체조 9가지 원칙
- 메소드 분리의 원칙
- 한 메소드에는 오직 한단계의 들여쓰기만 한다
- else 예약어를 사용하지 않는다
- 메소드는 10 라인을 넘지 않는다
- 객체 분리의 연습
- 모든 원시값(프리미티브 타입 상수)과 문자열을 포장한다
- 모든 엔티티를 작게 유지한다(엄청나게 큰 덩어리의 데이터 보관 X)
- 3개 이상의 인스턴스 변수를 가진 클래스를 만들지 않는다
- 일급 콜렉션을 사용한다
- OOP, 클린코드 적용
- 한줄에는 점을 하나만
- 줄여쓰기를 하지 않는다(축약금지)
- 게터, 세터, 프로퍼티를 하지 않는다
그룹연습으로 더 빠르게 성장할 수 있는데
- 그룹을 구성하고
- 상호코드리뷰
- 리팩토링 && 피드백
- 코드 퀄리티 향상 && 피드백 반영 및 개선
- 234 > 234 > 234 > 234 > 234 반복
프로그램, 프로젝트는 생물과 같다!
- 모든 변화를 기획단계에서 알 수 없고, 모든 변경사항을 개발단계에서 대응할 수 없다.
- 빠르게 요구조건에 대응하기 위해서는 TDD, 그리고 리팩토링이 필요하다!
- 요구사항이 변했을때, 잘 대응하기 위해서는 작은 테스트케이스 하나 추가하는것부터 연습하자
의식적인 노력을 통해 성장하자!
혼자 공부할때 실패하는 이유들
- 로드맵이 없다
- 확신이 없다(이길이 맞는지, 이렇게 하면 되는건지, 되긴됬는데 누구하나 피드백해줄 사람이 없어서 힘듬)
- 그래서 필요한, 코칭과 피드백, 커뮤니티 활동, 그리고 가장 중요한 멘토
From 1만시간의 재발견의 의미 : 당신에게는 멘토가 필요하다!
- 성장하고 성공하기 위해서 가장 필요한건 : 좋은 멘토, 그리고 좋은 멘토의 조건은
- 최고는 아닐지라도, 적어도 숙달된 사람이 필요해
- 가르치는거에 경험과 기술이 있어야함
- 제자 혹은 동료들을 봤을때 그들이 내가 바라는 워너비의 모습이어야 함
- 멘토에게 질문하고 답을 꼭 들어어야 할 부분
- 어떤걸 공부해야하는지, 공부 주제 구체적으로
- 어디를 집중하고 주의해야하는지
- 실수는 어떤걸 방지해야하는지
- 잘 해냈을 때에는 어떻게?
커뮤니티와 그룹스터디를 통해 성장하는법
당신에게 그룹스터디를 꼭 추천하는 이유
- 불편함
- 그룹커뮤니티가 공부효과가 좋은 이유는 불편해서이다
- 인간은 당연하게 혼자있으면 목표를 낮게잡고 편안해지려고 한다 본능이다
- 그래서 그룹스터디를 통해서 불편함을 느끼는데, 니 역량의 135%이상의 퍼포먼스를 요구하기때문에 그렇다. 이걸 거부감 느끼면 영원히 성장할수 없다. 불편하지만 버티고 해내라
- 편견타파
- 혼자 공부할때 잘못된 지식의 틀을 깨는건 불가능하지만, 다른사람들과 함께 논쟁, 토론을 통해서 지식의 틀을 깨고 진실에 다가갈 수 있다.
- 나의 관점에서 바이어스된 지식만을 접하다 보면 위험하다
- 생각의 차이
- 남녀성비, 나이, 경력 등 다양한 포지션에 있는 사람들이 서로 다른 생각과 관점을 갖으므로 좋다 (다양성이 경쟁력이다)
- 새로운 관점과 시각을 얻어 새상을 바라볼 수 있다.
- 커뮤니케이션 능력에 도움
- 회사가서도 프로젝트마다 다양한사람과 일을 같이 하기때문에,새로운사람과 의사소통을 하고 약간의 적당한 친목을 쌓으면, 활발히 토론할 수 있고, 신뢰도 쌓을수 있고, 커뮤니케이션 능력 배양에 좋다
- 우연찮은 스터디 친목이 나중에 회사 구할때 도움이 될 수도 있다!
- 사람강점을 키울수 있는 좋은 기회
스터디에서만 얻을 수 있는 것들
- 회사의 단점을 극복할 수 있다.
- 개인과 역량의 전문화 분업화가 단점
- 일을 하면서, 재미를 느끼지 못한다.
- 근로자가 부품으로 전락해버림
- 노동의 다른 관점
- 고용주 : 비용지출의 한 항목
- 비효용 : 최대한 노동에 투입하는 시간을 줄이는게 합리적임, 회사에서 추가근무에 대한 보상이 없다면, 근무란 단순히 개인의 여가와 안식을 뺏어가는 희생일 뿐이다.
- 불교의 관점에서의 노동으로 변화해라
- 재능울 활용하고 발전시킬 수 있는 기회
- 협력을 통한 자기중심성 극복
- 새로운 가치를 창출 할 수 있음.
- 이외에
- 전문화된 특정 영역뿐 아니라 다른 부분에 역량을 쌓을 수 있다.
- 소프트웨어 전체 분야를 볼 수 있는 기회
- 자본가의 논리로 일을 접근하지 않고
- 노동의 존엄성과
- 자율적으로 뭔가를 생산해낼수 있는 기회
- 잡무에 시달리지 않고 몰입할 수 있음
목표를 달성하는법
- 짧은기간 작고 정확한 목표 설정하고 도달하기
- 챕터별 주제 정해서 공부하기
- 실패하지 않는법은 그냥 하는것 Just do! Just start!
- 작은 성공이 모여 큰 성공을 이룬다. 당장 아침에 일어나 상쾌한 하루를 시작해라
- 꾸준함 졸라 꾸준히 살아라
내 느낌점
- Do!! 3.1절 새벽두시인데 내일 또 열심히 달려야하니 빨리자야겠다 !