220721 레벨테스트 TIL 4

샨티(shanti)·2022년 7월 21일
0

TIL

목록 보기
47/145
post-thumbnail

하루를 마무리 하기 전, 오늘 있었던 일들을 잔잔히 되짚어봅니다.
성공과 실패의 모든 요소에서 '배울 점'을 찾아내어 기록하고,
더 성장하는 내일의 나를 위해 'action plan'을 세웁니다.

각설! 내일이면 레벨테스트도 끝이다.
오늘 문득 과제 안내 페이지를 좀 자세하게 보고싶다는 생각이 들었는데, 이번 주의 목표는 아래와 같았다.

자바 기초 과정에서 학습하신 내용을 바탕으로 새로운 프로그램을 만들며 나의 실력을 점검해보는 주간입니다.

나의 실력을 점검해보는 주간이라...
내 실력은 역시나 꽝인데, 이번 주를 보내며 내가 꼭 캐치해야 하는 점은 바로 '실력 점검'인 것 같다.
나의 현재 실력이 어느 정도인지, 내가 어느정도 까지 할 수 있고 또 어떤 것은 어려워하고 있는지, 더 중요한 것은 내가 '어떤 것을 모르는지'를 알아가는 주간.

프로젝트에 약간 짓눌려서 '이걸 왜 하는지'에 대해서 잠시 잊고있었는데 다시 방향성에 대한 기준을 확인하고 나니 정신이 좀 든다.


사실 이번 프로젝트를 하면서 동료들과 자주 이야기하기도 하고 또 공감하는 부분 중에 하나는,
더 나은 코드를 위해 씨름하는 시간보다 swing의 레이아웃이나 또는 컴포넌트를 보이게 하네 가지고 싸우는 시간을 좀 더 쓰고있는 것 같다는 것이다.
영 틀린말은 아닌 것 같다. 레이아웃이나 컴포넌트랑 싸우다보면 어느 순간 현타가 온 나 자신을 발견...ㅋㅋ

뭐 어쨌든.
사실 이번주 과제를 진행하면서 그나마 나는 레이아웃에 대해 덜 고생하고 있다는 생각이 들었는데
왜 그런지 생각해보니 전에 그만큼 고생을 했기 때문이라는 결론에 다다랐다.

까놓고 얘기해서 이월 3~4주차 때 todo list 만들면서 X나 고생했고...
오죽했음 코드 관련한 건 TIL로 잘 안쓰는 편인데 따로 기록좀 해놓으려고 아무도 관심없는 swing 레이아웃으로 TIL도 썼었다.
그때도 진짜 너무 힘들고 코드도 못따라치겠고 남들 다 잘 따라가는데 혼자서 저 멀리 뒤쳐진 것 같아 조급한 마음을 어쩌지 못해 단 하루도 빠짐없이 울었었다.

이월 직전 8주차 때도 마찬가지였다.
분명 화면에 뜰 것 같은 게 안뜨니까.... 미치고 환장할 노릇인거지.
퀄리티도 구렸지만 레이아웃이나 swing 요소들 때문에도 너무 고생했던 기억이 난다.

근데 그 시간을 다 지나보내고 이번주에 깨달은 바는
과거의 내가 개고생을 하면 미래의 내가 아주 조금, 아주 약간은 편할 수 있다는 점이다.

이월 전 8주차, 이월 후 3~4주차 때 만들어둔 것, 알아둔 것, 써먹었던 것들을 복붙을 해오는 한이 있더라도 어쨌든 지금 프로젝트에서 아주 유용하게 써먹고 있다.
깃허브에 내 코드들이 다 남아있고, 그 때 어떤 것들을 구현하기 위해 어떤 코드와 어떤 메소드를 썼는지 아직 기억에 남아있는지라
필요한 걸 골라서 쓰고 있다.
만약 그 때 써보지 않았다면 지금 '새로운' 무언가를 하는게 꽤 부담스러웠을텐데, 그 부담스러움을 과거의 내가 덜어주었으니 지금의 나는 아주 약간이라도 편한 마음으로 그것들을 써보고 실험하는 것이다.

이 사실을 화요일 쯤 깨닫고나니 그냥 남은 수, 목을 갈아 넣어야겠다는 생각이 들었다.
미래의 내가 지금의 내 덕을 보면서 살 날이 올 수도 있으니까. 아 물론 언제가 될지는 모르지만..ㅋㅋㅋㅋ

지금 프로젝트에 포함되어 있는 '관심분야 책 추천' 기능 역시 하드코딩, 그럴듯하게 돌아가게 하기 위한 사전 작업들이 너무 많이 필요한 일이라 진지하게 빼려고 고민했던 기능이다.
하지만 그 작업 역시 그냥 했다. 근 50개에 가까운 책을 검색하고, 사진을 캡쳐하고, 파일로 만들어서 폴더에 집어넣고...
아마 다른 사람들은 '고작 이 기능 만들려고 그 시간을 쏟아넣었냐, 그 시간에 차라리 다른 걸 해라' 라고 말할지도 모르겠다.
그럼에도 불구하고 그냥 했던 이유는 솔직히 딱 하나였다.
내가 이 프로그램을 썼을 때 '음, 나쁘진 않네~' 라는 생각이 들었으면 싶어서....
내가 만든 프로그램을 나 조차도 쓰기 싫다면 뭐하러 일주일, 황금같은 시간을 이 프로그램 만드는 데 쏟아붓고 있겠나 싶었다.
그래서 적어도 '나라도 쓰고픈 프로그램'을 만들려고 노력했고 그렇게 관심분야 책 추천 기능은..... 우여곡절 끝에 살아남고야 말았다.

물론 과거 나 자신의 코드를 배껴오고, 다른 사람들의 코드를 참고하고 배껴오는게 다 좋은 건 아니라고 생각한다.
하지만 어쩌겠는가... 우선은 잘 작동하는 프로그램을 만들어야 하는 것을...

이번주를 통해 나의 실력을 점검해야 하니 (1) 내가 아는 것, (2) 안다고 생각하는 것, (3) 모르는 것에 대해 확실하게 짚고 다음 스텝으로 가길 바란다.


오늘의 작업 일지

오늘 하루 목표는 써놓았지만 기능 추가와 확장 보다는 '사용자'의 입장에서 편의성을 극대화 시키는 방향으로 기능을 다듬는 것이었다.

사실 한편으론 '레벨테스트인데... 사용자의 편의성을 생각해야 하나? 기능 뭐라도 하나를 더 넣어야 하는 것 아닌가' 라는 생각도 들었다.
이 부분을 그냥 트레이너님한테 물어볼걸 싶네... TIL 쓰다보니 문득 깨달음 ;;;

어쨌든 맞는 방향인지는 모르겠으나 보수의 개념에서 접근하기로 했다.
어느 누군가가 사용했을 때 '어 이건 좀 아닌거 같은데?' 라는 부분이 생기지 않도록 내가 할 수 있는 선에서 최선을 다해 다듬으려 노력했다.


어제와 달라진 점

이 작업일지에 따라 작업을 했고 어제와 달라진 점이 있다면 아래와 같다.

  1. 프레임, 팝업창들이 모니터에 뜨는 위치를 조정해주었다.
    사실 별 일은 아니었다. 그냥 코드 몇 줄 넣으면 될 일이기도 해서 금방 끝났는데, 메인 프레임과 아주 간간히 뜨는 팝업창을 띄웠을 때 조금 더 편하게 창간 이동을 하기 위하여 모니터에 띄워주는 위치를 살짝 조정했다.

  1. 글쓰기 메뉴 레이아웃을 정돈했다. & 글자수 카운트 기능 추가

    원래 바탕에 스윙 그 특유의 옅은 회색이 깔려있었는데 그냥 투명을 줘버리고 백그라운드 이미지가 노출될 수 있도록 조정했다.
    이 부분은 ... layout을 null을 먹인 패널을 다른 패널에 덧붙이면 전혀 화면이 뜨지 않는 현상 때문에 어쩔 수 없이 그리드 레이아웃으로 구현한 곳이라 진~짜 마음에 안들었는데, 사실 팝업으로도 할 수 없었던 게 그렇게되면 또 화면 갱신이 안돼......ㅎ..........
    진짜 머리가 딸리니까 짜증만 는다. ㅋㅋㅋㅋ.
    어쨌든 닉네임, 비밀번호, 제목을 입력받는 칸을 만들고 리뷰를 쓸 수 있는 textArea를 주었다.
    약간 밋밋해보이기도 하고, 사용자 입장에선 뭐가 더 편할까? 생각하다가 좀 간단한 기능을 하나 더 추가했는데 바로 '글자수 세기' 기능이었다.
    100자가 생각보다 길지 않아서.... 사람들이 어떻게 하면 더 편하게 사용할 수 있을까? 생각해보다가, 글자 수를 실시간으로 노출시키고 제한된 글자수에 다다르는 순간 더이상 글자가 써지지 않으면서 하단에 글자수를 안내하는 글씨가 붉게 변하도록 만들었다.
    오늘 목표에 추가기능을 구현하지 않겠다고 했지만... 참지 못하고 넣었다.
    아래 그림처럼 글 상세보기 프레임에도 현재 글자수를 알려주는 내용을 추가했고, 여기는 컴포넌트들을 셋바운즈로 줄 수 있었어서 모양새가 글쓰기 패널보단... 좀 낫다.

  2. 책 관련 데이터 완성, 책 구매 링크로 연동되는 라벨 추가


결국 놓지 못하고 구현한 이 기능.
가장 시간도 많이 든 기능이고 또 한편으로는 가장 아쉬운 기능이기도 하다.
총 3개의 관심분야를 받고 싶었는데 솔직히 도-저히 엄두도 안나고 끝이 안날 것 같아서 결국 1개의 관심분야만 받는 것으로 결론짓고 기능을 구현했다.

16개의 카테고리 중에 관심분야 1개를 선택하면 (1) 그 분야와 관련된 책을 1권 추천, (2) 그 분야 이외의 책 1권 추천. 총 2권의 책을 추천해주는 기능이다.
쉽게 얘기하면 잘 어울리는 책 - 도전 책. 뭐 이정도...

근데 만들고나니 '왜 이게 100글자 북 리뷰 서비스에 추가되어야 하는거지?' 라는 생각이 밀려오며 헌타...
역시.. 안하는게 맞는거였나... ㅎ


  1. 그 밖에 자잘한 것들

그담엔 정말 자잘한 것들이다. 원래 다 그런거겠지만 막판에 리팩터링 하거나 소소한 오류를 잡는게 새로운 기능 추가하는 것보다 훨-씬 더 지루한 일인 것 같다.
새로운 기능을 추가하는 건 어려워서 죽을 것 같고, 오류를 잡고 수정하는 것 역시 지루하고 지난한 일이고...
그래도 어쩌겠는가. 완성도는 디테일에서 나올텐데.

아직 프레임 갱신이 매끄럽지 않아서 좀 고민인데.... 어차피 내일은 발표일이므로 어떻게든 쇼부를 봐야한다.


오늘의 배움. RED-GREEN-REFACTORING


난 쫄보다. 솔직히 이 코딩 앞에서는 정말 무한한 쫄보다.
별로... 안친하다... 아직도 코딩이랑 내외한다. 어떡하지...? 후.

어제 16개 카테고리를 만들면서 패널 클래스 1개를 만든 뒤에 for문으로 16번 돌려주면 되지 않을까? 라는 생각을 잠깐 했다가
솔직히 어떻게 해야할지 잘 모르겠어서....
놀랍게도.... 16개 카테고리에 대한 패널과 그 안에 들어가는 내용을 모-두 손으로 쳤다.

거의 400여 줄이 넘는 코드였는데...
누누히 얘기하지만 나는 '기능이 되는 것'이 가장 큰 목표이므로 노가다를 하는 것은 크게 문제가 되지 않았다.
노가다를 하더라도 '되기만 한다면..' 잠은 좀 줄이면 되니까.

그리고 나서 오늘은, 과감하게 리펙터링을 시도해보았다.
고민하면서 어제 만들어둔 클래스를 for문으로 16번 만들어주고, 되는건지 안되는건지 긴가민가 하면서 List도 쓰고, System.out.println() 으로 출력 실험도 하고... 정말 안풀릴 때 동료에게 함께 오류를 봐달라며 요청도 하고.

결국! 그 불가능하던 일이 오늘 일과 시간에 해결되고 말았다.

그리고나서 한 클래스를 차지하고 있던 300여 줄의 코드를 모두 지울 수 있었다.

동료가 표현한 바를 빌려오자면 아주 극단적인 red - green - refactoring의 과정이었다.

어떻게든 green을 띄우겠다는 일념으로 정말 400여줄의 코드를 줄줄이 쳤다.
그리고 다행스럽게도 반복이 구현되고 그 반복된 패널 안에서도 내가 원하는 checkBox의 정보를 가져올 수 있게되자 중복된 코드를 모두 지울 수 있게 된 것이다.

솔직히 이런 경험을 자꾸 하고싶지 않다.
나도 한번에 머리가 팽팽 돌아서 더 나은 방법을 선택하고 코드를 치고 싶다.
근데.. 지금은 그게 안된다.

코딩도장 문제를 푸는 것만 봐도 그렇다.
동료들은 더 나은 코드, 쉽게 풀리는 코드를 선택하지만 나는 뭔... 사고방식인건지...
쉬운 코드, 쉬운 원리를 찾아내지 못하고 헤매는 것처럼 느껴진다.

그럼에도 불구하고, 극단적인 Green을 띄우더라도 결국은 refactoring을 하며 배워나가는 과정을 누적시킬 수밖에 없어보인다.

정말.. 쉽지 않은 과정이지만...
이 반복되는 과정들이 쌓여 좀 더 나은 나를 만들 수 있기를 간절히 바랄 뿐.

이제 발표까지 정말 몇시간 남지 않았다.

최선을 다하고 싶은데 좀 지친 기분이지만, 그래도 마지막까지 끌어올려 수정할 수 있는 많은 것들을 수정하고 자러 가자.

한주 동안 한 것들로 인해 내일의 내가 더 나은 방향으로 걸어나갈 수 있길 바라며...

샨티..... 고생했다. 그리고 생일추카해~ ㅎㅎㅎ :)

profile
가벼운 사진, 그렇지 못한 글

0개의 댓글