ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TWIL #4 | 숨 참고 TDD 다이브 🌊🏄🏻
    📝 기록/매주의 기록 2022. 9. 18. 21:52
    📝 TWIL(This Week I Learned) 작성 가이드
    1) 이번 주 한 일, 느낀 점, 배운 점을 작성한다. (3Fs, 1~2번에 해당)
    2) 앞으로 개선할 점 등 어떻게 하겠다는 실천계획을 구체적으로 작성한다. (Future Action Plan, 3번에 해당)
    3) 다음 TIL을 작성할 때 FAP가 제대로 지켜졌는지 피드백을 작성한다. (4번에 해당)

    - 참고: 5Fs, 뒤돌아보다

    1. Facts (사실, 객관)

    - 테스트 주도 개발(TDD) 방법론을 활용하여 과제를 진행하였다.
    - <객체지향의 사실과 오해> 2회독하였다.

    2. Feelings (느낌, 주관) & Findings (배운 점)

    1) 장인 정신이 필요해!
    이번 주는 테스트 코드를 작성해보면서 TDD를 처음으로 시도해 본 한 주였다. 사실 이번 주 TIL에서도 말했다시피 테스트 코드를 작성하다 보면 뭔가 구현을 먼저 하고 싶다는 마음이 앞선다. 테스트 코드를 짜는 시간조차 아깝다고 느껴지기 때문이다. 하지만 그건 착각이다. 테스트 코드가 완성되면 자연스럽게 코드도 완성될뿐더러 그렇게 작성한 핵심 로직들을 내가 보장할 수 있게 된다. 내가 만든 기능들을 내가 보장한다는 건 장인의 마음으로 작품을 만들겠다는 것과 비슷하다. 그래서 TDD를 잘하려면 장인정신이 필요하다고 느꼈다.

    2) 그래도 저번 주보다는 객체지향을 조금 알 거 같은 기분...
    3주차에 과제를 하면서 진짜 객체지향 대체 뭔 소린가 싶었다. 실세계를 모티브 삼아 새로운 세계를 창조하였다고 하고, 역할+책임+협력 등.. 나에겐 그저 대혼돈의 멀티버스 같은 기분이었는데, 그래도 계속 읽다 보니 이제는 어떤 느낌인 건지 그래도 지난주보다는 알 거 같은 기분이다. 객체지향이란, 객체가 다른 객체에게 메시지(요청)를 보내고, 그 메시지를 받은 객체는 메서드를 통해 응답한다. 응답할 때 그 객체의 자율성이 보장되어야 하며, 그러기 위해서는 역할과 책임이 제대로 분리가 되어야 한다. 일단 이 정도까지는 이해를 했다. 물론 아직 코드로까지 구현은 힘들다. 그래도 대략적인 맥락을 이해했으니 더 깊게 이해해보자.

    3) 굳이?라는 마음은 넣어두기.
    동기분들이랑 이야기를 하면서 코딩 테스트에서만큼은 순수하게 구현해보는 게 어떠냐는 얘기가 나왔다. 이번 주 3진법 만드는 문제를 풀면서 나온 이야기였다. 나는 Integer.parseInt(number, 3)로 손쉽게 구현하였는데, 나처럼 메서드를 사용한 사람이 절반 가량, 나머지 절반은 내장 함수를 사용하지 않고 구현하였다. 나는 굳이? 메서드가 있는데 그렇게 해야 할까? 하는 생각을 했다. 근데 태석님이 실무에서 작업할 때는 물론 그에 맞는 메서드를 적재적소에 활용하여 사용하는 것이 맞겠지만, 코딩 테스트에서만큼은 내장 함수 사용을 최대한 지양하고 순수하게 구현하는 것이 맞는 거 같다고 말씀하셨다. 그렇게 듣고 보니 맞는 말씀이었다. "굳이?"라는 말은 앞서 1번에서 말했던 장인 정신에 위배되는 마음이다. 이제는 굳이?라는 마음은 넣어두자.

    4) 개념노트 숙지하기.
    솔직히 이번 주는 과제하기 급급해서 주말에 작성한 개념노트를 한 번도 열어보지 못했다. 그랬더니 역시나 코딩 인터뷰에서 탈탈 털렸다. 또또 당장 해야 할 과제를 해치우면 뒤도 안 돌아보는 짓을 한 것이다.. 탈탈 털리고 집 가는 지하철에서 개념노트를 쭉 읽어보는데, 코딩 인터뷰 전에는 그렇게 안 들어오던 개념들이 그제야 머리에 들어오는 것이다... 이 청개구리를 어쩌면 좋을꼬... 정신 차리고 개념노트는 꼭 숙지하자. 

    3. Future Action Plan (미래의 행동 계획)

    우선 지난주의 FAP 4가지를 모두 잘 지켰다! 그중 가장 잘 지켜진 것은 TIL은 그날 배웠던 키워드 중 가장 기억에 남는 것을 골라 나의 언어로 정리하자는 액션 플랜이었는데, 이번 주 작성한 TIL들 모두가 배웠던 내용 중 기억에 남는 것들을 정리한 것이었다. 또 나머지 액션 플랜도 내 기준 잘 지켰는데, 이 기세를 몰아 이번 주도 저번 주 FAP를 그대로 유지하면서 새롭게 몇 가지를 더 추가해보았다.

    [지난주 FAP 유지]
    - 
    TIL은 그날 배웠던 키워드 중 가장 기억에 남는 것을 골라 나의 언어로 정리하자.
    - 설계는 기능 단위로 20분에서 30분 이내로 끝내고 바로 구현에 돌입하자.
    - 막히면 왜 막히는지에 대해 빠르게 생각을 정리하고 바로 질문하자. 동기분들 혹은 트레이너분들에게.
    - 마지막으로 즐겁게 코딩하자. 언제나 유쾌함을 잃지 않는 것!(제일 중요✨)

    [새롭게 추가된 FAP]
    - 코딩 도장 문제 풀이는 내장 함수 사용을 최대한 지양하자.
    - 개념 노트 꼭 출퇴근 길에 읽기.

    4. Feedback (피드백)

    FAP 달성 여부(O/X)
    TIL은 그날 배웠던 키워드 중 가장 기억에 남는 것을 골라 나의 언어로 정리하자. 이번 주는 작업일지로 대체됨
    설계는 기능 단위로 20분에서 30분 이내로 끝내고 바로 구현에 돌입하자. X
    막히면 왜 막히는지에 대해 빠르게 생각을 정리하고 바로 질문하자. 동기분들 혹은 트레이너분들에게. O
    마지막으로 즐겁게 코딩하자. 언제나 유쾌함을 잃지 않는 것!(제일 중요✨) O
    코딩 도장 문제 풀이는 내장 함수 사용을 최대한 지양하자. O
    개념 노트 꼭 출퇴근 길에 읽기. X

    1주일 동안 TDD 해본 소감을 말해보자면.... 우선 처음에 테스트 코드를 짜면서 구현을 한다는 게 어떨지 전혀 감이 오지 않았다. 주변에서 테스트를 위한 테스트를 만들게 된다는 둥, 시간을 엄청 많이 잡아먹게 된다는 둥, 사실 빨리빨리 작업을 해야 하는 실무에서는 테스트는 계륵이다와 같은 말을 들어본 적이 있기에 궁금했는데, 이게 웬걸... 너무 괜찮았다! 잘하면 정말 좋을 거 같다는 욕심이 바로 생길 정도로 좋았다. 실패한 테스트를 보고 좌절하기보다는 어떻게든 그 테스트를 통과하게끔 구현을 하는 과정이 비록 머리는 아팠지만 몰입도 되고 즐거웠다! 무튼 이번 한 주도 고생 많았고 다가오는 주는 레벨 테스트가 있어 정말 눈코 뜰 새 없이 바쁠 예정이니 정신 똑바로 차리고 FAP들을 잊지 말고 꼭 지켜보자. 파이팅~!💪

    TDD를 향한 나의 마음..