초등학교 때부터 소프트웨어, 더 구체적으로는 코딩 교육을 해야한다는 말이 많다. 그 사안에 대하여는 이전에 이 블로그에서 의견을 이야기 한 적이 있다.
"초등 코딩 교육" 을 클릭하여 보시라.
또, 중고등학생들에게 소프트웨어 교육을 시켜야 한다는 의견, 최근에는 실질적으로 그걸 실시하는 운동들도 있어서 다행이기도 하다.
이글에서는 초등학생을 포함한 우리 청소년들에게 소프트웨어 교육을 어떻게 시킬 것인가가 아니라, 이미 코딩을 하고 있는 애들을 어떻게 돌봐줄 것인가에 관한 이야기를 해볼까 한다.
나의 관찰(전혀 정확한 통계가 아니다, 그저 어렴풋한 관찰)에 따르면, 또 모든 경우를 칼 같이 구분할 수도 없지만 (복합적인 요인이 함께 작용하기 떄문에)
대학교 이전에 코딩을 하게 되는 경우, 주로 다음과 같은 경로를 따른다.
1. 정말 의도하지 않게 코딩에 입문한 경우
어릴 때, 하필이면 집어든 책이 동화책이 아니라 Visual Basic인데, 해보니 재미가 있었던 경우. 생각보다 많다. 또, 예전 어른들이 심심풀이로 애들에게 바둑 가르치듯이 소프트웨어 엔지니어인 아빠가 아이를 옆에 앉혀 놓고 BASIC, Java를 가르친 경우가 여기에 해당한다. 이런 경우 프로그래머로서의 지적 능력 함양을 위해 아래 3번 경우를 거치는 경우가 종종 있지만, 대체로 장기적으로 소프트웨어 엔지니어의 꿈을 가지게 된다.
2. 로봇에 빠졌던 경우
초등학교 때, 로봇은 엄청나게 있어보이는 아이템이다. 라인트레이서 / 마인드스톰 / 이족보행로봇 류의 로봇들은 아이콘 기반 그래픽 프로그램 언어(labview에서 시작된)를 주로 사용한다. 일부 학생들이 대개 중학교 근처에 가면 이 언어의 한계를 느끼고 C 언어의 필요성을 자발적으로 깨닫고 공부한다 (일부 초중등의 로봇 동아리 선생님들은 애들에게 C를 가르친다). 이 경우도 3번으로 가는 경우가 많다. 로봇이라는 것이 재미도 있지만 대회로서의 성격이 강하기 때문에, 순위를 매겨 상장주는 가장 우아한 대회인 3번이 꽤 훌륭한 선택이라고들 생각한다.
3. 어떤 이유든 정보 올림피아드 계에 발을 들인 경우,
정보 올림피아드는 알고리듬을 배우고 코드로 옮기는 방식의 문제풀이 경연 대회이다. 많은 유능한 청소년 프로그래머들이 이 대회를 준비하고, 또 이 대회에서 우수한 성적을 거둔 선수들은 실제로 탁월한 소프트웨어 엔지니어로 자라날 가능성이 높다. 한때는 대학 입학을 위한 포트폴리오로 이 대회의 성적이 사용되기도 했다/한다. 중학교 당시에 올림피아드에서 혁혁한 성적을 얻은 일부는 영재고, 과학고에 진학하기도 한다. 이 3번 유형에 들어서면 소위 사교육에 의한 알고리듬/코딩반복 훈련 지도를 받기도 한다.
4. 게임에 빠졌던 경우
요즘 애들은 누구나 게임을 한다. 그 결과 프로게이머가 꿈인 애들도 생기기만, 자기가 게임을 만들어보겠다는 꿈을 가지는 친구들도 생기게 마련이다. 일부는 대규모 온라인 게임의 세계관, 경제관에 심취해 나름의 스토리와 기획에 집중하고, 일부는 게임 프로그래머가 되기로 결심한 뒤, 당장할 수 있는 맵 에디팅 등부터 시작하는 경우도 있고, 일부는 C 언어를 배우다 포기하는 경우도 많다. 더 많은 경우는 뭔가 개발하기에는 열악한 시기인 중,고등학교를 참고 견뎌낸 후, 대학 진학 때 게임 개발과 관련된 학과로 진학한다.
5. 아는 형 따라 프로그램에 빠진 경우
어릴 때는, 어설픈 개인기를 가진 동네 형이 엄청난 우상이 된다. 안드로이드 전화기의 커스텀롬을 만드는 아는 형, 간단한 게임을 만드는 아는 형, 스크립트 장난 수준의 초보 해킹 능력을 가진 선배 형, 잘생긴 소프트웨어 엔지니어인 교회 오빠를 따라, 코딩에게 입문하는 애들이 요즘 많다. 이런 과정은 중학교 다닐 때 많이 일어나며, 이 중 꽂힌 애들은 특성화고류(선린인고, 디미고, 게임과학고, 미림 마이스터, ... 수도 없이 많다)에 많이 진학한다. 이 5번 유형은 중학교든 고등학교든 교내외 동아리 활동을 통해 주로 실력을 쌓아간다.
6. 하여간 특성화고에 진학을 하게된 경우
위 5번 경우가 대다수이지만, ... 대학을 가는 효과적인 방법을 모색하다가, 대학을 가기 싫어서, 또는 대학을 못 갈 것 같아서, 그리고 별 동기없이 그냥 등의 이유로 특성화고에 진학한 뒤, 코딩과 상관없는 소프트웨어 활용(MOS, 그래픽 도구) 교육, 간단한 프로그램 교육을 받는 와중에 본인의 재능을 발견한 경우도 많다. 대개 특성화고는 각종 대회참여, (주로 게임인)앱제작, 창업활동 등을 장려하기 때문에, 소프트웨어 엔지니어로서 일찍 성장하는 친구들도 많다.
-- 여기까지는 그냥 관찰에 의한 분류이다. (자기는 다른 경우라면 아래 댓글로 제보 바란다.)
이 이후의 진로는 대학생 수준의 이야기 인데, 창업, 대학 진학, 일부는 NHN NEXT, 소프트웨어 마에스트로 과정 등 다양하다. 청소년 시기가 지나면 그나마 자율적인 환경에서 '제대로' 배울 수 있거나, 다른 '제대로' 배울 수 있는 길을 선택할 수 있어서 문제가 아니라고 볼 수 있다.
~~~~~
다시 이글의 취지로 돌아가자. 즉, 중고등학생들이 코딩계에 입문하여, 대학 수준에 이르기 전까지의 이야기를 하자.
최근에는 그래도 커뮤니티 행사가 많고 자신과 같은 처지(?)에 있는 친구들을 볼 기회가 많기 때문에, 전반적으로는 상황이 개선되고 있다고 이야기할 수 있어서 다행이지만, 청소년기의 소프트웨어 개발자 대부분이 겪는 문제는 다음과 같다. 여기서 대부분이라는 수식어를 쓰는 이유는 일부 자기 혼자 알아서 '심하게' 잘하는 애들도 있기 때문이며, 그 친구들은 이글의 예외 상황에 해당된다.
문제 1. 선생님이 없다.
이 문제는 아래 모든 문제의 시발점이 되는 엄마 문제에 해당된다. 청소년기의 개발자들은 실무적 개발 경험을 가진 선생님을 거의 만나지 못하고 있다. 해서 독학에 의존하거나, 여늬 과목과 같은 암기식, 문제풀이 방식으로 프로그램 교육을 받고 있기 때문에, 진도는 나가되, 소프트웨어에 의한 문제 해결 능력이 심하게 결여되어 있다.
문제 2. 배우는 방법이 틀렸다.
문제를 정의하고 그 문제 해결을 하는 과정에서 배움이 일어나야 하는데, 진도를 나간 후 연습 문제를 푸는 방식의 학습이 지속적으로 진행되는 관계로, 자신의 능력을 주어진 문제에 대한 풀이를 할 수 있다는 정도로 규정하고, 소프트웨어로 풀어내야하는 현실의 문제와, 소프트웨어가 만들어내는 가치에 대한 접근을 매우 두려워하는 등 자신감이 부족하다.
문제 3. 롤모델이 부실하다.
그들의 롤모델은 다분히 빌게이츠, 스티브잡스, 마크주커버그, 김정주, 이해진, .. 등 보통은 달성되지 않는 인물들에 집중되어 있다. 범접하기 어려운 위인이 롤모델이면 인생은 피곤해진다. 단계적 목표를 잡고, 단기간에 얻을 수 있는 성과나 해결한 문제, 그리고 그 접근 방법에 대한 평가가 없기 때문에, 쉽게 지치고, 입문 초기의 높았던 동기가 금방 사그러들 위험이 있다.
문제 4. 동료 그룹이 전반적으로 부실하다.
특히 동아리 중심의 청소년 개발자들은 어설픈 동료, 어설픈 선배에 의해 훈련된다. 그리고 선배들의 스파게티 코드나 개발 관행이 최고인듯한 착각에 쉽게 빠진다. 장기적으로는 결국 강호의 선수를 만나게 되고, 소프트웨어 공학을 알게되어 크게 문제가 되지 않을 수도 있지만, 어릴 때 제대로된 프랙티스를 배우고, 리뷰를 받을 수 있다면 아주 빨리 클 수 있다.
-- 그래서 이들이 불쌍하다.
중고등 개발자들 가운데는 위의 문제들을 자각하지 못하고 그저 코딩을 할 수 있어서 행복해 하는 경우도 있다. 하지만, 잠시만 차분하게 이야기 해보면, 자신감의 결여, 미래에 대한 불안감, 누구의 도움과 지지도 받지 못하고 있다는 외로움에 힘들어 하는 애들을 쉽게 발견할 수 있다.
자신이 소프트웨어 개발이라는 꿈을 키워나가는 것에 대한 최소한의 지지마저 얻지 못한 청소년 개발자들은 자신의 어려움을 이야기하면서 눈물을 글썽인다.
우리 '소프트웨어 엔지니어' 어른들은 이들이 짧은 시간에 대박 성공을 할 수 있게 하는 것은 어렵겠지만, 적어도 이 바닥에 안착하여, 기쁨과 자신감을 찾고, 장기적으로는 소프트웨어 개발을 통하여 자신이 설정해 가는 목표에 다가가는 만족스런 삶을 살 수 있도록 도와줘야 한다.
-- 그래서, 대단하게 뭘 하자는 것은 아니고,
-- '다 자란' 소프트웨어 엔지니어 여러분에게 조그만 부탁을 하고자 한다.
0. 여러분 어릴 때를 생각해 봅시다. 주변에 어린 개발자들을 찾아봅시다.
만나서 떡복기도 사주고, 샌드위치도 같이 먹고, 바나나 우유도 나눠 마십시다. 혼자가 아니라는 사실을 알려줍시다.
1. 커뮤니티 행사 때 주변의 중고등 개발자들을 적극적으로 초청합시다.
그리고, 꼭 여러분은 아니라도, 가까이에 있는 좀 있어보이는 선수를 그들의 롤모델로 삼을 수 있도록 만나게 하고 보여줍시다.
2. 이들의 기술적 멘토가 되어줍시다.
뭐 상시적으로 만나지는 않더라도 여러분의 이메일/페이스북 주소를 알려주고, 그들의 글에 '좋아요' 눌러주고, 질문에 답해 주고, 코드 리뷰를 해줍시다. 그들의 질문에 답하고, 코드를 보면서 보나마나 당신도 배웁니다.
3. 나아가 여러분의 (오픈소스) 프로젝트에 참여시킵시다.
뭔가 그들이 도와줄 수 있고 기여할 수 있는 일이 분명히 있을 겁니다.
그들에게 도움을 요청하기 위해서는 아마도 여러분 스스로 더 정갈하게 일을 해야할 수도 있고 그 과정이 프로젝트에 도움이 되기도 할 겁니다.
그들은 어제의 우리입니다.
*
'소프트웨어 이야기' 카테고리의 다른 글
개발자가 밤 새는 것은 과연 용서가 되는가 (3) | 2013.10.09 |
---|---|
임베디드 시스템 개발에 관한 Practice (4) | 2013.05.30 |
초등 코딩 교육 (0) | 2013.04.19 |
소프트웨어 엔지니어는 왜 닭집을 차리는가 ? (5) | 2013.02.16 |
[번역] 공개 소스에 의한 균형 : 경제적 복지의 원천으로서 공개 소스의 등장 (0) | 2013.01.24 |