티스토리 뷰
Objective
1. CS Concept
2. 백엔드 로드맵 순서로 공부하기
3. 노션 정리한 내용 전부 돌려보기
4. 자료구조와 알고리즘
Result
1. '면접을 위한 CS 전공지식 노트' / '노션'에 정리한 내용 반복하기
*프로그래밍을 하는 것과 프로그래밍의 이론은 별개의 개념이 아니다. 둘 중 하나만 잘해서는 프로그래밍을 할 수가 없다. 둘 다 잘해야한다. 나는 이론 보다는 코드 작성하는걸 먼저 공부했는데 당장에는 이해가 됐지만 금방 사라지는 느낌이었다. 하지만 이론을 함께 공부하다보니 휘발성이 적어진다는 느낌을 많이 받았다. 결국 두가지는 함께 공부를 하는 것이지 어떤걸 우선 순위로 공부하거나 후순위로 두거나 할 문제가 아니라는 것이다.
*Network, OS, 자료구조 반복해서 보자.
*그 외의 MVC, DB는 현재 듣고 있는 Node.js 강의에서 후반에 다룰 것이니 이 때 듣고나서 보는게 좋을것 같다.
(MVC 패턴이라는건 디자인 패턴의 한 종류이고, 디자인 패턴은 개발자끼리의 예절인 것이다. 이는 내가 어느정도 개발 공부를 한 뒤에 봐야 금방 이해가 될 것이고 적용을 할 수 있을 것이다.)
2-1. Learn a Language -> Node.JS
-JS를 처음 공부했을 때 당장 코드 짜는 것부터 배우고 구현을 시키는데에 중점을 두고 공부했었는데 잘못 됐다는 것을 느끼고 Node.js를 공부할 때는 다르게 접근을 해보려고 한다. JS의 기본적인 특성도 모른채 공부를 하니 당장 이해는 되고 코드를 짜서 어떠한 기능을 구현시킬 수는 있었지만 본질적으로 JS를 이해하지 못하니 Logic을 짜는 단계에 와서야 잘못 되었다는 것을 알게 되었다.
-그래서 Node.js가 무엇이고 왜 많고 많은 언어 중에 JS와 연결되어 있는가에 대한 아주 기초적인 개념부터 Node.js가 어떠한 방식으로 동작하는지에 대해 먼저 공부하고 있다. 하루라도 빨리 Express.js나 DB를 공부하고 싶은 마음은 굴뚝 같지만 어느 하나도 제대로 못 한채 다른 것을 공부한다면 이도저도 안 될 것이다. JS의 부족한 점은 계속 보완하면서 Node.js 공부를 하나씩 해나가려고 한다.
*지금까지 공부했던 내용인 Module, npm, Node를 통해 server 만들기, 서버사이드렌더링, Rest API 등을 복습했다. 이제는 Node에 대해서는 강의가 끝난 상태이고 express 넘어갈 차례이지만 복습이 필요할것 같아서 복습을 했다.
*Event 마지막 부분이 좀 이해가 안 된다. 여러번 돌려봐도 이해가 안 되는데 일단 여긴 넘어가고 나중에 다시 듣기로 하자.
*express.js 배우기 -> 프로젝트 만들기 -> DB를 배우면 완성이다.
추가 강의에서 타입스크립트에 대한 간단한 강의가 있는데 내가 계획한 시간 내에 DB까지 완성이 된다면 스스로 프로젝트를 처음부터 끝까지 만들기를 진행하면서 같이 볼 수 있을것 같다.
2-2. JS에 대한 보충 공부 및 프로젝트
-Portfolio 웹페이지를 만들고 있다. 지금까지 했던 코드를 가지고 처음부터 아예 스스로 해볼 생각이다. 최대한 깔끔한 디자인으로 만들 예정이고 다른 사람의 사이트를 참고해서 만들어볼 예정이다.
*큰 뼈대는 완성해놓은 상태이고 contents를 정리해서 하나씩 만들어보자. git까지 사용해서 만들고 있고 github에 push까지 하면서 만들고 있다. 완벽하게 웹사이트를 만들 수 있는건 아니지만 이제는 Node.js를 통해 서버 쪽에 대해 더 많은 시간 투자가 필요하다.
*contests에 들어갈 내용들은 어느정도 정리가 됐다.
-call back, promise, Synchronous, Asynchronous와 관련된 부분들은 매우 중요하기 때문에 여기까지는 꼭 공부를 한 뒤에 넘어가는 것이 좋을것 같다.
(다만 항상 모든 것을 다 하려고 하다보면 오히려 독이 될 수도 있다. 내가 필요성을 느꼈을 때 공부를 하는게 맞다. 위 내용 이상으로는 새로운 개념을 발견하게 되더라도 개념까지는 알고 가는건 좋지만 깊이 공부하는건 좋은 방법이 아닌것 같다.)
=> 이론적인 부분을 꼼꼼하게 알려주는 강의를 찾았다. 가볍게 들어보니 JS에 대해서 조금 더 디테일한 내용을 담고 있고 중요하지만 지금까지 구현했던 기능에서는 사용하지 못했던 부분들까지 아울러서 설명하고 있다.
*callback fn은 이미 다른걸 해보면서 많이 익숙해진 상태고 동기 비동기도 마찬가지로 익숙해진 상태이다. promise는 접해보지 못해서 항상 아쉬웠는데 현재 promise에 대해 진행중이다.
*Promise를 제대로 이해하고 싶어서 계속 반복해서 보고 다른 영상도 참고하고 구글링도 하면서 공부를 하고 있다. consumer 입장에서의 promise는 이제는 이해했고 producer 입장에서의 promise만 이해하면 될것 같다.
-AJAX도 결과적으로는 브라우저에서 사용되는 기능인 것이고 JS와도 연관이 있기 때문에 공부를 할 예정이다.
*조금씩 듣고 있다. AJAX는 웹페이지의 일부분만을 바꾸기 위한 도구인 것이다. 일부분을 바꾸기 위해 전체를 다시 다운로드 하거나 리로드가 된다면 이는 자원 낭비이다.
2-3. Git and Terminal
*오늘은 진행하지 못 했다.
-git을 사용하다가 되돌아가는 방법에 대한 명령어를 배웠다. restore, revert, reset인데 reset은 실무에서든 혼자 개발을 하든 위험하기 때문에 사용하지 않는 것이 좋다. restore나 revert의 경우에는 commit ID를 통해 해당 commit 상태로 돌아가거나 staging 해놓은 것을 취소하는 등의 기능을 사용할 수 있다. 실제로 git을 쓰면서 궁금했던 부분이다. 진작 구글링을 해봤었지만 정확하게 공부를 하고나니 확실히 더 이해가 됐다.
*남은 내용이 얼마 없으니 얼른 마무리하고 Terminal에 대한 부분에 조금 더 집중해서 공부해보자.
-Terminal 관련해서 간단한 강의가 있는데 concept을 넘어 사용법까지 디테일하게 공부해야 하기 때문에 이것도 조금씩 공부해야한다.
*강의 자체는 다 들었지만, 주기적으로 복습하면서 실제로 사용도 많이 해보면서 익숙해져야 한다.
*그리고 Terminal 명령어에 대해서 많이 익숙해져야 한다. 따로 핵심적인 명령어를 정리해놓은걸 찾아서 공부하자.
3. Node.js 강의 듣고 있는거 정리한 내용 매일 보기 + JS 정리한 내용 복습
-JS를 공부하다보니 심화적인 내용을 할 수록 확실히 어렵다는 느낌을 많이 받는다. 그러다보니 정리한 내용들이 많다.
정리한 내용들을 읽다보니 다시 읽어보면 좋을 내용 / 다시 읽지 않아도 될 내용으로 나눠질것 같아서 나누면서 진행중이다. 정리한 뒤에는 앞으로 반복해서 볼 때 더 빠르게 볼 수 있을 것이다.
*CS는 'CS 전공지식 노트' 책에 훨씬 더 자세하게 정리되어 있는건 맞지만 노션에 따로 내가 정리한 것도 공부하기에 괜찮다고 생각이 든다. 생소한 내용이기에 스스로 최대한 쉽게 적어놨기 때문에 이해가 더 잘 되고 무엇보다 책과 연결이 되는 부분들이 하나씩 보이면서 빠르게 복습하기 좋은것 같다.
4-1. 유튜브 영상 노션에 정리한 내용 반복해서 보기
4-2. 관련 책 읽기
-그림으로 배우는 알고리즘
*이 책은 거의 다 읽어가는데 알고리즘이나 자료구조는 코드를 배우는 것과 별개의 문제가 아니다. 처음에는 이 책을 보면서 무슨 말인지 이해가 안 됐었는데 코드를 공부하다보니 이해가 되기 시작했다. 단순히 코드를 짜는 공부를 하는게 아니라 항상 왜 이건 이렇고 왜 이건 이렇게 되는지 어떻게 해야 더 좋은 방법인지 등에 집중을 하면서 파생되는 원리나 근본적인 문제들에 접근을 하다보니 조금씩 내가 알게 되는 범위가 늘어나게 됐다.
-간단한 알고리즘 문제를 하나씩 풀어보려고 한다. 여러 유명한 사이트가 많은데 프로그래머스가 당장에는 잘 맞는것 같아서 제일 기본적인 문제부터 천천히 풀어보려고 한다. 코딩테스트를 준비하기 위한 목적도 있지만 당장 어떤 프로젝트를 하나 만들거나 클론 코딩을 하는 것도 중요하지만 알고리즘을 공부해야 로직을 짜는데 있어서 공부가 될 수 있다고 생각이 들어서 조금씩이나마 시작해보려고 한다.
*프로그래머스 기초 단계부터 하루에 3-4 문제씩 풀고 있는 중이다. 초반에는 쉬웠는데 기초 단계이지만 꽤 어렵다고 느껴지는 문제들이 나오기 시작했다. 코딩테스트 준비 목적을 떠나서 이렇게 문제를 풀면서 직접 로직을 만드는 과정은 매우 의미있다고 생각한다.
*프로그래머스 0단계를 거의 다 풀었는데 다 풀고 다음 단계로 넘어가기 전에 한 번 정리가 필요할것 같다. 반복해서 보고는 있지만 어렵게 느껴진 문제들은 또 따로 정리가 필요할것 같다.
그리고 블로그에 프로그래머스 0단계 문제 풀이 글을 한 개 올렸다. 지금까지 문제를 풀다가 막히면 구글링을 했는데 조금 더 쉽게 설명된 글이 있다면 좋을것 같다는 생각에 최대한 쉽고 직관적이게 작성해보려고 한다. 물론 지금 공부할게 많아서 매일 올리기는 힘들수도 있지만 그래도 꾸준히 올려보려고 한다.
추가적으로 어떤 개념에 대해서도 쉽게 설명한 글을 올려볼 예정이다.
-면접을 위한 CS 전공지식 노트
*MVC나 DB 파트 제외하고 여러번 돌려서 보고있다. 처음에는 진짜 무슨 말인지 아예 몰랐었는데 이제는 어느정도 이해가 되고 많이 익숙해졌다. 누군가가 이 책을 보는 방법을 물어본다면 프로그래밍 기술을 공부하면서 함께 정독할 것을 권하고싶고 추가적으로 MVC, DB, 자료구조 파트는 당장 보기를 추천하지는 않는다고 할 것 같다. 그리고 자료구조와 알고리즘은 처음부터 어렵게 공부하기 보다는 쉽게 공부할 수 있는 방법을 먼저 찾아서 정독한 뒤 이 책의 자료구조 파트를 읽으면 더욱 도움이 될 것이라고 생각한다.
-어플을 통해서 수시로 보면서 자주 노출시켜서 익숙해지기
*자료구조와 알고리즘은 결국은 중요한 부분인건 맞다. 하지만 내가 지금 당장 이 부분에만 너무 집중을 해버린다면 정작 현재 중요한걸 놓칠 수 있기 때문에 코딩테스트 문제 푸는데에 집중을 하기 보다는 확실하게 이해를 하고 개념적인 부분을 알도록 초점을 맞추는게 중요할것 같다.