Roen의 iOS 개발로그

이노베이션 캠프 2주차(알고리즘 주차) 회고록

by Steady On

급히 적는 알고리즘 주차 회고록

알고리즘 주차부터 개인 공부시간이 많아진다고 해서 1주차 팀플의 악몽을 떠올리며 조금은 마음을 놔도 되겠구나라고 생각했다. 그런데 생각지도 못한 복병이 있었다. 알고리즘 주차는 걷기반과 달리기반으로 나뉘는데, 걷기반은 일주일동안 풀어야 하는 문제수가 적다(달리기반이 더 어려운 문제를 푸는지는 잘 모르겠다). 나는 자바스크립트가 처음이어서 문법에 적응할 시간이 필요하다고 판단해서 걷기반을 택했다. 이번 주차 팀원들은 지난주차 팀원들과는 다르게 모두 말도 많이하고 화기애애한 분위기여서 한시름 놓았다고 생각했을때, 그 복병이 나타났다.

 

나빼고 모든 팀원들이 노베이스다.

 

 하지만, 첫날부터 팀장도 아닌 내가 사람들을 판단하고 이래라 저래라 할 수는 없었기때문에 한가지 제안을 했다. '저도 자바스크립트 처음인데, 혹시 저희 바로 문제풀지 말고 오전에는 자바스크립트 문법을 개별로 공부하고 오후부터 문제를 풀어도 될까요?' 모든 사람들이 동의했고, 나는 전자책 도서관에서 빌려둔 「혼자 공부하는 자바스크립트」를 보기 시작했다. 그리고 팀 톡방에 책 정보를 공유하고, 전자책 도서관에서 대여할 수 있는 방법까지 알려주었다. 모든 사람을 무작정 성심성의껏 도울 수는 없다. 도움을 받아들일 수 있는 사람인지 아닌지 먼저 판단하는게 중요했다. 오전에 조건문까지 공부하고, 오후에 반복문까지 공부한 후 문제 풀이를 시작했다.

 

오후 4시, 1차 문제 풀이 타임. 예상대로 각자 맡은 문제는 커녕 1번 문제에서 헤메거나 문제가 이해되지 않는다는 말이 많았다. 결국 내 오지랖이 꾸물꾸물 발동하기 시작했다. 1, 2번 문제를 풀고 설명한 다음, 기본 문법 숙지의 중요함, 알고리즘 문제를 대하는 방법을 설명했다. 기초 문법은 ES6로 숙지할 것을 당부했고, 알고리즘 문제는 일단 코드부터 쓰려고 하지 말고, 문제를 이해하고 어떻게 풀것인지 생각해보는 것이 중요하다고 했다. 코드를 못써와도, 틀려도 된다, 내가 어떻게 이 문제에 접근하려 했고, 어떤 방법을 사용하려 했는가만 가지고와도 충분하다고 했다. 그리고 다시 한 번 문법 공부하고 문제를 풀어서 저녁에 만나기로 했다. 저녁에 결국 아무도 문제를 풀어오지 못했고, 나는 그날 풀기로 한 8문제를 혼자서 접근 방법과 풀이 방법, 코드를 다 설명했다. 그리고 계속 덧붙였다. "저는 파이썬을 했어서, 예전에 비슷하게 문제를 많이 풀어봐서 지금 잘하는 것처럼 보이는거에요. 저를 기준 잡으시면 안돼요. 포기하지 마세요. 지금 이 시간이 기본 문법을 숙지하라는거에요. 여러분 프론트엔드 일하실때 이런 문제 푸실거 아니니까, 이건 컴퓨팅적 사고력과 기본 문법 숙지를 위한 타임이니까 포기하지 마세요."라는 말을 계속했다.

 

스터디 진행 방법

그 날 이후 스터디는,

  1. 아침 9시 : 모여서 그날 풀 문제(5개)를 각자 한번씩 살펴보고, 본인이 문제를 이해하고 풀 수 있겠다 싶으면 담당을 지정함
  2. 오전 : 담당문제를 풀이
  3. 오후 : 나머지 문제까지 모두 풀고 스터디 시작
  4. 코드조차 못쓴 사람 발표 : 먼저 자신의 문제 접근 방법, 어떻게 풀려고 했는지 : 가능한 방법인지에 대한 피드백
  5. 코드는 썼는데 못푼 사람 발표 : 어떻게 하려고 했는데 무엇이 안되었는지 : 코드를 보면서 알고리즘 문제인지 코드 문제인지 피드백
  6. 맞은 사람 혹은 담당자의 발표 : 코드리뷰
  7. 내가 다르게 푼 방식이 있으면 공유

이렇게 흘러갔다. 처음에 다들 발표를 어려워해서, '기업 코테보면 틀려도 어떻게 접근하려고 할 수 있는지 설명해야해요. 그 설명에 따라서 못 풀었어도 합격이 되기도 해요' 라는 말로 발표의 필요성을 알려주었다. 매일 5문제씩 풀면서 기초 문법만 사용한 코드 한가지, 그리고 함수를 사용하거나 조금 다른 방향으로 접근한 코드 한가지를 준비하는게 나도 쉬운 일은 아니었다. 수포자라는 팀원들에게 수열과 가우스 공식, 이중배열과 행렬에 대한 설명도 해야했다. 그래도 나에게 이 시간들이 버리는 시간은 아니었다. 팀원 중에는 나보다 더 기발한 생각을 하는 사람도 있어서 배우기도 했고, 어떻게 하면 좀 더 효율적으로 코드를 짤 수 있을까를 많이 고민할 수 있는 시간이었다. (ES6문법을 확실하게 연습하기도 했고!)

 

3,4일차가 되자 사람들이 서서히 향상되는 것이 보였다. '문제 이해가 안 된다. 뭘 써야할지 모르겠다'고 했던 사람들이 직접 어떻게든 자신이 생각한 방식을 코드로 쓰기위해 노력했다.  5, 6일차에는 서투른 코드지만 정답률도 많이 올랐고, 문제 접근 방식도 눈에 띄게 좋아졌다. 그렇게 목요일 오후에 시험을 치렀고, 다들 꽤 만족스러운 결과를 가지고 왔다.

 

내가 잘 이끌어서, 내가 잘 알려줘서 팀원들이 잘했다고는 생각하지 않는다. 다들 열심히 해서 그런 결과를 낼 수 있다고 생각한다. 금요일에 멘토님과의 상담에서 팀원들이 눈에 띄게 상향평준화 되었다고 말해주었고, 나는 피곤하고 할일이 쌓여있지만, 순수하게 그 사실이 기뻤다.

블로그의 정보

Roen의 iOS 개발로그

Steady On

활동하기