프로그래밍 어떻게 공부할까 ?

코드위의승부사·2019년 12월 14일
1

연습량이 중요하지만 이 연습량을 어떻게 효과적으로 사용할 수 있을까?

의도적 수련

의도적 수련이란?
: 잘 정의된 작업, 적절한 난이도, 정보가 풍부한 피드백, 반복과 실수 교정의 기회

SQ3R 방법론
: Survey(훑어보기), Question(질문 정리), Read, Recite(안보고 적어보기), Review(기억한게 맞는지 확인하기)

Detailed
ex)
어떤 프로그램을 완성하겠다,
어떤 어떤 값도 테스트 해보겠다,
안 짰던 코드를 검토하며 이번주의 패턴을 최소 세 군대 이상 적용해보자

  • 목표지향보다 행동지향적으로(살 빼자가 아니라 줄넘기 몇 개 하자)
  • 이걸 배워서 뭘 만들어보자(SQ3R)
  • 작게 만든 후 키우기

양 과 질

쉬우면 어렵게 만들어 공부하고, 어려우면 쉽게 만들어 공부한다.
코딩한 것 중에 실수한 게 있다면 기록하자
결과 피드백보다 과정 피드백이 낫다
액션과 피드백 사이의 시간을 줄여라
프로그램에서 테스트(컴파일러, 단위테스트(30분단위), 코드리뷰, 동료, 커뮤니티)

알고리즘 디자인 실력 향상방법

  • 어려운 문제를 푼 후에 처음부터 새로 푸는 것, 해법의 통찰만을 유지
  • 해법이 내가 원하는 만큼 명료하고 직접적일 때 까지 반복,
  • 비슷한 문제를 공략할 일반적인 규칙 찾기
  • 주어진 문제를 완전 처음부터 최고로 효율적인 방향에서 접근하도록 이끌어줬을 그런 규칙을 찾는것

질보단 양이다!

프로그래밍에선 같은걸 다르게 다른 맥락에서 여러번 해보는게 좋다. 실수를 많이 해야 한다.

과거에 어댑터 패턴을 적용하면 좋았을게 뭐가 있을까 고민 -> 현재 연습 -> 정리

효율적인 학습법

비효율적인 학습

  • 같은 자료를 반복해 읽기(term을 길게 둘 경우 괜찮다)
  • 밑줄 긋기
  • 요약하기(보지않고 하는것은 효과적)

효율적인 학습

  • 읽은 부분에 대해 왜 그런지 자문해보기
    (실제 경험 관련해 설명, 왜 에러가 났는지 우선 코드를 보기전에 상상해서 스스로에게 설명해봄 -> "전이효과"
    전이를 높이기 위해선 어떤 문제를 풀었을 때 그 문제에서 살짝 추가기능을 더해서 풀어봄)
  • 섞어서 공부하기
  • 연습시험 치기(기억해서 쳐보기, API 외워서 쳐보기) Cornell Note
  • 분산연습 : 1시간씩 공부해서 중간 중간 테스트 하는것 Anki(Spaced Repetition Software)
  • 새로운 정보가 이미 아는 것과 어떻게 관련있는지(혹은 문제 푸는 단계를) 설명해보기

SW개발자에게 중요한 주제들

특정 프로그래밍 언어들, 자료구조, 소프트웨어 디자인과 패턴, 소프트웨어 아키텍쳐, 요구사항 수집 및 분석, HCI(Human Computer Interaction) 및 유저 인터페이스, 객체 지향 기술 및 개념, 직업윤리와 프로페셔널리즘, 분석 및 디자인방법, 청중에게 프리젠테이션, 프로젝트 관리, 테스팅 검증및 QA, 알고리즘 설계, 기술적 글쓰기, 운영체제, 데이터베이스, 리더쉽, 형상 및 릴리즈 관리, 데이터 전송과 네트워크, 경영

Reference

profile
함께 성장하는 개발자가 되고 싶습니다.

0개의 댓글