들어가면서
2주차도 빠르게 지나갔다. 벌써 3주차라니까 시간이 정말 빠른 것 같다. 스터디원들과 만난 게 일주일 전인데, 이주만 지나면 프리코스가 끝난다니... 믿기지가 않았다.
나는 항상 매일 살아가고 배우면서 가장 못하는 사람이 되고 싶었다. 조금이나마 아는게 생기면 아는 척 하려고 드는 내가 싫었고, 끊임없이 부족한 사람으로서 배우고 싶었기 때문이다. 따라서 이번 프리코스의 "나" 를 그렇게 잡았다. 계속해서 배워야 하는 사람으로..!
아마 프리코스 뿐만 아니라 사회에 나가서도 마찬가지, 내가 누군가의 사수나 멘토가 되었어도 마찬가지일 것이다. 항상 모르는 사람의 시선에서는 다른 관점에서의 호기심이 생긴다. 나도 호기심이 굉장히 많은 편인데, 누군가에게 모르는 부분을 마구마구 물어보는 것을 좋아한다. 그럼으로써 토론이 진행되는 거나 모름의 미학(?) 을 좋아한다. 이번주차는 계속해서 부족한 사람으로써 나를 돌아봤던 것 같다.
저번주차 미션 회고
저번 주차에 어떤것을 지역변수로 전역변수로 선언해야 할지 구현하면서 계속 헷갈렸다라고 했었는데 그부분을 우테코에서 올려주신 공통 피드백의 영상에서 명확히 찾았다. 나는 TDD 기반 개발을 제대로 실천하지 못하고 있었음을 명확하게 깨달았다.
영상을 보는데,
“지금 어떤 변수를 어떻게 지정할지는 할 단계가 아니다”
라고 하신 걸 보고 반성이 많이 됐다. 1주차에 TDD기반을 해본다고 도전을 외치고선, 그저 테스트 케이스를 나누는 것만 하고 있었다. TDD 는 테스트 코드를 작성해보는 것이 아니라, 테스트를 기반으로 구현을 한다는 아주 중요한 점이 있었는데 실천하지 못한 것이다.
나는 결국 1주차 때는 작년의 나와 달라진 점이 없었다... 따라서 이번 주차에는 크게 깨닫고 공통 피드백에 있는 내용을 꼼꼼히 확인하며 지켜보는 것을 목표로 잡았다.
2주차 프리코스 "경주 차 미션"
이번주차 미션은 Racing Car였다.
아무래도 나는 프리코스 재수생이다 보니 저번과 같은 문제가 출시되었음을 알아챘는데, 작년에 내가 어떻게 풀었는지는 보지 않기로 했다. 작년에 비해서 내가 어떻게 달라졌고, 코드 작성이나 생각이 달라졌는지 끝나고 확인해보고 싶었기 때문이다. 작년에는 되게 막혀서 끙끙 앓았는데 이번에는 생각보다 순조롭게 설계했다.
2주차 첫 TDD
다만 저번과 다른점은 TDD를 수행한 것이었다. 나는 이번에 TDD를 처음 수행해봤기 때문에 가이드가 필요했다. 따라서 우테코에서 제공해주신 영상을 보며 감을 잡았다.
- 클래스를 생성하고, 빈 메소드들을 정의한다.
- 빈 메소드를 테스트 돌린다.
- 테스트가 실패한다.
- 실패한 테스트를 성공할 수 있게 변환한다.
이런식으로 계속해서 구현해나갔고, 테스트 도구가 익숙치 않아서 첨부해주신 문서를 보면서 관련 도구를 사용했다.
혼자서 TDD를 하면서 느낀 점이 있다.
- 출력은 테스트 코드를 어떻게 짜야할까
- 랜덤으로 출력하는 (이번우테코에서) 것은 테스트 코드를 짜야할까?
- 테스트코드 때문에 메서드를 public으로 둬도 될까?
역시 부딪혀봐야 느끼는 것이 있는 것 같다. TDD 를 모두 해야 하는 거니까 한다는 마인드보다, 의문을 가지면서 하나씩 해결해나가는 게 중요한 자세라는 걸 깨달았다. 따라서 나만의 의문을 가지고, 이번주 스터디에서 자유롭게 얘기해보기로했다.
이번주 스터디 회고
팀원들이 각자의 일주일을 보내며 이만큼의 주제를 들고 왔다. 이렇게 노션에 주제 작성하면서 하나씩 의견을 채워나가고, 정답은 없지만 열심히 토론하는 과정이 재미있다. 특히 재밌었던 건 테스트 커버리지였는데, 인텔리제이에 테스트 커버리지 기능이 있다는 걸 스터디원들 덕분에 처음 알게 되었다.
1. 테스트 커버리지에 대해 알았다.
그래서 돌려봤는데 신기하게도 100퍼가 떴다. 상한선이 60-80이라는 말을 들었는데, 너무 지나치게 테스트 한 건가..? 다음에는 테스트 커버리지에 대해서 조금 더 숙지하고 사용해보기로 했다. 첫 TDD 였으니까 2주차의 결과에 만족하고, 3주차에서는 테스트 커버리지도 신경쓰면서 상한선을 넘겨보기로 했다.
2. 상수화의 기준
1주차 스터디 때도 상수화의 기준에 대해서 이야기가 나왔었다. 그런데 항상 코드 주관 차이지 않을까 라는 정답만 나왔었다. 이번도 어김없이 static에 대해 이야기가 나왔다... 그런데 또 같은 결론만 나와서 정말 이건 주관 차이일까 라는 생각이 들었다. 나는 사실 static을 써도 되고 안 써도 된다는 입장(?) 이라 코드에 정답이 없다지만 명확한 기준이 없으니 관련된 자료같은 건 없을까 궁금해졌다.
그러다가 우테코 커뮤니티에 어떤 분이 static에 대해 올려주신 글을 접하게 되었다.
객체는 상태와 행위로 구성된다. static 클래스는 사실 메서드와 다름 없다. 내부 상태에 의해 객체 안의 메서드의 반환 값이 달라진다면, static으로 선언하기 보단 객체로 두는 것이 낫다.
나는 함수와 메서드의 차이도 잘 모르고 있었다. 함수는 전달 받은 입력에 의해서만 결과가 바뀌며, 메서드는 파라미터 뿐만 아니라 내부 상태에 의해서도 변화하는 것을 말한다.
올려주신 좋은 글을 보며 여러가지를 깨달았다. 객체가 상태와 행위로 구성되며, static은 객체의 장점을 사용할 수 없다는 점이 크게 와닿았다. 굳이 상태가 있지 않고 행위만 있어도 되는 view (상황에 따라 다르겠지만) 같은 경우에는 static으로 사용해도 좋았겠다라고 생각했다. 이렇게 명확해진 생각을 들고 다음주차는 스터디원들과 이 주제에 대해서 답을 낼 수 있을 것이라고 생각하니 기분이 좋아졌다 ㅎㅎ.. 세상에는 진짜 좋은 사람들이 많구나 느꼈다. 나도 이번주차에는 이 분 덕에 static에 대한 고민을 좀 덜 수 있을 것 같다.
3. 클린 코드 7장 읽어보기
우리 팀원들은 저번주차에 TDD 에 대한 책을 읽어보기로 다같이 다짐했다. 따라서 클린코드 7장의 "테스트 코드" 를 읽고 서로의 주관을 얘기해보기로 했다.
사실 읽기 전에는 클린 코드라는 책이 호불호가 많이 갈려서 걱정을 했었다. 하지만 모든지 읽어보고 내 생각을 얘기해야 한다는 것,,, 우리에게 도움될 요소들은 뽑고, 도움되지 않을 것들은 스스로 생각해서 걸러내면 된다!
따라서 클린 코드 7장에 대한 서로의 주관을 얘기해보는 시간을 가졌다.
노션에 서로의 이야기를 적으면서 토론하니까 재밌었다 ㅋㅋㅋ 나는 클린 코드 7장을 노션에 직접 적어보면서 읽었었는데, 역시 유명한 도서이니 만큼 배울점이 많았다. 특히 Null 값 전달, 반환하지 말라는 말은 너무 내 코드 저격 느낌이라 더욱 반성하게 됐다.
4. 포비님의 주제 : 새로운 코드를 작성하는 역량과 다른 사람의 코드를 읽고 분석하는 역량 중 어떤 역량이 더 중요할까?
개발자의 삶을 살아가면서 새로운 코드를 작성하는 시간과 다른 사람이 작성한 코드를 읽는 시간의 비율이 얼마나 될까요? 새로운 코드를 작성하는 역량과 다른 사람의 코드를 읽고 분석하는 역량 중 어떤 역량이 더 중요할까요?
프리코스 활동에 서로 간에 코드 리뷰를 하는 것을 추천하고 있는데요. 코드 리뷰를 하면서 새로운 것을 배우는 것만 있을까요? 다른 좋은 점은 없을까요? 한번 고민해 봤으면 하는 바람으로 글 남겨 봅니다.
프리코스의 절반이 지나가고 있네요. 2주 동안 열심히 몰입하는 모습 보니까 넘 좋네요. 남은 2주도 잘 마무리해봐요.
스터디 날 당일 새벽에 포비 님께서 주제를 남겨주셔서 각자의 생각을 얘기했다.
일단 나는 생각해보지도 못한 주제라서 생각하는데 시간이 오래 걸렸다.
사실 개발자는 내 코드를 작성하는 시간 보다 다른 사람의 코드를 보는 시간이 더 많을 지도 모른다. 지금 나는 간단한 프로젝트와 우테코만 하고 있는데도 코드리뷰를 하면서 많은 사람의 코드를 보기 때문이다.
새로운 코드를 작성하는 것은 모든 개발자들에게 기본적인 역량일 것이다. 하지만 다른 사람의 코드를 본다는 것은 새로운 시각과 이 사람의 주관을 알게 해준다. 어떻게 보면 새로운 코드 작성법을 배우는 것보다 더 내 자신을 성장시킬지도 모른다.
타인의 코드를 보고 분석하는 능력은 그 사람의 시각을 배우고, 접근 방식의 주관에 대해 알게 된다. 세상에는 다양한 사람들이 있고, 그 중에 나와 비슷한 사람과 다른 사람들도 존재한다. 나는 프리코스를 하면서 나와 비슷하게 코드를 쓴 사람도 봤고 다르게 접근한 사람도 봤다. 비슷한 사람에게는 어떻게 나와 같이 접근했는지가 궁금하고, 다른 접근을 한 사람은 방식이 궁금해진다.
서로 피드백을 주고받고 문제 접근 방식에서 배울점을 얻으며 내가 놓쳤던 부분들을 발견하게 되는 것이 진정한 프리코스 코드리뷰의 묘미이지 않을까 싶다. 실제로 나도 매번 코드리뷰를 통해서 놓쳤던 부분들을 하나 둘씩 발견하고 주차마다 고쳐나가는 중이다.
스터디원들도 자신의 코드보다 다른 사람의 코드를 보는 시간이 많다는 분들이 대다수셨다...이런 관점에선 생각해본적이 없는데, 깊은 생각을 할 수 있고 나눌 수 있어서 행복했다 ㅎㅎ
이 외에도 이야기를 많이 나누었는데, 코딩을 하는 스터디가 아니라 주제에 대한 이야기를 나누면서 배워나가는 스터디는 처음이었다. 앉아서 혼자 코드 치는 것도 자신에겐 도움이 되겠지만, 다른 사람과의 시각을 나누는 것이 이렇게 재밌고 유익하구나를 느끼는 것 같다...
다음 주차 목표
벌써 프리코스의 반이 지났다. 이번주차에는 TDD를 실천했고, 스터디를 참여하고, 코드 리뷰를 주고 받았다.
다음주차부터는 한 번 해본 TDD 감을 바탕으로 더 깊게 파고들고 싶다. 처음에는 TDD에 대해 호불호가 많이 갈리는 것 같아서 나한테 잘 맞을까? 라는 생각이 많았는데, 오히려 빨리 구현하고 오류가 나는 것보다는 순차적으로 하면서 검사하는 로직이 나에게 잘 맞아서 신기했다. 프로젝트를 하면서 빨리 구현해야 하는 해커톤 형식만 해와서 내 코드를 천천히 바라보지 못했던 것 같은데, 이번주차에 처음으로 실천해보면서 시야를 넓히기도 하고, 스스로 많이 성장하고 있다고 느꼈다.
이번주차도 프리코스 덕에 일주일 동안 성장할 수 있었다. 우테코에서 만난 스터디원들과 함께 혼자서는 힘들었던 고민들에 대해서 이야기 나누고, 우테코 외에 공통점도 찾고, 시야도 넓힐 수 있는 좋은 기회였다. 다음주차에는 내가 어떤 모습으로 성장할지 더 기대가 되는 것 같다.
'ETC > 2024 우테코 프리코스' 카테고리의 다른 글
[우테코 파이널 준비] 저번 기수 문제 풀어보기 및 회고 (0) | 2024.12.12 |
---|---|
우테코 프리코스 1주차 솔직 회고 (1) | 2024.10.23 |