오늘 홀맨님이 3기 디코 방에 올려주신 말을 보고 뭔가 실마리를 찾은 것 같아서,, 정리해보려고 한다. 결론은 "작업을 잘게 잘게 쪼개서 부분적으로 달성, 개선시키면서 점점 큰 부분으로 나아가는 것"이다.
내가 평소 과제를 하던 순서는 이렇다. 먼저 보일러 플레이트인 메인 메서드를 써놓고, 손을 키보드에서 내린 후에 어떤 방식으로 할 지 생각한다. 이건 이렇게 하고, 저건 저런 방식으로 할까, 혼자 생각만 오래 하다가 한 줄 쓰고 또 생각해보고.. 한 줄 쓰고 또 생각해보고. 아, 이건 아닌 것 같아.. 하고 지우고. 그래서 남들보다 과제 완성하는 시간도 오래 걸린다. 물론 속도가 중요한 것은 아니지만 왜 이런 생산성이 낮은 방식을 나도 모르게 하고 있는 걸까 생각해 보았다. 아래 상황 말고도 더 문제점이 많겠지만 당장 생각나는 것들은 이것이다.
- 요구사항만 보고 전체 그림을 먼저 생각해버린다. 이 전체 그림을 위해서 어떤 방식으로 로직을 짜야하는 지를 계~~속 생각한다. 당연히 생각해내지 못해서 좌절하고 시간만 흐른다.
- 겨우 한 줄 한 줄 코드를 쓴 후 내 생각대로 작동하는 지 테스트를 자주 하지 않는다. 무언가를 실행시키는 코드가 들어가면 일단 의도대로 작동하는 지를 봐야 다음 파트로 넘어가는 것인데, 1 스텝, 2 스텝, 3 스텝까지 간 후에 "이 정도면 한번 중간 상황이나 볼까?" 하고 터미널로 컴파일해본다. 중간에 오타가 있거나 말도 안 되는 로직이 있어서 오류가 나면 또다시 좌절한다. 어디서부터 잘못된 지를 몰라서 처음부터 코드를 다시 본다.
- 2번 문제점이 이어져서, 코드를 가독성 있게 짜는 것에 집중하지 못하고 이야기 쓰듯이 구구절절...코드가 점점 길어진다.
어떤 방식으로 해야 효율적인지, 어떻게 쉽게 접근할 수 있는 지를 아샬님의 강의를 보고서도 캐치하지 못했다. 예를 들어 구구단 강의 영상에서도 아샬 님은 구구단을 맨 처음 기본 출력문으로 작성하신다. 그리고 점점 방법을 바꿔가며 개선해 나가신다.
//첫 번째 스텝
System.out.println("2 * 1 = 2");
System.out.println("2 * 2 = 4");
System.out.println("2 * 3 = 6");
System.out.println("2 * 4 = 8");
//두 번째 스텝
int x = 2;
int y = 1;
System.out.println(x + " * " + y + " = " + (x * y));
y = 2;
System.out.println(x + " * " + y + " = " + (x * y));
y = 3;
System.out.println(x + " * " + y + " = " + (x * y));
y = 4;
System.out.println(x + " * " + y + " = " + (x * y));
//세 번째 스텝
int x = 2;
int y = 1;
while (y < 10) {
System.out.println(x + " * " + y + " = " + (x * y));
y += 1;
}
이런 식으로 점점 스텝을 이어 나가신다. 강의를 2주차로 벌써 6개 정도 봤는데도 이 방법을 캐치하지 못하고 자꾸 전체 그림만 보며 자괴감에 휩싸였었다. 난이도가 조금 높은 문제만 나오면 일단 어떻게 해야 저 결과물이 나올지 끝 부분부터 생각했다. 나는 문제를 회피한다기보다 문제 앞에서 쭈그려 앉아서 우울해하는 스타일이다. 최근에도 계속 과제를 마주하면, 아 왜 아무 생각도 안나지... 나 진짜 바본가... 똥 멍청이인가, 하면서 그냥 높은 산 입구 앞에서 한숨만 푹푹 내쉬었다. 너무 기분이 다운되면 "나는 아직 초보니까.." 하며 합리화했다.
근데 홀맨님의 멘션을 보고 강의 영상들을 다시 보면서 생각해 보니까 말씀하신 방식이 나한테도 너무 잘 맞을 것 같은 거다..!! 요구사항을 보고 제일 작은 부분부터 구현하고, 그 다음 그 상태에서 바로 한 칸만 전진하고, 테스트해보고 잘 나오면 또 한 칸 더 전진하고,.. 그리고 이 방식으로 하는 걸 머릿속에 그려보니, 작은 부분부터 테스트를 계속하면 내가 원하는 결과도 자주 나올 확률이 높으니까 기분이 너무 좋을 것(?) 같았다ㅎㅎ. 지금은 중간중간에만 확인하니까 오류도 자주 나고, 코드 검사를 처음부터 다시 하느라 시간도 오래 걸려서 과제할 때마다 너무 괴롭고 자괴감만 들었어서. 만약 결과물이 제대로 안 나와도 작은 부분만 고치면 되니까 부담도 없을 것이다. 효율적으로 공부하는 방법을 모르다 보니 계속 길을 빙 둘러서 가고 있던 것 같다.
새벽에 보내신 멘션이라 아침에 확인하고 뭔가 큰 깨달음을 얻은 수도승의 마음으로ㅋㅋㅋ 타이쿤 과제를 시작했는데 평소보다 덜 힘들게 과제를 진행하는 중이다. 일단 1~2줄 쓰고 자꾸 확인하니까 내가 원하는 대로 나와서 기분이 좋다. PR 올리면 당연히 리팩토링 할 부분이 한 바가지 겠지만 지금은 그래도 순항하는 중이다. 사실 여기서 이렇게 좌절하면 안 된다고 생각하긴 했다. 2주 차까지는 쉬운 편이라고 하시기도 했고 3주 차부터는 진짜 어려워진다는 말을 들었어서. 나는 미리 겁먹고 걱정을 사서 하는 경향이 있는데 나중에 점점 어려워진다는 생각이 드니까 방법을 바꿔볼 생각은 안 하고 자꾸 힘든 마음만 드는 거다. 이 방식으로 이번 주차 마지막 퀘스트인 타이쿤도 천천히 해내 보자,,,,작게 작게 쪼개면서 테스트하고 다음 스텝으로 나가는 게 나중 되면 귀찮아질 수도 있지만 그래도 좌절하고 우울해지는 것보단 낫다는 생각으로!!!
'TIL' 카테고리의 다른 글
시간 분배 연습 (22.08.27 TIL) (0) | 2022.08.27 |
---|---|
아는만큼 보인다! (22.08.26 TIL) (0) | 2022.08.26 |
습관성 코드 남발하지 않기 (22.08.24 TIL) (0) | 2022.08.24 |
언제나 조져지는 건 나였다 (22.08.23 TIL) (0) | 2022.08.23 |
반복문 너란 아이.. (22.08.22 TIL) (0) | 2022.08.22 |
댓글