우아한테크코스 5기 프론트엔드 프리코스 1주차 회고
우아한테크코스 1주차가 끝났습니다.
다음주 차 미션을 푸는 것도 중요하지만 1주차를 진행하고 느낀점들을 남기는 일도 정말 중요하다 생각합니다.
정말 끝나고 느낀점이 많았는데요... 이 1주차 회고에 남겨봅니다.
📌 우아한테크코스 1주차 과제 제출 주소 및 소감
https://github.com/woowacourse-precourse/javascript-onboarding/pull/209
📌우아한테크코스 1주차 과제 내용
https://github.com/soohyun-dev/javascript-onboarding/tree/soohyun-dev/src
*과제 내용에 대한 코드나 풀이법에 대해서는 위 과제 내용 링크에 상세히 기재하였으니, 참고하시길 바랍니다.
이번 1주차 미션은 이전 코딩테스트 문제들을 푸는 시간이었습니다.
2번 같은 경우 어떻게 삭제해야할지 정확히 명시가 되어있지 않아서 두가지 방법 중 하나를 선택해서 풀었어야 했습니다. (이는 출제자 분의 의도였습니다.)
또한,7번은 특히 여러 함수로 구분해서 풀려고 노력하였습니다.
푸는 난이도는 어렵지 않았으나 꼼꼼하게 풀려고 하였습니다.
기존에 제가 진행하던 코딩테스트 풀이와 다르게 기능목록도 문제를 풀기 전에 명시를 해야했고, 정교한 작업들이 필요로 했습니다. 제가 풀던 방식이랑 정반대였습니다.
처음에는 많이 낯설었는데, 계속 의식하면서 풀려고하니까 금방 또 익숙해지더라고요.
나름 잘 풀었다고 생각하고 제출한 뒤 README.md 작성이랑 소감 정리에 신경을 좀 더 썼었습니다.
하지만, 1주차가 끝난 뒤 코드리뷰를 해보니 정말 정말 부족한 것들이 많았습니다.
제가 느낀점들은 크게
1. 쓸데없는 변수 선언들이 많았다.
2. 함수를 solution 안에 선언한 점.
3. let 과 const 를 적절하게 쓰지 못했다.
4. 처음의 로직을 제대로 설정하지 못하면 나중에 바꾸기가 너무 힘들어진다.
5. 이번 주차는 문제만 잘푸는게 목적이 아니였다. 과제의 의도에 맞게 정확하게 못풀었다.
6. 내가 다시봐도 설명하기 힘든 코드는 남이 봤을 때, 최악인 코드이다.
라는 점들입니다.
하나씩 파헤쳐 보겠습니다.
1. 쓸데없는 변수 선언들이 많았다.
수정 전
3번 문제 코드 일부이다.
restNum? 굳이 왜 선언했지? 그리고 심지어 const 도 아니고 let 이다.
최악이다...
return 하는 값이 나머지의 값이다. 이걸 말하고 싶어서 작성한 변수였는데,
이미 함수가 무엇을 작업하는지를 말해주고 있는데 굳이 쓸 필요가 있었나 싶다.
수정 후
수정 전
1번 문제 코드 일부이다.
여기서도 똑같은 실수를 하였다.
이미 함수가 무엇을 리턴할 것인지를 말해주고 있다.
또, let => const
수정 후
변수가 어떤 값인지를 나타내주는 역할을 하는 건 맞지만,
이렇게 명확한 값에도 변수를 선언하고 바로 그 변수를 선언해버리는 로직은 불필요한 것 같다.
가독성이 더 좋다고 생각해서 한 작업인데, 너무 과했던 것 같다.
2. 함수를 solution 안에 선언하였다.
이번 문제 풀이에서 함수를 solution 안에 모두 선언했다.
이유는 전역 변수들을 관리하기 편하고 프로그래머스 문제를 풀때도 다 이런식으로 풀었어서 큰 문제가 없겠다라고 생각했는데, 큰 착오였다.
이것은 코드가 짧을때는 큰 문제가 없었지만, 6번 7번과 같은 흐름이 긴 코드에서 명확한 문제가 생겼다.
위는 7번 코드의 일부이다.
solution 내부에 선언한 코드인데, 파라미터로 eachFriend, idx 만을 받고 있다.
근데, 갑자기 뜬금없이 idIndexInfo ?, friendsInfo? friendsScore?
아니 얘네들은 어디서 튀어나온 애들이야?
이 값들을 확인하려면 밑에 전역 변수로 선언한 애들을 또 확인하러 밑으로 가야했다.
나는 이 흐름을 알고 있기 때문에 그럴 필요가 없었지만, 남들이 읽었을 때 적잖게 당황할 코드이다.
오르락 내리락하면서 이 변수가 무엇인지 확인해야하고 이는 가독성에 엄청나게 해를 끼치는 코드이다.
정말 잘못 작성한 코드이다....
외부 함수로 둬야 전역 변수에 너무 기대지 않고 좀 더 읽기 좋은 코드가 나올 것이라는 것을 느꼈다.
3. let 과 const 를 적절하게 쓰지 못했다.
정말 이번에 크게 많이 한 실수이다.
바로 위의 코드에서도 name1 과 name2 를 let 으로 선언할 필요가 없다.
단순 정렬을 위한 비교였는데, 또 let으로 선언하고 있다.
이런 코드들이 진짜 여럿 보였다.
나름 변할 값은 let , 상수는 const 로 선언하였는데
꼼꼼함이 부족했던 부분이였다.
깊게 반성한다...
4. 처음의 로직을 제대로 설정하지 못하면 나중에 바꾸기가 너무 힘들어진다.
기능 목록을 작성하고 문제를 풀려고 접근하였다.
하지만, 이 기능 목록을 그냥 작성만 하는 것보다 정확하게 작성하는게 중요하다.
7번 과 같은 경우 이름을 인덱스로 관리하려는 작업을 기능목록으로 작성하고
전체 로직 코드를 작성하니
100줄이 넘는 코드가 처음에 나왔었다.
나름 계속적으로 리팩터링을해서 80줄대로 줄였지만, 다른 로직을 생각하지 않고 그 코드내의 로직내에서만 리팩터링하려고 애쓴것 같다.
좀 더 효율적인 로직을 생각해볼걸 하는 아쉬움이 정말 남는다.
5. 이번 주차는 문제만 잘푸는게 목적이 아니였다. 과제의 의도에 맞게 정확하게 못풀었다.
나는 여태 1000문제가 넘는 알고리즘 문제들을 풀었었다.
그 덕분인지 이번 주차의 문제들은 다 한번씩 풀어본 문제들과 같은 느낌이 들었고
해결법을 생각하는데 정말 오래걸리지 않았다.
하지만, 이렇게 빨리풀고 끝내는게 과연 이번 주차의 목표였을까?
절대 아니다.
왜 코딩테스트를 없앤 것인지 이유를 정확히 알자.
이번 주차는 이것들보다 JS 컨벤션을 더 지키고, 가독성 있는 코드, 의미 있는 변수
이런 것들이 훨씬 중요했다고 생각한다.
이것을 나도 인지하고 기존 문제풀이와 다르게 접근하였는데, 처음해보는 방식이다 보니 정말 서투르고 어려웠던 점들도 많았다.
해본 경험이 많이 없어서 이정도면 최선이겠지? 오 전보다 훨씬 낫네 라는 생각이 들었었는데,
정말 부끄러운 생각이었다....
6. 내가 다시봐도 설명하기 힘든 코드는 남이 봤을 때, 최악인 코드이다.
어제 내가 푼 코드들을 스터디원분께 설명하는 시간을 가졌다.
긴 코드들을 설명하면서 흐름을 다듬는 시간들이 필요했다.
이게 맞는 것이라 생각하는가?
내가 쓴 코드인데 내가 그 흐름을 맞게 타야만 이해를 할 수 있다니.
함수와 변수를 더 잘 작성했다면, 이런걸 더 충분히 줄일 수 있겠다라고 생각한다.
앞으로의 미션들은 남들에게 읽히게해도 금방 이해할 수 있는 코드로 작성할 수 있게 노력하고 또 노력하겠다.
느낀점이 정말 많았던 1주차였다.
그 과정에서도 느낀게 많았지만, 오히려 과제가 종료되고 코드를 리뷰하면서 느낀것이 정말 많았다.
나는 더 힘들었어야 했다.
변수를 더 잘 작성하려고 노력했어야 했고,
함수를 더 잘 작성하려고 노력했어야 했다.
힘들지 않으면 내가 성장하는 것이아니다.
의미없는 시간들이다 라는 것을 명심하고 또 명심해야한다.
포비님이 어제 코수타에서 말해주셨다.
알고리즘 풀이에 너무 많은 시간을 쏟지 말아라
머리를 또 띵! 하게 맞은 순간이였다.
심지어 나는 몰입 경험에 380일 넘게 알고리즘 풀이를 연속으로 진행한 내용을 담았었는데,
그게 그렇게 의미있는 일이 아니였구나 라는 것을 느꼈다...
실무에서는 문제들처럼 요구사항이 정확하게 주어지는 경우들이 잘 없었고,
오히려 기능 목록을 잘 설계하고 문제 푸는데 접근하는 것이 훨씬 중요한 것이였다.
나는 그동안 이와 상반되는 공부들을 하고 있었기에 정말 여기서 오는 충격이 컸다...
하지만, 지금이라도 알았다는게 또 다행이다 싶고 이번 우테코를 통해 정확하게 알게된 점이라 생각한다.
앞으로 어디에 무게를 더 실을지 방향을 알려주셨다.
이제 진행해야할 2주차에 대한 마음가짐을 정리해본다.
1. 다른사람들이 읽어도 이해하기 쉬운 코드
2. 의미있는 변수 작성 그리고, 쓸모없는 변수는 없애기
3. 기능목록을 잘게 쪼개고 또 잘게 쪼개라.
4. 빨리 풀려고 하지마라. 정확하고 명확하게 하는 것이 더 중요하다.
5. 요구사항을 정확히 파악하라.
6. 커밋 메시지를 읽어봐라 잘 읽히고 의도가 잘 파악되어야 한다.
7. 공백 라인을 의미 있게 사용하자.
8. 합격하려고 노력하는 것보다 이 과정을 통해 내가 더 성장해 나아가는 과정을 겪어라.
다음 2주차도 파이팅해보자!
1주차보다 나은 내가 되기 위해 노력할 것이다.
'성장기록 > 우아한테크코스' 카테고리의 다른 글
우아한테크코스 5기 프론트엔드 프리코스 그 이후 (0) | 2022.11.24 |
---|---|
우아한테크코스 5기 프론트엔드 프리코스 4주차 회고 (0) | 2022.11.23 |
우아한테크코스 5기 프론트엔드 프리코스 3주차 회고 (1) | 2022.11.16 |
우아한테크코스 5기 프론트엔드 프리코스 2주차 회고 (2) | 2022.11.09 |
우아한테크코스 5기 지원 소감 (0) | 2022.10.25 |