코드로 우주평화

2022년 6주차 '하기 쉽게, 하고 싶게' 본문

나는 이렇게 성장한다/회고

2022년 6주차 '하기 쉽게, 하고 싶게'

daco2020 2022. 2. 8. 00:24
반응형

 Weekly growth 


이번 주 내가 중점으로 둔 것은 '하기 쉽게, 하고 싶게'였다.
이를 실현하기 위해 이번 주 새롭게 실천한 방법은 '하루를 체크리스트로 모두 채우기'였다.

화요일 부터 시작한 '데일리 체크리스트'


보통 다음날 '하고 싶은 것들'을 시간 순서대로 체크박스로 만든다.
그리고 당일이 되면 위에서부터 하나씩 체크하며 처리한다.

하나의 체크박스는 실행하는데 부담이 되지 않도록 아주 잘게 쪼갠 '단일 액션'이다.
블러 처리 하긴 했지만 저 이미지에는 '카페 가기', '점심 먹기', '쉬기' 등 일상의 당연한 것들도 포함되어 있다. (벌써 하고 싶지 않은가?)

데일리 체크리스트를 한 주 동안 실천해보니 매우 긍정적인 효과가 있었다.

우선 아침에 체크박스로 해야 할 일을 배치하니 기분 좋게 그 일을 할 수 있게 되었다.
나 같은 경우에는 눈뜨자마자 하는 일이 알고리즘 문제를 풀고 포스팅하는 것인데 하루의 시작을 작은 성공으로 시작할 수 있게 되었다. (만약 알고리즘 문제가 어려워져서 실패가 늘어난다면 다른 액션으로 대체할 예정이다.)

액션을 아주 잘게 쪼갰기 때문에 체크박스는 생각보다 빠르게 채워진다.
그 과정에서 스스로 하루를 잘 보내고 있다는 생각이 들고 그다음 액션들도 탄력이 붙는다.
그렇게 성공의 선순환이 일어난다.




물론 하루가 반드시 계획대로 흘러가는 것은 아니다.
생각보다 시간이 부족할 수도 있고 다른 변수가 생겨 차질이 생기기도 한다.

그런 경우에는 오늘 하루에 끝내야 할 가장 중요한 것에 집중한다.
그리고 그보다 우선순위가 낮다면 다음날로 미루거나 포기한다.

계획을 세웠다고 반드시 다 지킬 필요는 없다.
때로는 포기가 더 나은 '액션'이 될 때도 있기 때문이다.





Algorithm


이번 주에는 알고리즘을 풀면서 몇 가지 교훈을 얻었다.

하나는 '문제에 접근하는 방법에도 순서가 있어야 한다'는 점이다.
예를 들어 내가 if를 사용하지 않기를 원한다면 대신에 사용할 수 있는 내장함수를 먼저 떠올린다.
만약 내장함수가 떠오르지 않는다면 그다음으로 자료구조를 떠올리는 것이다.

효율적인 해법들을 목록화하고 순서를 미리 정해둔다면 내 코드는 항상 효율적이고 일관적인 상태를 유지할 수 있을 것이다.

2022.02.04 - [Dev/Algorithm & Structure] - 두 정수 사이의 합, 접근 방법에도 순서가 있어야 한다.


다른 하나는 '효율적인 코드 vs 보기 좋은 코드'에 대한 교훈인데
결론부터 말하자면 우리는 '효율성'과 '가독성' 모두 좋은 코드를 선택해야 한다.
다만 양자택일을 해야 하는 상황이라면 업무 일정이나 서비스 환경 등 맥락에 따라 선택을 해야 할 것이다.

2022.02.06 - [Dev/Algorithm & Structure] - 같은 숫자는 싫어, 그리고 깨달은 세 가지



이 외에 포스팅한 알고리즘 관련 글을 다음과 같다.

2022.02.05 - [Dev/Algorithm & Structure] - 나누어 떨어지는 숫자 배열
2022.02.03 - [Dev/Algorithm & Structure] - 문자열 내 마음대로 정렬하기
2022.02.02 - [Dev/Algorithm & Structure] - 문자열 내 p와 y의 개수
2022.02.01 - [Dev/Algorithm & Structure] - 문자열 내림차순으로 배치하기
2022.01.31 - [Dev/Algorithm & Structure] - 문자열 다루기 기본



Study

'물리 삭제와 논리 삭제'
'객체지향'

물리 삭제와 논리삭제애 대한 개념은 알고 있었지만 이를 SQL문과 Python 코드로 구현해보고자 했다.
그리고 구현한 코드를 바탕으로 스터디 팀원들에게 발표를 진행했다.

2022.02.03 - [Dev/DB] - 물리삭제와 논리삭제를 코드로 구현해 보았다.



객체지향에 대해 영상이나 글들을 살펴보고 발표를 진행했는데 코드가 아닌 '글'과 '비유'로만 학습하다 보니 정확하게 이해되지 않았다. 때문에 발표 내용은 스스로도 만족스럽지 못했고 부족함을 느낄 수 있었다.

2022.02.05 - [Log/Today] - '객체지향'을 제대로 이해하지 못했다.

앞으로 객체지향과 관련된 책을 읽고 구체적인 특성들을 살펴본 다음 실제 파이썬 코드로 구현해 볼 예정이다.



추가로 git과 drf에 대해 학습했으며 내용은 다음과 같다.

2022.02.03 - [Dev/Etc] - git 개념 정리
2022.02.03 - [Dev/Framework] - DRF 궁금한 것 모음


Refactoring

클린 코드 책을 읽을 때마다 지난 내 코드들이 떠올라 마음이 아팠다.
'분명 내 코드들은 클린 하지 못할 텐데.. 언제 손보지'라는 생각이 문득문득 들었다.

배운 것이 있으면 바로 실천해야 내 것이 된다는 것을 알고 있으므로 기존 프로젝트들을 돌아보며 리펙토링을 진행했다.


Bidasks 프로젝트의 경우 레이어 아키텍처를 적용하였는데 레이어가 어설픈 것 같아 이를 더 명확히 구분하는 식으로 리펙토링을 진행했다.

Suulgo 프로젝트의 경우 이전부터 가장 수정하고 싶었던 '알고리즘 로직'을 리펙토링 하였다.

이번 주 리펙토링과 관련한 기록은 다음과 같다.

2022.02.02 - [Log/Today] - Bidasks, Suulgo 프로젝트 리펙토링



Next action


이번 주에 새롭게 발견한 문제점은 다음과 같다.

문제 1. 결과물이 보이지 않는다.

앞서  '데일리 체크리스트'의 장점들을 말했지만  한편으로는 부족한 점도 있다.
체크박스를 통해 내 행동을 파악할 수 있고 만족감도 들지만 여기에 성과는 기록되지 않는다.
체크리스트의 긍정적인 효과를 지속하기 위해서는 내 행동으로 비롯된 성과, 즉 구체적인 결과물이 있어야 한다.
예를 들어 블로그 포스팅을 몇 개 했는지, 코딩을 해서 어떤 결과가 나왔는지 같은 결과물 말이다.

때문에 다음 주부터는 체크리스트와 함께 내가 얻어낸 결과물도 함께 기재하기로 했다.
매일매일 거창한 결과물을 얻어낼 순 없겠지만 작은 결과들이 모여 큰 결과를 만들어낸다는 것을 잘 알고 있다.
이를 내가 직접 기록하면서 몸소 체감할 생각이다.


문제 2. 부족한 CS지식, 엉성한 개발 실력

이번 주 기술 면접을 보았는데 스스로 부족함을 많이 느꼈다.
하여 오는 주는 CS 입문 서적들을 빠르게 훑어볼 생각이다.

대상 서적들은 다음과 같다.

'그림으로 보는 네트워크'
'그림으로 보는 HTTP'
'그림으로 보는 서버'
'객체지향의 사실과 오해'

빠르게 읽어 본 후 실제 코드로 구현할 수 있는 것들은 따로 추려볼 예정이다.
(읽기만 해서는 내 것이 될 수 없으므로.)


문제 3. 주간 회고가 자꾸 밀린다.

이 글을 쓰는 시점은 이미 한 주가 지나고 화요일 오전이다.
사실 토요일 밤에서 일요일 안에 모두 작성해야 하지만 다른 일정과 겹쳐 계속 미루고 말았다.
회고는 규칙적으로 정해진 날에 하는 것이 옳다고 생각하므로 이 부분은 문제로 보인다.

오는 주는 일요일까지 주간 회고를 마치고 글을 작성할 예정이다.
이를 위해서 일요일 일정에 주간 회고를 최우선으로 배치하겠다.








반응형