[회고,f-lab] 5-7주차 회고. 개발자가 가져야 하는 태도.
오랜만이네요. 이번 5-7주차 동안은 많은 일이 있었습니다. 코로나 양성이 떠서 자가 격리를 했지만 그 기간 동안 코딩 테스트 문제를 집중적으로 풀었고 이를 통해 많은 것을 깨달았었네요. 역시 특정 시점에는 깊게 몰입하는게 성장에 긍정적인 영향을 끼치군요. 이번 회고는 태도(Attitude) 중심으로 봐주셨으면 좋겠습니다. 그리고 읽으시는 여러분들도 한번 유추해보면 좋을듯합니다. 필자는 왜 이런 태도를 가지게 됬을까?
회고 목차는 아래와 같습니다. 이전 회고는 역할을 분류 기준으로 삼아 회고 했지만 이번에는 컨텐츠를 분류 기준으로 정했습니다. f-lab에 대한 회고이기도 하며 개발자로서 회고이기 때문에 이와 관련된 컨텐츠 위주로 분류 기준이 정해져야 한다고 판단했습니다.
그럼 회고 시작합니다!
목차
1. 알고리즘 학습 및 문제 풀이
2. 객체 지향 프로그래밍
3. cs 지식
4. 멘토링
알고리즘 학습 및 문제 풀이
잘한 것
- [Attitude] 단순히 문제를 풀 뿐 아니라 해당 답을 도출하게 된 사고 과정을 세세하게 뜯어본 점. 또한 이를 머리 속으로만 정리하지 않고 글로 풀어낸 점. 내가 작성한 카카오 문제 풀이 사고 과정
- [Attitude] 나보다 더 잘 푼 사람의 코드를 보며 그 사람의 사고 과정을 유추하고 해당 방식을 체화시킨 점.
- 알고리즘 풀이 시간을 하루 4-5시간에서 3시간으로 줄인 점. 코딩 테스트 실력을 향상 시키면서 다른 공부도 병행할 수 있는 최적의 시간을 찾아가고 있다고 느낌.
배운 것
- 어느 정도 문제를 많이 풀어본 후 부터는 문제 풀이 개수가 아닌 문제를 어떻게 풀었는지가 중요함.
- 다른 사람의 코드를 탑 다운으로 사고 과정까지 뜯어본 후 바텀 탑으로 다시 스스로 풀어보는게 중요함. 마치 engineering과 reverse engineering과 같음.
- 코딩 테스트의 본질은 가설 설정, 검증, 구현의 연속이다. 어떤 문제가 있는지 명확히 파악하고 이를 나만의 말로 추상화 시켜야한다. 그 후 해당 문제를 풀 자료구조 혹은 알고리즘을 선택하고 이를 검증한다. 구현한 결과가 틀리다면 다시 처음부터 시작하게 되는 과정을 다시 거치게 된다.
부족한 것
- 구현 능력에 비해 수학적 규칙 찾는 능력이 부족함. 꾸준히 좋은 풀이를 reverse engineering해서 내가 부족한 점을 보완시켜야겠음.
객체 지향 프로그래밍
잘한 것
- [Attitude] 객체 지향 프로그래밍이 나오게 된 과정을 이유와 함께 이해한 점.
- [Attitude] 객체 지향 프로그래밍을 일상 생활의 예시와 연관시켜 이해한 점.
배운 것
- 클래스란 분류고 객체란 단 하나 존재하는 개체. 상속은 계층 관계가 아닌 분류 관계. 이러한 관점에서 붕어빵 틀과 붕어빵 비유는 상속 관계의 예시로 틀림.
- SOLID에서 의존성 역전 법칙은 인생 전체에 통용될 수 있음. 개발자가 변하는 기술에 의존 하는 것 보다 CS에 의존하는게 더 좋음. 혹은 연인을 만나는 기준이 변하는 외모나 재력이 아닌 잘 변하지 않는 성격이나 성향이 좋음. 보면 볼 수록 컴퓨터는 인간과 많이 닮아 있음. 아주 흥미로움.
부족한 것
- 이론적인 것들은 많이 습득했지만 코드로 구현을 많이 하지 못함. 즉 체화까지 가지 못했다고 판단됨. 따라서 다음주 디자인 패턴 학습 때 이들을 코드로 구현해서 체화까지 해보겠음.
CS 지식
잘한 것
- [Attitude] 데이터 베이스 지식을 매일 꾸준히 학습한 점.
- [Attitude] 이론을 학습할 때 왜 이러한 이론이 나오게 됬는지 문제점, 원인, 결과를 스스로 머리 속에 분류 & 체계화 하며 학습한 점.
- 정보 처리 기사 필기 시험을 효율적으로 준비하고 가채점 결과 합격 선인 점.
배운 것
- 특정 이론을 학습할 때 문제점, 원인, 결과, 장단점, 현재는 어떻게 사용되는지 등을 머리 속으로 체계화 하면 이를 외우지 않아도 머리속에 각인됨. 무언가를 메모하고 외우는 것 보다 이를 적당히 파헤쳐 분석 하는게 이론의 이해와 장기 기억에 더 도움이 됨.
- 대부분의 목표는 장기 계획을 세우고 이를 분할 정복해서 결과를 내는게 효율적임. 정기 처리 기사를 장기 계획을 세우지 않고 공부했으면 문제 답을 외우는 방식으로 공부할 수 밖에 없었겠지만, 장기 계획을 세웠기 때문에 이론을 외우지 않고 전공 서적으로 충분히 이해하는 방식으로 시험을 준비할 수 있었음. 실제로 정보 처리 기사 필기를 준비한 시간은 6시간이 안됨. 평소에 전공 지식을 분할 정복한 덕분. 참고로 필자는 비전공자임.
부족한 것
-
멘토링
잘한 것
- [Attitude] 멘토링 문제 회고 방법을 바꿈. 단순 지식 습득이 아닌 Attitude 성찰하는 방향으로 변경함. 이를 문제, 원인으로 나누어서 문제 상황을 분석하고 Attitude로 해결 방안을 마무리함. 아래는 그 예시임
배운 것
- 회고 방식을 회고하니까 더 깊은 문제점을 확인할 수 있었음.
부족한 것
- 배운 내용을 코드로 구현하는게 부족함.