내일배움캠프 회고록 2주차(feat.항해99)

이용헌·2021년 12월 27일
0
post-thumbnail

회고 내용 요약

  1. 한 주의 흐름
  2. Keep
  3. Problem
  4. Try

1. 한 주의 흐름

1) 배운 것, 한 일
(1) 프로그래밍 학습
이번주는 자료구조 및 알고리즘 강의를 들으면서 알고리즘의 기초 지식을 다지는 시간을 가졌다. 개념 설명을 들었을 때는 어느 정도 이해가 됐는데, 코드로 작성하려고 하니 어떻게 적용해야 할지 감이 잡히지 않았다.

주로 학습한 내용은 배열과 연결리스트, 이분탐색, 재귀함수 이 세 가지였다.

조회와 삽입 및 삭제에서 차이를 보이는 배열과 연결리스트는 어느 것이 더 좋으니 그것만 써야겠다고 생각할 수 없다. 각 자료구조마다 필요한 곳이 있으니 적절하게 써보자.

이분탐색은 확실히 순차탐색보다 시간복잡도 면에서 효율적이다. 개인 과제에서 업다운 게임을 할 때 이 개념을 알았더라면 더 빨리 풀 수 있지 않았을까 싶다.

함수 내에서 자신을 호출하는 함수인 재귀함수는 반복 작업을 굉장히 효율적으로 만들 수 있는 친구다. 하지만, 이를 활용해서 문제를 푸는 과정은 만만치 않았다. 그래도 꼭 기억할 것은 탈출조건이 필요하다는 것, 반복적인 작업이 보인다면 재귀함수를 적용시켜보자는 것이다.

(2) 개인 과제
파이썬으로 간단한 게임 만들기, 카카오톡과 인스타그램 클론코딩, 이 두 유형의 과제를 이번주 내내 했다.

파이썬 게임은 알고리즘을 적용시키는 문제여서 까다로웠지만, 그래도 하나 빼고는 구현되는 정도로는 성공했다. 더 심화시키지 못한 것은 아쉽다.

카카오톡 클론코딩은 비교적 쉬운 편이었다. 이 과제를 하면서 HTML, CSS에 대해 다시 공부하게 되어 반가웠고, 무엇보다 flex를 조금씩 익힐 수 있는 것이 좋았다. 인스타그램 클론코딩은 생각보다 굉장히 까다로웠다. 반응형 웹을 어떻게 어디서부터 손대기 시작해야 할지 감이 잡히지 않아 중구난방으로 작업했다. 그래도 어떻게든 pc 화면까지 만들어서 제출했고, 과제를 혼자 힘으로 해낸것에 작게 칭찬해주고 싶다.

2) 느낀점
(1) 학습
알고리즘을 학습하면서 많은 답답함을 느꼈다. 개념은 이해했지만, 문제를 풀지는 못하니 제대로 이해한 것이 맞는지 의심이 들고, 다시 개념을 익히는 과정을 반복했다. 그러다보니 점점 학습하는 것 자체에만 초점을 맞췄고, 이러면 안된다는 생각을 했다.

알고리즘을 배우는 이유는 더 효율적인 코드를 짜기 위해서이다. 효율적인 코드를 만들기 위해서는 그 작업에 어떤 알고리즘이 필요하고, 어떻게 적용시켜서 풀 수 있을지를 깊게 고민하는 시간을 가져보자. 그러기 위해선 기초 개념을 명확하게 이해해야 하는 것은 당연하니, 개념과 적용 방법은 이해가 될 때까지 반복해서 공부하자.

(2) 개인 과제
과제를 하면서 굉장히 많은 공부를 해야겠다고 생각했다. 물론 초보니까 그럴 수 있지만, 과제를 풀어가는 과정을 보니 너무 중구난방으로 했고, 당장 풀어내기에만 집중했다. 그러다보니 내가 어떤 내용을 찾았고, 어디서 어떻게 적용했는지 헷갈렸다. 처음 단계에서는 일단 코드를 구현하는 것이 먼저겠지만, 그래도 과제를 하면서 찾고 적용했던 내용이 머리에 남을 수 있게 과제 수행 과정을 만들어야 겠다고 생각했다. 더불어 개발에는 정답이 없다고 생각하기 때문에 다른 사람들은 어떻게 코드를 작성했는지도 많이 살펴보고 좋은 것은 참고하는 것도 필요한 것 같다.

2. Keep

  • 만족하는 or 이어나갔으면 하는 부분
    강의 학습 패턴을 수정했다. 먼저, 테마별로 강의를 듣는다. 다음으로 내용을 정리하고 개념 적용 문제를 혼자 실습해본 후, 다음 테마 강의로 넘어간다. 이렇게 학습 방식을 변경해서 습관을 들이고 있고, 이것을 유지 및 발전시키고자 한다.

  • 이유
    한주의 강의를 한번에 다 듣고 내용 정리하고 복습하려고 하니까 앞에서 배운 내용은 잊어버리는 부분이 많았다. 그러니 복습하는 과정에서 문제도 제대로 풀지 못했다.

하지만, 테마별로 강의를 듣고 내용 정리 및 복습, 문제 풀이 하는 식으로 바꾸니 한 테마를 학습하는데 집중할 수 있고, 다른 테마와 헷갈리지 않아서 보다 효과적으로 학습할 수 있었다. 그래서 지금의 학습 패턴을 유지, 발전시키고자 한다.

3. Problem

  • 문제 or 불편한 부분
    과제를 끝낸 이후 내가 무엇을 새로 배웠고, 어디에 어떻게 적용시켰는지 파악하기 어려웠다.

  • 원인
    일단 과제를 끝내는 것에만 집중을 하다보니, 급하게 찾고 적용시키고, 다른 것을 시도하고 또 찾고 했다. 이 과정에서 내가 무엇을 찾았는지, 어디서 찾았는지, 어떤 유형인지, 어디에 어떻게 적용시켰는지, 무엇을 변형시켰는지, 등을 과제를 끝낸 이후에 다시 코드를 살펴봐도 빨리 파악하기 어려웠다. 아무 기록도 하지 않았던 것이 주요 원인이었다.

4. Try

  • Problem 해결책
    과제를 수행하는 과정을 바로잡자. 과제가 나오면,
    ① 우선 어떤 기술이 필요한지, 어떤 내용이 필요한지 등을 파악한다.
    ② 필요한 것 중 내가 알고 있는 부분은 어느 것인지, 얼마나 알고 있는지 파악한다.
    ③ 과제 시작 전, 관련된 전반적인 내용을 찾아보고 훑어보고 링크를 기록한다.
    ④ 과제 수행 중, 모르는 부분 및 필요한 부분을 찾아보고, 그와 관련된 개념은 무엇인지 찾고 기록한다.
    ⑤ 코드를 작성하고 주석으로 설명 및 관련 개념 키워드를 적는다.
    ⑥ 과제가 끝난 후, 찾아보고 적용했던 내용을 정리하고, 학습한다.
    ⑦ 일주일, 한 달 단위로 복습하고, 내용을 정리하고, 학습한다.

중요한 것은 내가 무엇을 알고 무엇을 모르는지 명확하게 파악하는 것이다. 그래야 혼자 과제할 때도 그렇고 협업할 때도 제대로 참여할 수 있을 것이다.

나에게 한마디
다른 사람들의 속도에 맞추지 말고, 내가 어떻게 하는지 집중하자. 항상 나의 메타인지를 키우는 방향으로 학습하고 과제를 수행하자. 그리고, 어떤 개발자가 되고 싶은지, 어떻게 될 수 있는지 그려보자. 중요한 것은 나 자신이다. 믿자.

profile
세상에 기여하는 개발자가 되자

0개의 댓글

관련 채용 정보