성공하는 프로그래밍 공부법 서평

Sorbet·2021년 2월 19일
1

서평

목록 보기
1/1


인트로

  • 세상은 날마다 변하는데 학교와 교도소는 내적(수업방식)으로도 외적(건물외관)으로도 변한게 없다.
  • 이런 "당연"하게 치부되는 권위 교도소와 교도관의 권위와 교편의 권위에 무조건적인 굴종이 아니라, "동의되지 않는 권위에 굴복하지 마라" 라는 어느정도의 능동성이 필요함
  • 교육자 중심의 "교육"이 아니라, 앞으로는 학습자 중심의 "학습"으로 나아가야 한다(심지어 정부부처 이름도 "학습부"가 아니라 "교육부"이다 뭔가 push --force한 느낌이 난다)

기존 교육에서의 프로그래밍 학습의 문제점

  • 기존교육에서 느끼는 가장 큰 단점은
    • 이론적인 기반 지식이 부족하다고 항상 느끼고
    • 이론을 바탕으로 뭔가를 생산해내거나 새로 만들기에는 불안해지고
    • 이론공부가 너무 재미가 없는경우, 학습에서 부정적인 감정을 느끼고
    • 공부 자체가 싫어지는
  • 중요한건 교육자의 교육이 아니라, 학습자 스스로 주도적인 학습인데 잘 생각해보면 어떤 인강강사가 얼마나 잘 가르치냐가 아니라, 스스로 어떻게 얼마나 공부하냐가 중요하다 라는 부분을 저자는 강조한다.
  • 스스로 어떻게 학습할까? 저자가 제시하는 답은
    • 역량을 쌓는데, 이런 능력이지 지식이 아니다
      • (삶의 문제들은 퀴즈쇼나 4지선다가 아니기 때문)
    • 역량을 쌓기 위해서는 양질의 경험을 해야되고,
      • 양질의 경험이란 : 해결,소통,협력을 통해 어떤 문제를 자기만의 방식으로 풀어내었던 과거 사례
    • 그리고 마지막으로 가장 중요한건 "동기부여"와 "자기효능감" 인데 이건
      • 작은 성공에서부터 하나씩 "하면된다" 와 하니까 된걸 바탕으로 "할만하네? 재미있네 라는 심리적 보상" 심리적 보상을 얻기 위해 더 열심히 해내는 동기부여가 필요하다

결론적으로 어떻게 해야하나면

  1. 순서 바꾸기
    • 기존의 방식이
      • 이론을 먼저 배우고
      • 그다음에 실습을 했다면
    • 적어도 프로그래밍 세계에서 만큼은..
      • 목표를 먼저 제시하고
      • 스스로 목표에 도달하기 위해서 실습부터 해내고 나면
      • 그다음에 이론에 대해서 배우는
    • 교육의 순서만 바꿈으로써 진짜 코딩공부를 할수 있다
  2. 그리고 공부법은
    • 위 방법도 포비 개인의 생각일뿐, 공부법은 사람마다 맞는 방식이 다 다르다
    • 단하나 중요한게 있다면 동기부여인데,
      • 단순히 피교육자가 배우고자 하는 의지가 있다 없다가 아니라
      • 학습하고자 하는 사람의 상태가 어떤지, 기본지식이 얼마나 있는지 아니면 아예 없는지
      • 누구와 함께 공부할 수 있는지, 투자할 여력이나 시간이 얼마나 되는지 등도 중요한 요소임
  • 이 책을 통해서 전하고싶은 부분은
    자신만의 공부법을 찾고 >> 다른사람의 성공이 아닌, 당신들만의 성공을 해내기를 바라는 마음에서 글을 씁니다

동의되지 않은 권위에 굴복하지 않기

  • 이 모든 이야기는 제목처럼, 프로그래밍 공부에 한정
  • 지식중심의 공부법은 똥이야!
  • 뭔가를 만들어내는 코드를 만들어내는 사람이라면 적어도 목표를 완수했을 때 성취감은 있어야 해
  • 목표목표 하는데 목표가 뭔지 궁금하니?
    • 목표란, 니가 만들고싶은거,해결하고 싶은 현실의 문제를 목표라고 해
  • 실현가능한 목표를 설정하고 계속 시도하고 실패하고 피드백하고 - 시도하고 실패하고 피드백하고 ... 이 과정을 반복하다보면 언젠간 도달할수 있는 곳이 목표고 성공이야

핵심목표 : 목표로 가는 길에서

  • 과제가 너무 많고 힘들어요
    • 이런경우가 있을꺼야
      • 과제(업무) 가 너무 어려워요 ㅠㅠ
      • 공부를 하세요
      • 공부하려면 목표달성을 해야되요
      • 목표달성하려면 과제(업무)를 하세요
    • 이런게 반복되는 악순환이 일부 전공자, 국비학원이나, 혼자 공부하는 많은 사람들에게서 나타나는데 이건말야
      • 이 과제의"핵심목표" 가 뭔지 파악하고
      • 그 핵심목표만 달성해라
        • 예를들어서 "git으로 베이스소스 받아서 java로 구구단좀 만들어라" 라는 주문이 있다면, 핵심목표가 git인지 Java코딩인지 핵심만 파악해서 거기에 집중하라는 말임
  • 이 책에서또, 포비의 말만 절대적으로 신뢰하지 말고 자신만의 방법 자신만의 길을 찾아가라는 말을 하는데

동기부여

  • 동기부여는 회사에서도 필요한건데
  • 좋은회사라면 구성원의 성장을 위해서든 물질적 보상이든 심리적 보상이든 간에 피드백을 통해서 열심히 하고자 하는 동기를 끊임없이 불어넣어 주는데,
  • 반면 구린회사라면, 심리적이든 물질적이든 보상은 하나도 없이 그냥 강압적으로 프로세스, 일정, 회사 구조적으로 개인들에게 끊임없는 채찍과 강요를 통해서만 업무를 진행한다.
    • 이렇게 회사를 운영하는 경우 똑똑한 사람은 회사를 떠나고, 떠나지 못하는 사람만 회사에 남게 된다.
  • 결국 일만 만드는 회사는 아무도 그 일을 할수 없게 되 망하고 만다

뉴비를 도와주고 싶어도 그게 잘 안되

  • 아래 순서는 뉴비들을 도와주고싶은 착한 개발자가 있어도 도와주기 힘든 사이클인데
    • 뉴비 : @@@@이게 안되요 도와주세요
    • 고수 : AA는 해보셨어요? 이 상황이 B에서 A가는건데 왜 이걸 하는거에요? AA와 B, A의 차이는 알고계세요? 뭘 모르시는거에요?
    • 뉴비 : 다 안되고 다 뭐가뭔지 모르겠어요
    • 고수 : 뭐하자는거아 ㅅㅂ
  • 천리길도 한걸음부터, 회사에서 웹페이지가 필요하다고 해서 C언어 개발자가 단숨에 Spring Boot로 웹페이지를 만들순 없다.

개발자로 취업하고 싶니? 그러면 이게 필요해

  • 깊이있는 경험이 필요해
    • 문제의 본질을 파악하는 insight
    • 인사이트 바탕으로한 자기만의 해결책
    • 해결하고 난 뒤에 도전,성취, 즐거움
    • 혹은 실패의 좌절, 어려움, 나만의 극복방법

프로그래밍 공부의 어려움

  • 동영상 링크 : 포비
  • 한줄요약 : 죽음의 골짜기

골짜기를 너머 개발자로 도약하기 위해서는

  • 1단계
    • 작은 성취감에 지속적으로 맛보기
    • 두려움 대신, 자신감과 즐거움
  • 2단계
    • 분야를 옮겨다니면서 수박 겉핧기 X
    • 새로운 분야로 바꾸지말고 내 분야에 집중하기
    • 많은걸 조금씩 하기는 노노! NO XXX
    • 하나만이라도 제대로
  • 3단계
    • 절망의 극복
    • 목표설정 , 집중
    • 끝까지 해내기, 묵묵하게
    • 영과후진 : 물은 웅덩이를 만나면 채우고 비로소 나아간다

조그마한 부분이나 단윈 공부법

  1. 필요한 부분만 일단 흡수하고
  2. 전체적인 그림과 내가 필요한 부분이 어딘지를 파악하고
  3. 끝에서부터 차례대로 끝에서부터 처음까지 공부한다

의식적인 노력이 필요해

  • 한가지 일을 오래동안 반복하면 잘한다는건 착각이자 오해
    • 양치질을 20년동안 한다고 해서 양치질을 잘하는건 아니잖니?
  • 의식적 노력으로 실력을, 한계점을 극복하고 돌파하는 능력이 필요함
  • 어떻게? (by 1만시간의 재발견)
    : 목적의식을 가지고 제대로 된 연습
    • 명확하고 구체적인 믹표가 필요하다
    • 집중하자
    • 멘토에게 피드백을 받자
    • 의도적으로 불편해지자 : 내 실력 범위안에서만 놀면 편안하다, 내 실력의 135% 정도 되는 불편한부분, 컴포트존에서 벗어나자

포비의 추천 : 의식적 노력으로 TDD, 리팩토링, OOP 학습

  • 학습자의 수준에 맞는 난이도와 요구사항을 갖춘 문제로 연습하자
    • 1) 명확한 요구사항
    • 2) 의존관계가 적은(DB, 프레임워크 등이 없는)
    • 3) 복잡한 로직이 있는 (체스룰, 바둑룰, 오목룰), 그러나 명확한 규칙이 있는

어떻게 연습할 것인가

  • 혼자연습하는 경우 / 그룹이서 같이 연습하는 경우
    • 혼자하면 방향성을 잡기 힘드니까 조금더 엄격한 기준을 두고 연습해라
    • 여럿(그룹)으로 연습하면 서로서로 피드백 줘가면서 연습해라

제약사항을 두고 연습하자

by 소트웍스엔솔로지, 객체지향 생활체조 9가지 원칙

  1. 메소드 분리의 원칙
  • 한 메소드에는 오직 한단계의 들여쓰기만 한다
  • else 예약어를 사용하지 않는다
  • 메소드는 10 라인을 넘지 않는다
  1. 객체 분리의 연습
  • 모든 원시값(프리미티브 타입 상수)과 문자열을 포장한다
  • 모든 엔티티를 작게 유지한다(엄청나게 큰 덩어리의 데이터 보관 X)
  • 3개 이상의 인스턴스 변수를 가진 클래스를 만들지 않는다
  • 일급 콜렉션을 사용한다
  1. OOP, 클린코드 적용
  • 한줄에는 점을 하나만
  • 줄여쓰기를 하지 않는다(축약금지)
  • 게터, 세터, 프로퍼티를 하지 않는다

그룹연습으로 더 빠르게 성장할 수 있는데

  1. 그룹을 구성하고
  2. 상호코드리뷰
  3. 리팩토링 && 피드백
  4. 코드 퀄리티 향상 && 피드백 반영 및 개선
  5. 234 > 234 > 234 > 234 > 234 반복

프로그램, 프로젝트는 생물과 같다!

  • 모든 변화를 기획단계에서 알 수 없고, 모든 변경사항을 개발단계에서 대응할 수 없다.
  • 빠르게 요구조건에 대응하기 위해서는 TDD, 그리고 리팩토링이 필요하다!
  • 요구사항이 변했을때, 잘 대응하기 위해서는 작은 테스트케이스 하나 추가하는것부터 연습하자

의식적인 노력을 통해 성장하자!

혼자 공부할때 실패하는 이유들

  • 로드맵이 없다
  • 확신이 없다(이길이 맞는지, 이렇게 하면 되는건지, 되긴됬는데 누구하나 피드백해줄 사람이 없어서 힘듬)
  • 그래서 필요한, 코칭과 피드백, 커뮤니티 활동, 그리고 가장 중요한 멘토

From 1만시간의 재발견의 의미 : 당신에게는 멘토가 필요하다!

  • 성장하고 성공하기 위해서 가장 필요한건 : 좋은 멘토, 그리고 좋은 멘토의 조건은
    1. 최고는 아닐지라도, 적어도 숙달된 사람이 필요해
    2. 가르치는거에 경험과 기술이 있어야함
    3. 제자 혹은 동료들을 봤을때 그들이 내가 바라는 워너비의 모습이어야 함
    4. 멘토에게 질문하고 답을 꼭 들어어야 할 부분
    • 어떤걸 공부해야하는지, 공부 주제 구체적으로
    • 어디를 집중하고 주의해야하는지
    • 실수는 어떤걸 방지해야하는지
    • 잘 해냈을 때에는 어떻게?

커뮤니티와 그룹스터디를 통해 성장하는법

당신에게 그룹스터디를 꼭 추천하는 이유

  • 불편함
    • 그룹커뮤니티가 공부효과가 좋은 이유는 불편해서이다
    • 인간은 당연하게 혼자있으면 목표를 낮게잡고 편안해지려고 한다 본능이다
    • 그래서 그룹스터디를 통해서 불편함을 느끼는데, 니 역량의 135%이상의 퍼포먼스를 요구하기때문에 그렇다. 이걸 거부감 느끼면 영원히 성장할수 없다. 불편하지만 버티고 해내라
  • 편견타파
    • 혼자 공부할때 잘못된 지식의 틀을 깨는건 불가능하지만, 다른사람들과 함께 논쟁, 토론을 통해서 지식의 틀을 깨고 진실에 다가갈 수 있다.
    • 나의 관점에서 바이어스된 지식만을 접하다 보면 위험하다
  • 생각의 차이
    • 남녀성비, 나이, 경력 등 다양한 포지션에 있는 사람들이 서로 다른 생각과 관점을 갖으므로 좋다 (다양성이 경쟁력이다)
    • 새로운 관점과 시각을 얻어 새상을 바라볼 수 있다.
  • 커뮤니케이션 능력에 도움
    • 회사가서도 프로젝트마다 다양한사람과 일을 같이 하기때문에,새로운사람과 의사소통을 하고 약간의 적당한 친목을 쌓으면, 활발히 토론할 수 있고, 신뢰도 쌓을수 있고, 커뮤니케이션 능력 배양에 좋다
    • 우연찮은 스터디 친목이 나중에 회사 구할때 도움이 될 수도 있다!
    • 사람강점을 키울수 있는 좋은 기회

스터디에서만 얻을 수 있는 것들

  • 회사의 단점을 극복할 수 있다.
    • 개인과 역량의 전문화 분업화가 단점
      • 일을 하면서, 재미를 느끼지 못한다.
      • 근로자가 부품으로 전락해버림
    • 노동의 다른 관점
      • 고용주 : 비용지출의 한 항목
      • 비효용 : 최대한 노동에 투입하는 시간을 줄이는게 합리적임, 회사에서 추가근무에 대한 보상이 없다면, 근무란 단순히 개인의 여가와 안식을 뺏어가는 희생일 뿐이다.
  • 불교의 관점에서의 노동으로 변화해라
    • 재능울 활용하고 발전시킬 수 있는 기회
    • 협력을 통한 자기중심성 극복
    • 새로운 가치를 창출 할 수 있음.
  • 이외에
    • 전문화된 특정 영역뿐 아니라 다른 부분에 역량을 쌓을 수 있다.
    • 소프트웨어 전체 분야를 볼 수 있는 기회
    • 자본가의 논리로 일을 접근하지 않고
      • 노동의 존엄성과
      • 자율적으로 뭔가를 생산해낼수 있는 기회
    • 잡무에 시달리지 않고 몰입할 수 있음

목표를 달성하는법

  • 짧은기간 작고 정확한 목표 설정하고 도달하기
  • 챕터별 주제 정해서 공부하기
  • 실패하지 않는법은 그냥 하는것 Just do! Just start!
  • 작은 성공이 모여 큰 성공을 이룬다. 당장 아침에 일어나 상쾌한 하루를 시작해라
  • 꾸준함 졸라 꾸준히 살아라

내 느낌점

  • Do!! 3.1절 새벽두시인데 내일 또 열심히 달려야하니 빨리자야겠다 !
profile
Sorbet is good...!

0개의 댓글