코포자를 위한 코딩 공부법 #1

기초가 되어있는 상태에서는 취업은 가능한 빨리하자!

  • 기본 알고리즘, 문제 해결 능력, 프로그래밍 기초
  • 기초가 안되어 있는 상태에서 취업을 하면 앞으로 실력이 안늘기 때문에 취업을 해도 아무 의미가 없다.
  • 기초의 기준은 자바의 정석 이해하고 5~6회독

대학입시 != 취업

  • 대학입시는 실력에 상관없이 붙으면 장땡이지만 취업은 무조건 실력이 있어야한다.
  • 취업을 대학입시처럼 들어가기만을 위해 공부하면 미래는 없다.
  • 개발자는 어디에서 일하는지가 중요하지가 않다. 본인의 실력과 경력을 잘 관리하면 어디든 갈 수 있다.
    • 너무 다른 사람과 비교하고 보여주기 위해 대기업을 추구할 필요는 없다.
    • 앞으로 개발자를 하게 되면 20~40년은 일하게 되는데 대기업은 언제든 갈 수 있기 때문에 경험에 중심을 두자
    • 처음에 좋은 회사 갔다고 잘풀리는 것도 아니다.
  • if 돈과 시간만 있다면, 누구나 프로그래머가 될 수 있다? YES!
  • 개발공부를 하는데 있어 상위 30%는 3개월, 상위 60~70%는 6개월, 상위 80%는 1년, 하위 20%는 1년+a이 걸린다.
    • 상위 60~70% 안에 들면 적성이 충분히 있는 경우

글쓰기 == 코딩

  • 생각 정리 & 표현(80%), 코딩(20%)
    • 코딩이 아닌 생각 정리 & 표현를 잘하는 사람이 개발을 잘하는 사람이다.
    • 생각 정리 & 표현은 상위 60~70%인 사람은 1~2달 매일 12시간 씩 대략 360~700시간 정도하면 잡힌다.
  • 코딩이 적성에 맞는 사람은 자바의 정석 5장 까지 한 달안에 끝낸다, 매일 8시간 씩 한달 동안 대략 240시간 정도
    • 변수, 연산자, 조건문, 반복문, 배열
    • 6, 7장 OOP -> 규칙, 용어는 요약해서 암기해야합니다. 최소 5번은 읽어야하고 추후에는 계속 반복해야한다.
    • 1~5장 진도를 나가면서 6, 7장 틈틈히 보기
  • 적성도 변한다. 자기가 없다가도 노력에 의해서 생긴다.
  • 간절하게 방법을 찾아서 공부해야한다.

공부방법

  • 오감을 최대한 활용하자 (시각, 청각, 촉각)
  • 자주, 빠르게 반복
    • 단기 기억을 계속 반복해주지 않으면 쓰레기가 된다. 반복적으로 공부해서 장기 기억으로 가져가자
    • 복습이 매우 중요하다. 하루에 한 시간, 아침에 30분 저녁에 30분
    • 전체 복습은 시간 여유가 있을 때
  • 운동뇌 : 몸이 기억하는 것 -> 실습이 중요한 이유이다. 하나하나 다 타이핑하자
    • 술먹고 꽐라되도 집에 잘 찾아가는게 운동뇌 때문이다.
    • 코딩은 운동뇌가 실력이다. 이해가 안되면 copy해서 운동뇌의 힘을 기르자
    • 10번 타이핑해서 효과가 없으면, 20번 타이핑하면 된다.
    • 악기하는 사람들이 청중이 많아서 머리가 하얘졌는데도 근데도 연습을 많이 한 사람은 멘탈이 나가도 몸이 움직이고 있다.

코포자를 위한 코딩 공부법 #2

자바 웹 개발자 학습 루틴

  • 자바 언어 습득
  • JSP, Servlet -> Web 관련지식
    • 게시판 같은거 만들지 말고 기본만 간단히 하고 넘어가자
    • Cookie, Session, include, event listener, forward, redirect, EL(Expression Language), JSTL(JavaServer Pages Standard Tag Library)
  • Spring -> OOP, 디자인 패턴
    • 스프링은 사용 방법을 먼저 익히고 그 다음에 원리를 이해하는 방향으로 진행

자바의 정석 기본

  • 자바의 정석 5~6회 정독 필수
    • 정독 기준은 실습 + 연습문제 풀이
    • 요약은 전부 암기하기
  • 문제풀이 하루에 1~2문제 하루종일 틈틈히 시간두고 풀기
    • 안풀리는거 하루 종일 생각해보기
    • 응용은 처음엔 안되는게 당연하기 때문에 기본기 반복을 많이 하자

자바의 정석 학습방법

  • 예제 그냥 따라치고 결과확인 하기
    • 새로운 것 받아들이는 시간이 필요하기 때문에 한번에 이해하는데 시간이 걸림
    • 가볍게 보고 반복해보면 이해가 된다.
  • 예제 조금 변경하기
  • 예제에 주석 달기
  • 코드 삭제하고 주석만 보고 코드 작성하기
  • 문제 보고 주석을 먼저 작성하고 코드 작성하기
    • 위 과정이 시험이 아니기 때문에 책보면서 해도 된다. 그리고 제일 쉬운거 부터 작성해도된다.

문제 풀이 학습 자세

  • 문제를 풀 때 정답을 못맞춰도 된다. 답을 맞추는 거는 중요하지 않다.
  • 문제를 푸는 과정, 고민 시간에 얼마나 들였는지가 중요하다.
    • 과정이 좋고 고민 시간이 많아야한다.
    • 종이에 낙서, 욕, 그림 등을 적고 그리면서 생각하자
    • 그렇게 하면 왜 안풀리지? 어떻게? 질문을 던지면서 명확해지고 머리가 가벼워진다.
    • 머릿 속에 있는 지식을 꺼냈기 때문에 가벼워 지고 여유가 생겨 문제를 객관적으로 바라 볼 수 있다.
  • 문제의 정답과 달라도 상관없다.
    • 정답은 이렇게 작성하는게 좋은 코드라고 제시해주는 것뿐이다.
    • 중요한 거는 나의 생각, 아이디어, 전략을 이용해서 코드를 작성했다는 것이 중요하다.
    • 비효율적인거? 상관없다 왜냐하면 코드는 많이 자주 작성할 수록 좋아지기 때문에
    • 코드를 처음 작성하는데 어떻게 효율적으로 작성을 하냐? 말이 안된다. 그냥 적자!
  • 문제를 적어도 30분 이상은 고민해보고 해결이 안될 때 답을 보자
    • 한번 이라도 봤던 답은 5회 이상 반복해서 풀자
  • 자바 oop는 책으로 공부해서는 안된다. 무조건 코드로 배워야 한다. 개념 책들은 나중에 보자
  • oop나 설계 책들은 나중에 경력이 쌓이고 코드를 많이 해보고 봐야 와닿는다.

코포자를 위한 코딩 공부법 #3

기초 핵심 역량

  • 기본 알고리즘
  • 문제해결능력
  • 생각 정리
    • 기초가 잘 되어 있는 사람은 기초를 제외하고 가르치면 되지만 기초가 부족하고 겉핣기로 공부한 사람은 어디서 부터 가르쳐야될지 알 수 없다. 기초가 매우 중요하다.

프로젝트 주제

  • 시간 없는데 주제 선정하는데 많은 시간을 보내지 말자
  • 쉽고, 익숙한 주제로 정하자
  • 프로젝트의 주제가 중요한게 아니라 안에 들어가는 기술이 중요하다.
  • 같은 주제라도 기술 난이도가 중요하다.

자바의 정석 공부법

  • 1 ~ 5장 30일 안으로 끝내기
  • 6, 7장 요약 외우기, 5회독 이상
  • 8 ~ 10장 가볍게하고 넘어가기
  • 11장 여러번 반복
  • 12장 가볍게하고 넘어가기
  • 13장(쓰레드) 가볍게하고 넘어가기
  • 14장(FP)
  • 15 ~ 16장(I/O, Networking)
    • 13 ~ 16장은 서버관련 내용, JSP, Spring과 연관된 내용
    • Java -> JPA -> Spring까지 큰 사이클 한번 돌기
  • 자바의 정석 어느정도 진행 되었으면 JSP, Spring으로 넘어가서 프로젝트 만들기
  • 자바하면서 HTML + CSS 실습 위주로 공부하기
    • 추가 가능하면 JavaScript까지 진행
  • 전체 사이클 : Java -> JPA -> Spring -> HTML, CSS, JavaScript

이력서

  • 스킬셋에 내가 얼마나 알고 있고 어디까지 해봤는지 적는게 중요
    • ex) Java, JPA, Mybatis, Springboot -> 이런식으로 적지 말자
  • 각 기술들을 얼마나 이해하고 있고 얼마나 활용해봤는지 알 수 있게 적어야한다.
  • 구체적인 내용을 선호한다.
  • Security를 사용하는 것도 중요하지만 보안에 대한 지식이 중요

Spring + Mybatis / Springboot + JPA 조합

  • Springboot + JPA 조합이 좀 더 쉽다. 제공하는게 많다.
  • Spring + Mybatis / Springboot + JPA 둘 중에 아무거나 해도 상관없다.
  • OOP를 얼마나 이해하고 활용할 수 있는지가 중요하다
  • 처음에는 사용법 먼저 익히고 나중에 원리 이해하는 방향으로 진행, 원리가 중요하다.
  • JPA의 베이스는 OOP, SQL 모델링
    • OOP와 SQL을 잘하면 JPA는 따라온다.
    • OOP와 SQL이 중요한거지 JPA가 중요한게 아니다.

JS(JavaScript), JAVA

  • JS ES6부터 class, getter, setter, 생성자 개념도 도입
    • JS는 OOP가 아니였는데 점점 OOP화 되어가고 있고 FP도 있음
    • 약타입 : 유연 -> 동적 언어
    • TS(타입스크립트) : JS + 타입 추가 -> 정적 언어
    • JS가 점점 java를 닮아가고 있다.
  • 자바도 OOP였다가 FP를 추가하였다.
    • 강타입 : 견고 -> 정적 언어
  • 타입은 기본형과 참조형이 있다.
    • 기본형 : 데이터, 값
    • 참조형 : 다형성, 제네릭스, 스칼라

언어

  • Java는 OOP가 쉽다.
  • C++은 OOP가 어렵다.
    • Java -> C - > C++로 진행하는게 좋다.
    • Java -> C++로 진행해도 된다.
  • C는 포인터가 핵심
  • Python은 OOP, FP 둘다 있음
  • JS를 배우고 나면 TS로 가야된다.
    • JS는 동적언어이고 TS는 정적언어이다.
    • OOP 개념이 약하다.
    • Java -> JS -> TS
  • 자바는 하위호환성, 안정성에 신경을 많이 쓰다보니 발전 속도가 느렸다.
    • 반면에 C#은 하위호환성을 포기함으로써 발전속도가 빨랐다.
  • Java는 취업에 유리하다.
  • Go, Rust는 신입 개발자에게는 취업자리가 적다.
  • 대중적이고 평범하게 시작해서 특정분야로 전문적으로 선택하는 방향으로 가자

주석

  • 가능한 많이 쓰자(초보일 경우)
    • 생각을 적고 머리를 가볍게하자
    • 생각을 정리하고 코딩하자
    • 머리로만 생각하는 것 보다 생각을 정리하고 적으면 실수가 줄어들고 명확해진다. 그리고 다른 사람이 그것을 참고하여 어디가 문제인지 조언을 들을 수 있다.
    • 주석을 달아주면 따로 설명할 필요없어 질문을 할 때에도 도움이 된다.
    • 커뮤니케이션 비용이 줄어들어야 답변을 해준다.
    • 그림을 그리면 협업, 리뷰 가능하고 확장이나 큰설계가 가능해진다.
  • 주석 최소화(고수일 경우)
    • 코드를 잘 적으면 주석 필요 없다.

글쓰기

  • 대단한 글쓰기라고 생각하지 말자
  • 생각, 감정을 글로 표현해봐야 표현력이 좋아진다.
  • 블로그를 꾸준히 적자
    • 자기 생각대로 공부한 내용을 정리하자
    • Copy 금지

공부 방법

  • 지속 가능 : 작은거 부터 시작해서 점진적으로 늘려가면서 진행하자
  • 틈틈히 : 자투리 시간을 활용할 수 있는 방법을 찾자
    • 일상생활을 개발과 연결할 수 있는 나에게 맞는 방법을 찾자
    • 워라밸은 스스로 성취하는 것이다.
  • 이해를 했다고 해서 내것이 된게 아니다.
    • 자신의 실력을 확인해봐야 하고 연습 & 반복해야한다.
    • 이해하는데만 시간을 쏟지말고 실습 시간을 늘리자. 실습이 중요하다.

개발자 직업

  • 남들보다 경쟁력이 있어야한다.
    • 자신이 남들보다 재능, 실력이 있어야 한다.
    • 남들이 하기 싫어하는 일을 잘해야 한다.

Reference

코포자를 위한 코딩 공부법 #1
코포자를 위한 코딩 공부법 #2
코포자를 위한 코딩 공부법 #3