[TIL] 코포자를 위한 코딩 공부법
코포자를 위한 코딩 공부법 #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 금지
공부 방법
- 지속 가능 : 작은거 부터 시작해서 점진적으로 늘려가면서 진행하자
- 틈틈히 : 자투리 시간을 활용할 수 있는 방법을 찾자
- 일상생활을 개발과 연결할 수 있는 나에게 맞는 방법을 찾자
- 워라밸은 스스로 성취하는 것이다.
- 이해를 했다고 해서 내것이 된게 아니다.
- 자신의 실력을 확인해봐야 하고 연습 & 반복해야한다.
- 이해하는데만 시간을 쏟지말고 실습 시간을 늘리자. 실습이 중요하다.
개발자 직업
- 남들보다 경쟁력이 있어야한다.
- 자신이 남들보다 재능, 실력이 있어야 한다.
- 남들이 하기 싫어하는 일을 잘해야 한다.