개발 학습법들

김윤아·2023년 3월 21일
1

! 한번 읽고 지나갈 글들이 아니고 개발 공부를 하면서 개발자로 일 하면서 계속 읽어도 좋은 글들이다.

프로그래밍 학습 방법(영상)

프로그래밍 학습 방식 2가지

1.기초 지식부터 쌓은 후 무엇인가를 만들어 가는 학습방식
2. 무엇인가를 만들어 가면서 관련된 지식을 학습해 가는 방식

대부분 1번 방식으로 학습한다.
1번방식의 과정을 잘 소화하는 사람은 극히 일부이다.
자신이 어떤 방식으로 학습할 때 더 즐겁고 효과적인지 찾아야한다.

2번방식으로 하는 경우
자신이 만들고 싶은 프로그램(ex.구구단, 캘린더) 설정하고 만들어가면서 필요한 지식들을 하나씩 학습하면된다.

자신에게 맞는 책은 오프라인서점에서 구매. 2번방식으로 하면서 필요에의해 교재를 보며 학습하는 방식을 추천한다.

검색을 잘하려면 '용어'를 잘 알아야한다.

개발자가 공부로 살아남는 방법

공부란 뭔가에 사용하기 위해 "필요한 지식"을 습득하는 것이다. 목표, 만들고 싶은 프로젝트가 있다면 공부의 우선순위는 자동으로 정해진다.

자기 주관이 있어야한다. 자기 주관이 있는 사람들은 유행에 크게 흔들리지 않는다. 자신에게 필요한 것을 찾아서 공부하고 하고 싶은 공부를 한다. 내가 지금 어떤 것이 부족한 상황인지 스스로 끊임없이 질문해야한다.

학습에 실패한 이야기

프로그래밍 의식적 연습하기

  1. 학습 시작 전에 구체적인 계회과 목표 세우기
  2. 단순 타이핑 하지 않기 : 장기 기억에 비효율적
  3. 일정 주기로 반복하기
  4. 부숴도 좋은 장난감 만들기
    하나의 프로젝트를 만들때 많은 실행 오류를 겪게 되고 노력하게 된다. 적절한 학습의 난이도는 더욱 탄탄한 학습으로 이어진다.

왜 공부하는가

프로그램은 잘 동작해야하고 코드는 사람이 이해하기 쉽도록 작성되야한다.
이 목표는 학습의 우선순위를 정할 때 가장 먼저 고려 될 부분이다.

나는 어떻게 공부했는가?

효과적인 개발 공부법

  1. 해당 분야 커뮤니티 또는 전문가를 찾는다.
    트위터, 페이스북 활용

  2. 키워드를 줍는다.
    정의, 구성, 기능, 차용, 방법, 목적, 내용 등등을 바탕으로 키워드를 찾기

  3. 키워드를 바탕으로 어떤 공부가 필요할 지 청사진을 그린다.
    각 키워드가 무엇인지, 왜 사용되는지, 기존의 것과 무엇이 다른지, 특정 상황엔 어떻게 되는지, 구체적으로 무엇이 있는지, 어떤 모델이 있는지 와 같은 구체적인 질문을 하며 청사진 그리기

  4. 가용한 리소스를 최대한 활용하여 공부한다.
    책, 홈페이지, 인터넷 강의(인프런,udemy,udacity), 오프라인 강의, 세미나(트렌트 파악에 도움)

  5. 데드라인을 정한다.
    완료했다면 보상주기. 완료하지 못했다면 회고하기.

  6. 공부한 내용은 반드시 블로그에 정리한다.
    부족했던 것, 몰랐던 것, 알았던 것 구분하여 정리

개발자의 평생공부

개발자의 경우 3년 지식이면 낡은 징후를 보이기 시작하고 5년이면 생명을 다한다.
프로그래밍의 본질에 가까운 지식은 수명이 오래가고 파편적인 지식일수록 수명이 짧다.

개발자가 공부하는 것은 본질적인 능력을 키우는 것이다. 프로그래밍의 본질은 문제의 해결이다.
실력을 이미 알고 있는 지식의 총량이라고 착각해서는 안된다. 진짜 실력은 임기응변, 주변에 흔들리지 않는 집중력이고 해결해야 하는 문제가 무엇인지 알아채는 감각이다.

  1. 지금 다니고 있는 회사에서 하는 일을 잘하기 위해서 노력하는 것이 가장 좋은 공부다.
  2. 회사에서 하는 일과 개인적으로 공부하는 내용을 최대한 근접시키기 위해서 노력하라.
  3. 새로운 기술을 익히는 최선의 방법은 스스로 문제를 정의한 다음, 새로운 기술을 이용해서 그 문제를 풀어보는 것이다. 책을 읽거나 동영상을 보는 것은 그보다 하위수준의 방법이다.
  4. 신기술을 좇는 메뚜기가 되지 말라.
  5. 모든 것을 알아야 한다는 강박을 버려라. 미리 획득하는 지식의 99%는 무용지물이다. 필요할 때 필요한 기술을 익힐 수 있는 것이 능력이다. 그 능력을 키워라.
  6. 이상한 나라의 앨리스에 나오는 토끼굴(rabbit hole)을 피하라. 카테고리이론을 알아야 함수형 언어를 쓸 수 있는게 아니고, 선형대수학을 공부해야 머신러닝을 할 수 있는게 아니다. 토끼굴에 빠져서 한없이 들어가다보면 비본질적인 공부에 시간을 허비하게 된다.
  7. 겉만 핥는 것은 경박하지만 토끼굴에 빠지는 것은 우매하다. 둘 사이의 적당한 지점에서 균형을 잡는 것이 개발자의 능력이다.
  8. 머리에 들어오지 않는 어려운 개념이나 용어는 자투리 시간을 이용해서 반복적으로 읽고 암기하라. 나중에 큰 그림을 공부할 때 도움이 된다.
  9. 항상 겸손해야 하지만 동시에 자긍심을 가져라. 그대가 지금 작성한 코드, 지금 읽은 책, 지금 공부한 내용을 그대보다 잘 아는 사람은 지구상에 없다. 모든걸 알고 있는 것처럼 보이는 다른 사람들도 그대와 마찬가지로 불안해하고, 위축되고, 두려워하면서 살아가고 있다. 자긍심이란 그런 타인을 돕고자 하는 마음가짐의 다른 이름이다.

프로그래머로서의 성장을 도왔던 태도들

이론과 실습을 같이 해라

코드리뷰를 받아라
오픈 소스 프로젝트에 쓸만한 기여할 거리를 찾아 풀 리퀘스트를 날린다면 해당 프로젝트의 메인테이너들에게 코드 리뷰를 받을 수 있다. 또한 개인적으로 작성한 코드도 코드 리뷰를 받을 수 있다.

표준 라이브러리/API 읽어라
코드를 읽으며 왜 그렇게 했는 지 생각해라

세상은 변한다
소프트웨어는 녹슨다.
코드는 적게 짤수록 좋고 코드를 안짜도 되면 더 좋다.

다른 사람의 말을 의심해라

프레임워크 공부를 멈춰라

학습시간의 80%는 본질적인 것에 투자하고 나머지 20%를 프레임워크나 라이브러리에 투자해라

[책추천]
실용주의 프로그래머
클린 코드
클린 코더
도메인 주도 설계
테스트 주도 개발로 배우는 객체 지향 설계와 실천
지속적인 통합

[정리]
마이크로서비스 프레임워크(X) -> 진보적인 아키텍처(O)
새로운 프로그래밍 언어(X) -> 클린 코드, 디자인 패턴, DDD(O)
LeSS, SAFe(X) -> 린(Lean) 개발 원칙들
Hystrix(X) -> 장애 극복 패턴(O)
도커(X) -> 지속적인 배포(O)
앵귤러(X) -> Web, Http, REST(O)

개발자가 실력을 향상시킬 방법은 OO뿐이에요

개발자도 기획이나 디자인에 대한 공부를 해야한다.
실력을 향상시키는 것은 반복하는 것이다.
'숙련도'를 만들기

회사 밖에서 성장하기

이미 회사 밖이니까.. 취업하고 보자 ㅎㅎ

개발자는 어떻게 성장해야 할까

백엔드 관련 내용이 많긴한데.. 이직 이야기 나중에보자

어려운 것을 쉽게 배우는 방법

따라하기 - 샘프코드 겟 - 참고하면서 내꺼 만들기

내게 실용적이었던 프로그래밍 공부 방법들

챌린지 설정 - 공부 - 챌린지 수행 - 피드백 - 휴식
를 6~12개월 간격으로 반복

본문에 꿀팁들이 많다 가서 읽는 것 추천

더 나은 개발자가 되는 8가지 방법

가서 읽기

개발 배우기가 정말 어려운 이유

공부 시작하고나서 읽자

고퀄리티 개발 컨텐츠 모음

엄청나게 디테일한 내용들이 많다!!
공부하면서 참고하기 좋을 듯

개발자의 성장에 대한 이야기 (주니어, 기술, 팀, 이직, 자기PR)

1.스타트업-스탁옵션
2.창업
3.큰회사에서 실력있는 개발자로 인정 받기

1,2 는 제네럴리스트 3은 스페셜리스트

회사입장에서는 개인이 만든 제품보다 팀이 만든 제품을 좋아한다.

코딩하는 것 자체만 좋아하면 개발자로 빠르게 성장할 수 없다.
도구의 사용법을 제대로 익히기 - 언어나 프레임워크를 분석하자. (책, 인터넷 강의)
프레임 워크가 오픈 소스라면 소스까지 봐라.
오픈소스에 참여도 해봐라. 깊이가 중요
ex 리액트

경력 꼬일 짓은 하지 말아라.
가장 더디게 성장한다.

자기PR은 노력하는 모습을 보이는 것도 포함된다.
ex)기술 블로그, 유튜브

개발자를 꿈꾸는 취업 준비생에게

시작 및 탐색 단계 - 기간: 3~6개월
시작은 따라하기 식의 동영상이나 책을 활용해 프로그래밍으로 무엇인가 만들어본다. 이후 스스로의 힘으로 만들고 싶은 소프트웨어를 구현해볼 것을 추천한다.
최소 한 개의 프로그래밍 언어를 활용해 변수, 배열, 조건문, 반복문, 함수 정도는 자유롭게 사용할 수 있는 수준이 되어야한다.

교육 기관 활용 단계 - 6개월 전후
프로그래밍 학습에 대한 방향성을 잡고 같이 학습할 동료를 만드는 목적으로 활용해도 좋다.

심화 학습 단계 - 6개월 전후
추가적으로 학습해야 할 내용이 정말 많다는 것을 느끼는 시점이다. 교육 과정을 마친 대부분의 사람들이 이 시점에 취업을 한다. 하지만 이 상태에서 취업할 경우 성장과 배움보다 열악한 환경때문에 학습에 투자할 시간이 없을 가능성이 높다.

이 기간은 앞의 교육 과정에서 소화하지 못했던 내용을 보완하고 온전히 나의 것으로 체득하는 시간으로 만들어야한다. 즉, 지금까지 다향한 부분에 대해 얕은 학습을 했다면 이 단계부터는 특정 기술 하나하나에 대해 깊이 있는 학습을 해야한다. (본문 링크 참고)

취업 단계 - 심화 학습 단계와 병행
회사에 지원하고 면접을 보면 현장에서 요구하는 역량이 무엇인지, 내가 부족한 역량이 무엇인지 파악할 수 있다. 따라서 심화 학습 단계를 진행하다가 학습에 대한 동기 부여가 떨어지는 시점이나 약간의 자신감이생기는 시점에 면접에 도전해볼 것을 추천한다.

초보 웹 개발자를 위한 학습 안내서

꿀정보가 너무 많습니다.. 가서 보셔요

개발자로 일하기 위해 공부해야 할 것은? | 라인개발실록

나의 온라인 컴퓨터 공학 공부

너무 좋은 내용들 많음

0개의 댓글