티스토리 뷰

생각정리

코딩 강사가 되었다

안양사람 2024. 6. 26. 22:58
728x90
SMALL

서론

 친구에게 부트캠프 강사나 멘토를 하면 어떻겠냐는 얘기를 들었다. 평소에도 교육이나 지식 공유에 관심이 있었고 그런 기회가 온다면 잡아야겠다는 생각을 예전부터 가지고 있었다. 그래서 바로 면접을 지원했고 합격해서 12월말부터 6월까지 한 기수를 담당하는 토요일 주강사로 일하게 되었다. 어느덧 절반이 넘는 시간이 지났다. 그래서 그동안 들었던 생각을 정리해보려고 한다.

 

본론

 내가 하는 일은 크게 질문 답변, 보충수업으로 이루어진다. 수강생들은 비전공자에 완전 처음 개발하는 사람부터 전공자까지 다양하게 있는 것 같다. 나는 비전공자에 혼자서 코딩을 공부했다. 1년 먼저 코딩을 배운 친구가 처음에 길라잡이를 해주기도 했지만 대부분의 시간은 혼자서 머리를 싸매가며 공부했다. 그래서 그들의 입장이 공감된다. 게다가 부트캠프 특성상 진도가 꽤 빠르다. 나였어도 따라가기 벅차다고 생각한다. 그리고 그런 수강생들을 도와주는게 나의 역할이다. 

 

기억나는 경험을 몇가지 있어서 적어보겠다.

 

구글링하는 방법 알려주기

 처음에 구글링 하는게 정말 어렵다. 어디에서 어떤 문제가 발생했는지 알아도 문제 해결이 쉽지 않다. 그리고 문제 해결이 쉽지 않은 가장 큰 원인은 구글링이 미숙하기 때문이다. 이럴때는 어떻게 도움을 주는게 당사자에게 가장 큰 도움이 될까 생각해봤다. 정답을 알려주는건 좋은 방법이 아니다. 앞으로 수많은 문제를 마주칠텐데 그 수 만 중 하나를 해결해주는건 의미가 없다. 가장 중요한건 물고기를 주는게 아니라 물고기 잡는 방법을 알려주는 것이다. 그래서 나는 이미 정답을 알고 있지만 최대한 정답을 모른다고 가정하고 문제를 해결하는 방법을 보여줬다. 그리고 잡는 법을 알려줬으니 이제는 당사자가 낚시를 해봐야한다. 그리고 그걸 옆에서 조급해하지말고 천천히 지켜보면서 가벼운 조언정도만 해주면 된다. 

 

단계별로 생각하는 법 알려주기

 주강사를 하면서 가장 많이 드는 생각은 수강생들이 어디서부터 어떻게 해야될지를 모른다는 느낌을 받았다. 예를 들면 "타입스크립트가 어려워요. 리액트를 모르겠어요. 수업들을 땐 알았는데 직접 하려니까 너무 막막해요." 같은 얘기를 듣는다. 이럴때는 나도 좀 난감하다. 어디서부터 얼만큼 어떻게 알려줘야할까. 기본 수업이 있는데 그런 기본 수업을 내가 한번 더 하는게 맞을까 라던지.. 그래서 나는 단계별로 생각하기를 알려주고 있다. 페이지네이션 컴포넌트를 만들면서 연습을 한 경험을 적어보겠다.

 

페이지네이션 컴포넌트로 단계별로 생각하기

단계별로 생각하기 위해서는 먼저 요구사항을 명확히 정의해야한다. 그렇기 때문에 먼저 요구사항을 막 생각해보라고 했다. 생각해보면 이 단계는 데이터베이스 설계를 하기 전 요구사항을 분석하는 것과 동일하다. 

 

요구사항 막 분석하기

  • 이전버튼, 다음버튼 만들기
  • 총데이터개수에 다른 페이지 개수 불러오기
  • 페이지숫자만들기
  • 한페이지에 보여줄 데이터 개수 지정해주기
  • 각각 이전 이후 버튼이랑 숫자버튼 눌렀을 떄 이벤트 핸들러함수 만들기
  • 버튼눌렀을때 숫자 초록색되도록 테두리만들기 => selectedUI 구현
  • 이전과 다음 버튼이 상황에 따라 존재하거나 존재하지 않음.

 

그리고 이 요구사항을 정리해보면 다음과 같다.

 

요구사항 정리하기

  • 이전버튼, 다음버튼
    • UI 구현
    • 이벤트핸들러(페이지 이동) 구현
    • 경우에따라 존재 여부 판단
  • 페이지 숫자 버튼
    • UI 구현(selected, hover)
    • 이벤트(페이지 이동) 핸들러
  • 총 데이터개수에 따라 최대 페이지 결정하기
  • 한페이지에 보여줄 데이터 개수 지정해주기

 

이제 정리된 요구사항을 가지고 단계별로 생각할 수 있다.

 

단계별로 생각하기

  • 1단계(UI 구현)
    • 페이지 숫자 버튼 컴포넌트 구현(이벤트핸들러포함)
    • 이전 다음 버튼 컴포넌트 구현(이벤트핸들러포함)
  • 2단계
    • 페이지네이션 컴포넌트의 인터페이스(Props) 결정하기 ex)
      • 현재 페이지 상태관리
      • 한페이지에 보여줄 데이터 개수 지정하기
      • 총 데이터개수에 따라 최대 페이지 결정하기
  • 3단계: 본격적인 구현
    • 가장 기본이 되는 케이스 코드 작성
    • 예외적이라던가 어려운 코드 작성.

 

테스트 환경 세팅하기

그리고 작업을 할 때는 테스트를 하면서 진행해야한다. 스토리북이나 jest를 활용할 수 있지만 아직 코딩한지 몇달되지도 않은 수강생들에게 이런것까지 알려주는 것은 바람직하지 않다. 현재 상황에 맞게 도구를 선택해야 한다.  그래서 나는 다음과 같이 Pagination 컴포넌트를 테스트할 수 있게 세팅했다. (그 다음은 구현레벨이라서 굳이 글로 쓰지는 않겠다.)

1. Pagination 컴포넌트 뼈대 생성

2. Pagination을 테스트하기 위한 페이지 연결하기

3. Pagination 내부 구현

 

왜 하는지 알려주기

 코딩에 입문한지 3달도 안되어서 리액트를 배우는건 너무 힘들다. 리액트가 아니라 자바스크립트로 제대로 모를 시기다.

그래서 그런지 리액트를 왜 쓰나요 라는 질문을 했을 때 제대로 대답하지 못하는 수강생들이 많았다. 리액트같은 어려운걸 왜 써야할까 라고 생각하는게 아니라 리액트를 왜 쓸까. 쓰면 무슨 장단점이 있을까. 이런 생각을 하는게 중요하다.

 

의사소통능력

강사를 시작한 이유 중 하나는 내 의사소통능력을 기르기 위해서다. 이전부터 의사소통능력을 향상시키고 싶었는데 누군가를 알려준다는건 이 능력을 기르는데 도움이 될거라고 생각했다. 강의를 잘 했다고 생각한 날에는 일 끝나고도 기분이 좋았는데 제대로 설명하지 못했다고 생각하는 날에는 끝나고도 열기가 남아있었다. 아직 여전히 부족하지만 그래도 나름 발전시킨것같아서 뿌듯하다. 

 

결론

좋은 경험이였다. 나름대로 열심히 했는데 계약 연장 제안도 받았다. 하지만 연장하지는 않았다. 나는 그 시간에 지금의 나에게 더 가치있는 일을 하고 싶다. 강사는 그만두지만 심화학습 멘토를 맡게 되었다. 다음글에서...

728x90
LIST
댓글
공지사항