Fast campus School

프론트엔드 개발

누구나 쉽게 프로그래밍을 배울 수 있다면 얼마나 좋을까?

프론트엔드 개발 스쿨 김승하 강사님

2017.10.12 | 1631 명 읽음

수강생들의 심각한 얼굴이 갑자기 환하게 바뀌는 순간이 있다. 
고민되던 지점을 해결해냈다는 듯이 고개를 끄덕이고, 이제야 이해했다는 표정을 짓는다.
앎의 단계로 들어가는 그 순간을 지켜볼 때 느끼는 보람과 가치, 
바로 내가 강의를 하는 이유이다.



수학교육과 사범대 졸업생이 개발자가 되다


수학교육과에 진학했지만, 어릴 적부터 프로그래밍을 배우고 싶은 마음을 갖고 있었다. 결국 컴퓨터 공학을 복수 전공으로 선택했고, 그 덕에 전산병으로 지원할 수 있었다. 그렇게 개발의 첫 발을 디딘 곳은 다름이 아니라 군대였다. 전산병으로 지내면서 개발 공부도 원 없이 하고, 자료도 마음껏 찾아볼 수 있었다. 또 개발자인 선임을 만나 인생 처음으로 서비스 개발을 경험했다. 이 경험이 계기가 되어 꾸준히 개발자로 커리어를 이어나갈 수 있었다. 


군대 선임이 CTO로 있었던 스타트업에 창업 멤버로 조인했던 게 첫 회사였다. 모바일 유저 분석 서비스를 하는 기술 스타트업으로 웹 개발 전반을 기본으로 다뤘다. 창업 멤버들끼리 경험이 없는 상태에서 계속 맨땅에 헤딩 하며 코딩 스킬을 쌓았다. 다음에는 도도 포인트 서비스를 만드는 스포카(Spoqa)로 이직하여 문자 마케팅 솔루션인 '도도 메시지'를 개발했다. 좋은 개발 문화를 구축하기 위해 노력하는 회사였고, 실력 좋은 개발자들과 함께 계속 성장할 수 있는 곳이었다. 어깨 너머로 개발을 잘 하는 사람들을 옆에서 지켜보며 공부했고, 내게 주어진 업무는 처리하기 위해 최선을 다했던 시간이었다. 


개발자로 어느 정도 성장했다고 느꼈을 때, 한동안 잊고 지냈던 교육에 대해 다시 생각하게 되었다. 그리고 가장 최근에 다닌 회사가 수학 교육 플랫폼을 만드는 노리(Knowre)였다. 개발 공부를 시작한 지 7년이 되던 해, 패스트캠퍼스 스쿨에서 프로그래밍 강의를 할 기회를 갖게 되었다. 진지하게 커리어 전환을 고민하는 사람들에게 프로그래밍 교육을 한다는 것에 흥미를 느꼈다. 



어떻게 가르치면 더 잘 이해할 수 있을까?



이미 개발을 잘 알고 있는 사람을 가르치는 것은 확실히 편하다. 개발 경험이 있는 사람들은 컴퓨터 분야에서 자주 사용되는 언어에 익숙한 상태라, 그런 '개발자의 언어'를 사용하면 굉장히 빠르게 진도를 나갈 수도 있기 때문이다. 하지만 프로그래밍을 처음 배우는 사람들을 잘 가르쳐서 제대로 이해시키는 강의를 하고 싶다는 욕심이 생겼다. 그래서 프로그래밍을 처음 배우는 사람들의 눈높이에 맞춘 효과적인 강의법을 고민하게 되었다. 


사범대 출신이다 보니 대학에서 배운 교육학 지식이 도움이 되기도 했다. '조작적 구성주의'라는 이론이 있는데, 조작하는 활동을 통해 학습자가 자연스럽게 지식을 받아들일 수 있도록 잘 도와주는 교육이 좋은 교육이라는 의미다. 교생 실습에서 가르쳤던 지수함수 수업을 예를 들면, 기존 교육 방식은 지수함수의 그래프가 어떻게 생겼는지를 이해하게 만들기보다는 그냥 외우게 시키는 경우가 많다. 나는 이 그래프가 어떻게 변하는지를 '지오지브라(GeoGebra)'라는 교육용 소프트웨어를 이용해서 학생들에게 직접 보여줬다. 일단 눈으로 보이면 학생들은 흥미를 보이고, 수업에 대한 집중도도 자연히 높아질 수밖에 없다. 


이런 방식은 프로그래밍 강의에도 적용하고 있다. 직접 써보고 동작하는 것을 본 다음 원리와 개념을 알려주는 것이 핵심이다. 나는 내 강의를 튜토리얼, 가이드북, 레퍼런스 중 '튜토리얼'이라고 생각하며, 예제 코드를 충분히 제공해 초보자들도 쉽게 따라올 수 있는 강의를 진행하고 있다. 개념을 하나하나 설명해주기보다는 일단 먼저 만져보고 써보도록 하는 것이다. 그다음 그 개념들이 언제 어떻게 쓰이는지 연결시켜 설명하고, 수강생들이 감을 잡을 수 있도록 이끈다. 


하나의 개념이 발생하게 된 '역사' 자체를 교육 커리큘럼으로 활용하는 방법도 적용하고 있다. 개발자로서 지난 7년간 몸으로 터득한 웹 개발의 흐름과 변화를 설명하는 것이다. 어떤 맥락에서 이 기술이 나온 것인지를 아는 것은 기술에 대한 이해도를 높이는 데 매우 효과적이다. 신입 개발자로 입사했을 때 레거시 코드(Legacy code, 기존 개발자가 전에 만들어 둔 코드)를 만질 일이 많은데, 단순히 새로운 기술만 배운 사람은 해결하기 어렵다. 예를 들어 리액트만을 배운 사람은 jQuery가 나온 배경을 이해하지 못한 채 천시하는 경향이 있다. 하지만 jQuery가 나온 맥락을 알고 있다면 달라질 것이다. 한때 jQuery 없이는 아무것도 하지 못했던 시절이 있었고, 그 덕분에 지금까지도 jQuery는 널리 사용되고 있다. 이러한 맥락을 구체적으로 설명해주면 개발을 이해하는 폭이 훨씬 깊고 넓어진다. 



프론트엔드 강의를 시작하며 '교육'에 대해 다시 생각하다


백엔드로 개발을 시작했지만, 이제는 프론트엔드 분야에 더 큰 관심을 두고 있다. 프론트엔드는 사용자와 맞닿는 최전선에 있는 기술이다. 머신러닝 같은 최신 기술이 아무리 득세하더라도, 사용자를 이해하고 사용자를 위해 고민하는 이러한 콘텐츠적 요소의 중요성은 계속 될 것이다. 나는 개인적으로 프론트엔드 개발을 위한 라이브러리인 리액트를 쓰고 난 후, 프론트엔드 개발 방식이나 만듦새가 무척 매력적이라고 느꼈다. 리액트는 확장성과 유연성이 좋은 기술이다. 초창기에는 환경 세팅하는 부분이 어렵기로 유명했는데, 점점 쉬워지는 추세이기도 하다.  


요즘 쉽고 친근한 언어로 인문학적 교양을 쌓을 수 있는 도서가 유행이다. 서점에서 편하게 인문학 책을 꺼내보듯이 프로그래밍 책을 꺼내 볼 수 있다면 얼마나 좋을까? 그 정도로 쉽게 프로그래밍을 교육하는 콘텐츠를 만들어 보고 싶다. 또 이러한 흐름을 만드는데 기여할 수 있다면 좋겠다. 사범대학을 다닐 때, 사람들이 수학을 너무 어렵게 배우고 있는 것 같아 안타까운 생각이 들었다. 수학이 낯선 기호로만 이루어진 세계처럼 보이지만, 사실 그래프와 같이 움직임도 많은 동적이 학문이다. 만약 수학을 인터랙티브한 콘텐츠로 가르쳤다면 학생들이 훨씬 더 쉽게 배울 수 있었을 것이라 생각한다. 이제는 그 마음이 프로그래밍 분야까지 확장된 것이다. 



사범대에서 수학교육을 전공하고 개발자로 일했던 내가, 지금은 패스트캠퍼스에서 프론트엔드 개발 스쿨 과정을 맡아 가르치는 일을 하고 있다. 어릴 적부터 좋아했던 컴퓨터와 프로그래밍 그리고 교육, 매 순간이 즐거울 수밖에 없다. 강의를 하다 보면 '아하 모먼트' 즉, 수강생들의 심각한 얼굴이 갑자기 환하게 바뀌는 순간이 있다. 고민되던 지점을 해결해냈다는 듯이 고개를 끄덕이고, 이제야 이해했다는 표정을 짓는다. 앎의 단계로 들어가는 그 순간을 지켜볼 때 느끼는 보람과 가치, 바로 내가 강의를 하는 이유이다. 




패스트캠퍼스 프론트엔드 개발 스쿨 바로가기

http://school.fastcampus.co.kr/dev_fds/