정말 폭풍같은 첫 프로젝트 주가 지났다. (사실 두번째긴한데... 그전엔 폭망하고 손놔서 생략)
우선 간략히 정리해보자.
바뀐 점들
1. 환경
우선 환경이 바뀌었다. 항상 큰 모니터가 있는 방안에서 공부를 했었는데 무조건 잠을 적게자는게 좋은 줄 알고 잠시간 아껴가며 운동이며 뭐든하고 낮에 졸던 패턴을 바꿔서 적어도 5시간 이상은 자고 덜 졸도록 시원한 곳인 거실에 테이블을 새로 깔고 작업중이다. 그토록 적응 안되던 키보드도 적응되어 어느새 잘쓰고있다. 별거 아닌 것 같지만 하루 12시간 이상을 앉고 공부하던 내게 이 뭔지모를 키보드 불편함 자세의 불편함은 정말 하루하루 쌓여서 병이 될만큼 나를 괴롭히고 있었는데 좀 자세를 잡았다. 몸이 덜 아프다.
2. 어떻게든 코드를 짜다의 어떻게든을 배웠다.
트레이너 왈
"일단 어떻게든 짜세요. 일단 무엇이든 만들어내세요."
아니 어떻게? 진짜 어떡할지 아예 모르겠는걸...
나보고 어뜩하라고...
막막, 절망 이 두단어가 몸을 휩쓸던 이전과 달리 어떻게든 만들다의 어떻게를 조금은 정말 조금은 알 것 같다.
이전 이웗후의 주가 정말 자바에서 쓰이는 언어의 개념을 전혀 몰라서 그것들의 역할과 활용에 대해 나름 정의내리는 주였다면
이번 주는 내가 배운 개념으로 가설을 세우고 이 논리가 코드에 적용하는지 확인할 수 있는 실험주였다.
3. 관심사의 분리의 중요성. 응집도는 높이고 결합도는 낮추고
그놈의 관심사의 분리...말로만 중요하다고 아는데 몸으로 깨달았다. 어떻게든 만들어라의 어떻게를 하다보니 정말 코드가 난장판이었다. 어떤 기능이 어디에 명시되고 어떻게 연결되는지도 모르겠고 하나의 매소드,생성자에 매개변수가 플러그에 컴퓨터장비와 티비장비를 꽂아놓은 정신없는 전선마냥 엉켜있었다. 그러다 기능을 더 추가하고싶을때 도저히 더이상은 추가할 수 없다는 생각이 들었다. 너무 논리들이 엉켜있어 어디부터 어떻게 손을 대야할지 모르겠었다.
기능 추가를 위해 관심사의 분리는 선택이 아닌 의무였다.
그런데...
프로그램이 폭파했다. 말그대로다. 잘 되던것들이 클래스로 끼리 뭉쳐내고 분리해내자 마자 작동이 안된다... 이것을 아직도 해결하는 중인데 해결법을 찾고 해결하느데 2일이 넘게 걸렸다. 말이 이틀이지 일주일 프로젝트에 2일이란.....30%에 해당하는 시간이다.
그럼에도 아주 값진 시간이었다.
정말 이 사진만한게 없다. 첫째처럼 각 기능은 독립적이되 기능 구현을 위해 서로 연결되어있어야하는데 내 코드는 각종 매개변수로 덕지덕지 이어놓은 두번째 사진처럼 빨간줄의 향연이었다. 하나를 건드리면 나머지 하나가 자동으로 건드려지는. 심지어 이마저도 해결하려고 시간을 엄청써서 그나마 작동이라도 되게했다.
단순하지만 코드 순서의 중요성 그리고 기록의 중요성
정말 프로그램은 순서대로 읽어간다. 이를 지키지 않으면 정말 구현이 이상하게되는데 사람인 이상 모든 코드를 정확한 순서대로 짤 수 가 없다.
모든 코드를 처음부터 정확하게 순서대로 짜는 건 불가능 한 것 같다. 하지만 그것을 작게 단위로 나누고 테스트를 통해 돌아가는지 확인하는 습관은 가질 수 있다.
자연스레 프로그램을 돌아가게하려다 보니 위와 같은 습관을 들일 수 밖에 없었고 그러다보니 자연스럽게 깃허브에 하나의 작업단위마다 매우 잦은 커밋을 통해 백업을 하고 있었다. 깃허브의 브랜치가 터진 것도 2번이나 겪어 셀프로 복제본 백업도 해두었다. 해두고 나니 깃허브에 커밋이든 리베이스든 뭐든 시도 할 수 있게 되었다. 또한 문제들을 막연하게 해결하던 것을 여전히 나아지지 않자 명령어의 행위를 잘게 나누어 직접 노트에 쓰고 어디서 안되는지 하나하나 디버깅해보기 시작했다. 그리고 그렇게 잘게 나눈 오류점검 포인트를 깃허브에 이슈로 옮겨 체크리스트에 담았다.
좋은 체크리스트를 만들고 커밋하는 습관을 들이고 프로그래밍을 한 것이 아니라
몇번의 시간 허비 끝에 보다 나은 프로그래밍을 하기 위하다 보니
단위별 체크리스트를 만들고 커밋하는 습관을 들이게 되었다.
기획을 위한 기획을 아는가? 정말 그럴듯하게 시작하려할 때 사람들이 많이 하는 실수 인데 이런걸 잘모를때 유튜브를 그냥 막했다. 영상 30개를 찍을쯤 도저히 이대로 무식할 순 없다고 생각이들어 대본을 쓰고 내가 전달할 메세지가 무엇인지 요약하고 편집을 간략화 했다. 나중에 보니 그게 기획이었다.
끝으로 정말로 느낀 관심사의 분리
사실 외부 결과물은 아직 미흡하나 나는 이번 프로젝틀르 진행하며 너무 배운게 많다. 내일의 주간회고에 더 담아볼까 한다. 변수의 필드화와 매개변수에 빠진 이후로 그것들을 유기적으로 연결하고 작동시키는데 희열을 느껴 코딩이란 이런거구나 싶었는데 그러다 보니 엉킨 실타래같은 코드가 탄생했다. 그걸 풀려고 갖은 수를 쓰다보니 정말 비지니스 로직은 로직만 담고있고 인터페이스는 그것만들 담아야 둘의 분리가 되고 신호코드를 만들어 신호만 주고 받아 각자 분리된채로 하지만 연결된 채로 작동할 수 있다는 걸 배웠다.
火山蘊含人生
내려치기!
연습 또 연습이다!
...
내 카톡프사도 저걸로 했다.. 아 물론 멀티 프로필...
'개발공부하며 느낀 인생 공부' 카테고리의 다른 글
한 가지만 하라 원띵 [20220723 TIL] (0) | 2022.07.23 |
---|---|
난 내 갈 길만 간다. 아니 가자(20220722 til) (0) | 2022.07.22 |
스윙 게시판 삭제기능 도입[feat.3일만에 해결한...20220719 TIL] (0) | 2022.07.19 |
자바 스윙 버튼 사라짐, 컨텐츠 뜨지 않음,액션리스너 오류 문제(게시판 글 추가 삭제 수정 문제 220718 til) (0) | 2022.07.18 |
우선 많이 쳐라와 막힘 그 사이...[20220717 TIL] (0) | 2022.07.17 |
댓글