[숲 산책 #006] 숲의 시나브로, 코딩의 성장

by 박동기

오늘은 퇴근 후 회사에서 5분 거리에 있는 골프장을 다녀왔습니다. 골프장 잔디 옆에는 울창한 숲이 있습니다. 9홀이기는 하지만 코스가 아기자기하고 아름다운 경치와 어우러져 나름대로 괜찮은 골프장입니다. 무엇보다도 회사에서 가까워 5시 퇴근 후 바로 칠 수가 있고 가격이 저렴합니다. 춘천이라서 그런지 골프장 옆에 있는 숲들이 그런대로 잘 보존이 되어 있습니다. 무엇보다도 골프장에서 바라보는 석양이 아름답습니다. 골프장 옆의 숲들을 보면서 숲은 하루아침에 한방에 완성되지 않았음을 느낍니다. 숲은 시나브로, 모르는 사이에 조금씩 조금씩 성장을 해나가는 것입니다. 숲이 하루아침에 되는 것이 아닙니다. 우리는 다이어트를 하건, 영어 공부를 하건, 프로그래밍을 공부하건 단번에 결과를 보고자 하다가 초기에 번아웃이 되어서 포기할 때가 많습니다. 어떤 열매를 맺기 위해서는 지루한 과정도 이겨내고 멀고 긴 호흡으로 시나브로, 천천히 실행하는 것이 중요하다고 생각합니다. 어떤 방해가 있더라도 옳은 방향이라면 꾸준히 실행해 나가는 것이 필요하다고 생각합니다.



숲을 매일 다니면서 느끼는 것이지만 어제와 다른 것이 없는 것 같지만 미묘하게 다른 것들을 발견할 수 있습니다. 나뭇잎이 더 녹색이 되었거나 소나무의 몸이 더 윤기가 흐른다든지 자세히 관찰하다 보면 어제와 다르게 조금씩 성장해나가는 것을 볼 수가 있습니다. 하루 차이지만 그 사이 미묘하게 다른 모습을 보여주기에 숲이 매력적입니다. 나무와 풀들이 성장해서 숲이 아름다워지고 열매도 맺고 오는 이들에게도 유익한 에너지들을 줍니다. 숲은 어느 단계가 올라간 이후부터는 가파르게 성장을 하고 아름다움을 유지합니다.


어릴 적에 누에를 키우는 것을 보았습니다. 누에는 어느 순간부터 가파르게 성장을 합니다. 누에알들이 있는 팩 6개만 해도 어마어마한 누에들이 탄생합니다. 관상용 양귀비 꽃씨를 본 적이 있습니다. 조그마한 씨앗 봉우리를 까 보면 그 안에 수백 개의 씨앗들이 있습니다. 눈으로 보이지 않을 정도의 검은 씨앗들이 봉우리 안에 들어 있습니다. 그 씨앗들이 날아가서 주위에 많은 관상용 양귀비꽃들을 피웁니다. 그 조그마한 꽃씨들 덕분에 요즘 심심찮게 들에서 관상용 양귀비꽃을 보게 됩니다. 누에도 팩에 아주 작은 알들이 있습니다. 손바닥만 한 팩에 수천 개의 알이 있는 것입니다. 그 알을 키우면 알에서 개미만 한 누에의 새끼들이 자랍니다.


그 누에는 아주 잘게 썬 신선한 뽕잎만을 먹습니다. 새끼 누에의 입이 아주 작기에 마치 채를 썰듯이 잘게 썰어서 누에들에게 줘야 합니다. 뽕잎을 잘게 썰어주는 것도 보통 일이 아닙니다. 음식을 신선하고 정성스럽게 줘야 하다 보니 사람의 일손이 많이 갑니다. 우리도 정성스럽게 밥 한번 차려 먹으면 시간이 오래가는 것처럼 말입니다. 누에는 아주 깨끗한 환경에서 자라기에 소독도 아주 잘해줘야 합니다. 그리고 옆집에서 농약만 해도 누에는 다 죽어버려 1년 농사를 다 망쳐버리기도 합니다. 누에를 잘 키우는 것이 아이들 애완용으로 키우는 것이 아니라 생존을 위해서 키웁니다. 누에를 키워 좋은 품질의 누에고치를 만들어 돈을 만들어야 하는 것입니다.


깨끗한 환경에서 정성스럽게 자란 누에가 아이들의 손가락만 한 크기로 자랍니다. 그때부터 누에는 뽕잎을 엄청 먹어대기 시작합니다. 그 뽕잎을 조달하느라 온 가족이 총출동해서 뽕밭으로 뽕잎을 따러 갑니다. '뽕'이라는 그런 애로 영화가 나왔는 모르겠습니다. 뽕따고 일하느라 그럴 시간이 없는데 말입니다. 오디가 지금은 귀하지만 그때만 해도 천대받아서 달디 단 오디는 간식거리가 되기도 합니다. 오디를 먹으면 입이 보라색으로 변하고 오디 먹다가 옷에 묻으면 잘 지워지지도 않습니다. 온 가족이 정성으로 보살핀 누에는 성장해서 애벌레를 만듭니다. 그러고 나서 누에고치를 만듭니다. 최상품의 하얀 누에고치를 만들 때까지 정성이 이만저만 들어가는 것이 아닙니다. 누에고치는 실크를 우리에게 제공을 하고 번데기는 간식거리가 됩니다. 최근에는 누에 산업은 사양산업으로 전환이 되었다고 합니다. 요즘에는 실크보다는 먹는 식품으로 부가 가치를 만든다고 합니다. 뽕잎, 오디, 누에 동충하초, 누에그라, 의약품 등으로 현대 트렌드에 맞게 변화를 하고 있다고 합니다.


누에가 성장하는 모습을 부면 스펀지가 물을 흡수하듯이 엄청난 양의 뽕잎을 먹어치우며 성장 속도가 무척 빠릅니다. 하루가 다르게 성장을 합니다. 그런 성장의 모습을 보면 프로그래머로서도 그렇게 막힘없이 무럭무럭 성장을 했으면 좋겠습니다. 프로그램 언어를 익히고 알고리즘을 훈련해서 프로젝트에 기여를 하면서 엄청난 성장 속도로 자랐으면 좋겠습니다. 누에가 인간에게 좋은 실을 주는 것처럼 프로그램이 인간에게 좋은 프로그램이 되는 유익이 있으면 좋겠습니다. 숲이 시나브로 성장을 하고 누에는 빠른 성장을 한 후 유익을 주는 것처럼 프로그램 코딩도 성장을 해서 열매를 맺었으면 좋겠습니다.


존 스메스의 소프트 스킬에서는 10단계의 학습법을 소개하고 있습니다.


1단계: 큰 그림을 그려라

2단계: 범위를 정하라

3단계:성공을 정의하라

4단계: 자료를 찾아라

5단계:학습 계획을 세워라

6단계: 자료를 선별하라

7단계: 대충 사용할 수준까지 배워라

8단계: 놀아라

9단계: 유용한 일을 할 정도까지 배워라

10단계: 가르쳐라


소프트 스킬 - 존 스메스


위와 같이 10단계가 있는데 제 생각으로 프로그램으로 성장할 수 있는 방법을 적어보았습니다.



1단계: 큰 그림을 그려라


어떤 기능을 구현해야겠다고 어느 정도 선언을 해놓습니다. 숲을 만들 때 어떤 숲을 만들지 미리 구상을 하는 것입니다. 자작나무 숲을 만들지 아니면 소나무 숲을 만들지를 구상을 합니다. 예를 들면, AWS와 연동하는 C# 프로그램을 개발하겠다고 그림을 그립니다. Android의 앱의 경우 AWS 서버와 연동을 해서 어떤 서비스를 만들고 마켓에 앱을 올리겠다고 큰 그림을 그립니다.




2단계: 범위를 정하라


숲에 모든 나무들을 다 심을 수는 없습니다. 어떤 나무들로 조경을 할지 범위를 정합니다. 개발언어는 무엇으로 하고 어느 기능까지 할지를 정해야 합니다. 처음부터 너무 거창하면 중도에 포기를 하게 됩니다. C#을 이용해서 AWS서버의 데이터들을 불러오고 데이터들을 검색하고 삭제하는 기능들을 구현한다라든지 범위를 정합니다. Android 앱의 경우에는 어느 기능들을 구현할지 목록을 정해놓으면 좋습니다.




3단계:성공을 정의하라


숲을 구상하면서 어떤 숲으로 될지 실현 가능한 상상을 해봅니다. AWS에 올라오는 실시간 데이터들을 C#을 이용한 프로그램을 통한 프로그램을 정의한다. 그래서 AWS의 서버 구성 방법을 완벽하게 익히고 C#의 UI 구성과 데이터 베이스 기능을 익힌다. 마켓에 앱을 올려서 그 앱이 수익으로 연결되는 성공까지 정의를 해봅니다.




4단계: 자료를 찾아라


책으로 자료를 찾을 때는 꼭 필요한 부분만 찾아서 보면 된다고 생각합니다. 책 첫 페이지의 'Hello world'부터 마지막 페이지까지 모두 완독을 했다고 해서 절대로 프로그램을 잘하지는 못합니다. 책 팔아 먹으려고 하는 것에 현혹이 되면 안됩니다. 책은 꼭 필요한 부분에서 찾아봐야 합니다. 공부하면서 필요한 부분만 찾아봐야지 중고등학교 시험처럼 처음부터 끝까지 본다고 코딩 실력이 늘지는 않습니다. 개발 언어 공부는 동영상을 보면서 공부를 하는 것이 좋다고 생각합니다. 유튜브 등의 강좌를 보거나 영어 실력이 된다면 Coursera 등의 유료 강의에도 투자를 해서 교육을 받으면 좋습니다.



5단계:학습 계획을 세워라


언제까지 완료를 할지 어떤 순서로 할지 결정을 합니다.




6단계: 자료를 선별하라


초반부터 모든 코딩을 하면 좋지만 어느 정도 구성이 된 샘플을 가지고 시작을 해서 시간을 절약합니다. GitHub 에는 정말로 아름다운 소스들이 많습니다. 물론 자기의 기능에 맞게 하려면 수정을 해야 하지만 이렇게 공부를 해서 프로그램을 만드는 것이 빠릅니다. GitHub 나 검색을 통해서 자기에게 맞는 소스를 찾아서 시작하면 좋습니다. 맨땅에 헤딩하면서 개발하고 공부하기에는 너무 시간이 많이 걸립니다.




7단계: 대충 사용할 수준까지 배워라


모든 내용을 다 알 필요는 없고 어느 정도 개발 언어를 사용할 정도만 되면 바로 개발을 시작합니다. 개발언어의 모든 기능을 다 알면 좋지만 시나브로 익혀가면 된다. 개발하다가 막힐 때마다 찾아보는 것이 더 간절하기에 더 빠르게 배울 수 있다.




8단계: 놀아라


컴파일을 하고 실행을 하면서 자기가 만들어가고 있는 프로그램으로 이것저것 시도를 하면서 놀아 봅니다.




9단계: 유용한 일을 할 정도까지 배워라


최종의 완성품까지 만들면서 막히는 부분들이 많지만 이때 공부를 많이 하는 시간입니다. 꽉 막히어 풀리지 않아서 답을 못 찾다 포기하면 안 됩니다.




10단계: 가르쳐라


완성된 앱은 마켓에 올려서 남들에게 공유합니다. 완성된 소스도 GitHub에 올려서 남들에게 평가를 받고 남들을 가르쳐 주려고 노력합니다. 가르친다는 것은 그 내용을 완벽하게 이해하고 있다는 것이기에 더 많이 배우게 됩니다. GitHub에 소스를 올려놓고 피드백을 받아보면 좋습니다. 블로그도 관리를 하면서 개발한 소스들도 공유하면서 가르치게 되면 더욱 성장을 할 수가 있습니다.




우리 모두가 프로그램을 잘해서 개발자가 행복한 세상이 왔으면 좋겠습니다.




매거진의 이전글[숲 산책 #005] 숲의 다양성, 프로그램 언어