공부해서 뭘해볼까?에 대한 고민
한동안 어셈러브 운영 방안및 자기 개발에 대해 고민하다가 생각난 의견입니다.
잘못 생각하는게 있다면 지적 부탁드립니다.
극히 개인적인 생각이지만 선배님들께서 어떻게 생각하시는지 의견을 듣고 싶어서
KLDP에도 올립니다.
--------------
본격적으로 소프트웨어 개발 업무를 시작하다보니 그동안 몰랐던 개발 프로세스,
개발 지원 도구 등등 잘 일하기 위해 중요한 것들이 많다는 것을 알았습니다.
오픈소스 활동에서 이런 것들이 얼마나 중요한지 배우고
미리 적용해볼 수 있다면 좋겠다는 생각이 들었습니다.
그런 생각을 하다가 생각난게 있습니다.
아마 KLDP에 많이 올라왔던 질문중에 하나가 이게 아닐까 합니다.
"XXX 언어를 배우면서 뭘 만들어볼까요?
"프로그래밍을 배우려면 뭘 만들어보면 좋을까요?"
"~~원리(분야)를 공부하려면 어떻게 해야할까요?"
저도 커널 공부를 위해 제목에 커널 들어가는 책들은 거의 다 사봤던것 같은데
봐도 모르겠고 책만 덮으면 잊어먹는 악순환만 하다가
되도않는 실력이지만 조금이라도 만들어보면서 이해했던 것들이 많이 있습니다.
피아노 교본중에 유명한 바이엘, 체르니가 있지요.
원래 책 이름이 아니라 피아노를 시작하는 사람들이 연습하기에 좋은
짧은 곡들을 작곡해서 책으로 낸 작곡가들이 이름이라고 합니다. (제 기억에는요..)
워낙 좋은 연습곡들이 많아서 전세계가 사용한다고 하고
저도 바이엘 상하, 체르니 100,40까지 연습했던 기억이 납니다.
근대 학문을 제외한 거의 모든게 도제 방식으로 전수되는게 아닌가 생각합니다.
이렇게 해봐, 따라해봐, 잘한다, 이걸 이렇게 고쳐봐
선배가 모범을 보이고 후배가 따라하고 피드백을 받아서 보완하는게
인간의 학습의 근간이라고 생각합니다.
프로그래밍도 이런 도제 방식이 필요하다고 생각합니다.
문제는 누가 가르치고 지켜보고 돌봐주고 피드백해주느냐 하는 것이지요.
저는 대부분의 회사에서 기술전수를 할 여유가 없다고 생각합니다.
자기 일 하기도 벅차고 빨리 먹고살것을 해결해야하는데
신입이 왔다고 지켜보고 고쳐줄 시간과 여유가 있을지 의문입니다.
학교는 어떨까 생각해봤는데 몇년 선배가 몇년 후배를 가르칠만한 능력이 안될것 같습니다.
학교 선배는 교과서를 좀더 본것 뿐이고 실무 경험에서 배우는 노하우가 없으니까요.
교수님/조교에 대해서는 뭐 거론할 것도 없겠지요.
(학원은 어떤지 모르겠습니다.)
저는 커뮤니티가 유일한 대안이라고 생각합니다.
커뮤니티에 다양한 사람들이 모여서 뭔가를 만들면서 토론하고 문제를 해결하고
성과물을 공개하는 활동이 좋은 대안이 될것 같습니다.
제가 생각하기에 커뮤니티 활동에 몇가지 문제가 있습니다.
1. 누가 모이느냐
아무리 작은 모임이라고 해도 사실 비슷한 수준의 사람들끼리 모이면
성장하기가 쉽지 않습니다. 토론을 해도 결론이 않나고 감정 상하기가 쉽고
누가 뭘 하자고 해도 그게 좋은 해결책인지 알 수 없고
한마디로 노력대비 결과가 많이 덜어집니다.
2. 뭘 하느냐
뭘 해야할지 모르는 것도 문제입니다.
많은 모임들이 책을 같이 보는 걸로 주제를 삼는데
책보고와서 요약해서 발표하고 발표자에게 모르는걸 물어보고
발표자는 사실 책만 보고 요약했지 책의 내용을 깊게 이해하는게 아니므로
단편적인 책 읽기 및 진도 따라가기가 거의 다인것 같습니다.
전 이런 해결책을 생각해 봤습니다.
1. 정부(혹은 기업/학교..누구든지)의 지원
모임장소 (학교에서 모이려고 했다가 쫓겨난 경험도 많지요), 장소 자체거나
장소 대여 비용, 장비, 등의 지원
2. 로드맵 지원
뭘 해야하느냐도 지원을 받아야 합니다.
커널 공부를 하고 싶은데 소스를 무작정 열어봐야하나
무슨 책을 보면 좋은가 어디에 온라인 강의가 있나, 기초적인 책은 뭐고 중급 책->고급책의 순서,
C를 배우고 싶은데 뭘 만들어보면 좋은가, 주소록->테트리스->...
3. 강사 지원
가끔은 좋은 강사를 초청해서 모임이 잘 진행되고 있는지 컨설팅도 받고
앞으로 뭘 하면 좋을지, 해결못한 문제들에 대한 진단도 받고
노하우도 전수받고..이건 결국 돈문제입니다.
누가 지원을 해줄 수 있는지는 모르겠습니다.
4. 롤 모델 지원
이게 아주 중요할것 같습니다.
언어 문법을 배우거나 이미 있는 커널을 분석하는 것도 중요하지만
작은 규모의 라이브러리나 프로그램을 만들어보면서 개발 프로세스를 밟아나가는
연습을 하는게 중요할것 같습니다.
여기에 반드시 필요하다고 생각하는게 바로 롤 모델입니다.
설계 문서를 만들었는데 이걸 누가 평가해주거나 바로잡아주거나
아니면 모범 답안이라도 있어야 그걸 보고 따라해보거나 배울수가 있습니다.
개발 프로세스의 각 단계마다 모범 답안이나 롤 모델이 있어서
내 나름대로 해본 후에 모델을 따라해보는게 필요할것 같습니다.
이걸 누군가가 만들어준다면 저를 포함한 많은 사람들이
좋은 개발 프로세스를 공부할 수 있지 않을까 생각합니다.
--------
결론은 누군가가 내가 뭘 공부해야할지 어떤 순서대로 무엇을 공부해서 무엇을 만들어볼지 알려주거나
내가 잘 만든건지 못 만든건지 비교해볼만한걸 제공해준다면 좋겠습니다.
그냥 돌아가기만 하는 프로그램을 만들게 아니라
좋은 단계를 따라 좋은 산출물들을 내면서 프로그램을 만들면 좋겠습니다.
오픈소스가 초보 개발자들에게 좋은 모델이 되면
더 많은 초보 개발자들이 오픈소스에 참여하게되고
오픈소스 개발에 커뮤니티의 지원을 받을 수 있다면
더 많은 커뮤니티 활동이 생겨날것 같습니다.
댓글
전반적인 내용에 대해서 동의합니다만,
몇가지 문제를 지적하신것중에,
"2. 뭘 하느냐"
부분에서 책에 대한 학습을 너무 부정적인 시각으로 보고 있다는 생각이 듭니다.
저는 책을 통한 학습이 좋다고 생각합니다만,
문제는 어떤책을 보느냐에 따라서 지식의 질량이 달라지고,
얼마만큼 학습하느냐에 따라서 지식의 깊이가 달라지는데,
학습자의 노력이 있다면 극복되는것이 아닌가요?
또한, 책을 같이 공부하는 모임에는 그다지 비용이 들지 않습니다.
같이 학습하는 즐거움도 있구요.
From:
*알지비 (메신저: rgbi3307(at)nate.com)
*학창시절 마이크로마우스를 만들었고, 10년동안 IT관련 개발자로 일하고 있음.
*틈틈히 커널연구회(http://www.kernel.kr/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))
From:
*알지비 (메일: rgbi3307(at)nate.com)
*커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))
저도 책이 안좋다는
저도 책이 안좋다는 이야기는 아니었습니다.
책에 대한 로드맵이 필요하다는 의견도 적어놨구요.
제 생각은 책을 중심으로 모이는 모임에서 개발 경험이나 프로세스에 대한 한계가 있다는 것입니다.
거기에 대해 학교나 회사의 교육 시스템이 지원을 해주어야 하는데
그게 현실적으로 어려우니 다른 시스템을 구축하면 어떨까 하는게 제 포인트입니다.
뭐..그냥 상상이지요.
요즘은 그냥 저나 잘하자. 나는 뭐 잘났나. 이런 생각뿐입니다.
----
섬기며 사랑하면 더 행복해집니다.
몸에 좋은 칼슘이 듬뿍담긴 OS 프로젝트 - 칼슘OS http://caoskernel.org
질문의 의도에 맞게
질문의 의도에 맞게 답변을 주기보단 그냥 큰 틀에서 몇가지만 말씀드리겠습니다.
제 경험상, 이쪽분야는 공부해서 뭘 해볼까..라는 접근보다는
뭘 만들기 위해서 어떤걸 공부하겠다..하는 접근이 훨씬 실제적이고 성과도 많이 납니다.
그러니 공부자체를 목표로 삼지 마시고 규모는 작더라도 프로젝트 베이스로 실제 뭔가
돌아가는 프로그램을 만드는걸 목표로 하시되, 그에 필요한 공부를 개발과 같이
병행하는걸로 하십시오.
물론 3D 그래픽 프로그래밍을 위해 선형대수를 공부해야 한다던지 자연어처리 엔진을
만들기 위해 계산이론을 공부해야 하는등의 특수한 경우라면 컴퓨터를 꺼버리고
노트와 필기구를 이용한 전통적인 공부가 선호되겠지만, 대부분의 경우엔
컴퓨터로 그때그때 피드백을 받아가면서 공부하는 편이 책에 씌여진 추상적인
지식만 쫓아가는 것보다 훨씬 낫습니다.
뭘 할것이냐...라는것도 뭘 공부할것이냐가 아니라 뭘 개발할것이냐..하는 질문으로
대체되는게 맞을것 같은데 이 부분에선 기획자로서의 능력이 필요하리라 생각합니다.
어떤 사람은 자신은 프로그래머이지 기획자가 아니라며 기획을 하지 않겠다라고
항변할지 모르겠는데 이건 지나치게 자신의 장래를 제한하는겁니다.
그리고 기획을 해보고 프로그램을 짜는것과 그렇지 않고 프로그램을 짜는건
천지차이입니다. 기획을 해보고 어떤걸 개발해보면 프로그래밍에만 속박된
엔지니어의 시야가 상당히 좁다는걸 인정하게 됩니다. 물론, 각자의 역할은
전문성을 위해 따로 존재해야 하는것은 맞습니다.
(상당수의 훌륭한 프로그래머들은 훌륭한 기획자이기도 합니다)
기획을 하려고 할때는 기존의 것들을 조사하는 작업이 필수입니다.
그리고 기존의 것에 새 아이디어를 더하는것이 부수적으로 요구됩니다.
기존의 것과 별 차이가 없는걸 만드는건 참신성이 떨어진다는면에서 뿐아니라
바퀴의 재발명을 하는 행위이므로 지양될만한 행동입니다.
(물론 전에 없던것을 새로 만들어내는 경우는 거의 불가능하다고 봐야 합니다)
마지막으로 자신의 컨셉을 증명할 수 있어야 합니다.
대부분의 경우 이때의 증명이란건 실구현가능성을 얘기하는겁니다.
사업을 하거나 실제 신규 프로젝트에 투입되는 경우가 아니고
어떤것을 취미로 공부하는 차원에서라면 이런 과정을 좀 느슨하게 가져가도
문제는 없습니다. 어쨋든 이런 과정은 프로그래머로서의 내공을 높이는
훈련과정으로 큰 도움이 됩니다.
마지막으로..(이건 여기서 좀 논란이 될만한 내용일수도?)
커뮤니티에 속박되기 보다는 커뮤니티를 이용한다는 생각으로
꼭 커뮤니티에 묶여서 자신의 활동을 제한하지 않는것이 중요한것 같습니다.
그러나 이런 얘기들을 다 치워버리고..그냥 프로그래밍에 미쳐버리면
자연스레 뭐가 나오든 나오게 되는게 사실입니다.
이런 사람들은 스스로 깨쳐서 알아서 다 하더군요...
이런면에서..이렇게 해보는게 가장 중요한것 같긴 합니다만...
아무나 그렇게 되지는 않는다는 문제가...흠....;;
전적으로 동의되는
전적으로 동의되는 글입니다.
학교 수업도 착실히 하고, 교수님과 선배들 찾아다니며 배움을 받아보았지만
학부 4학년 인데도 여전히 소프트웨어 개발 절차에 대해선 뿌옇기만 합니다.
소규모 프로젝트야 많이 해보았다지만
여전히 무언가 놓치고 있다는 생각이 많이 드네요.
실무에 계신, 혹은 실력있는 선배님들께서
저러한 커뮤니티들을 많이 만들어주시면 좋겠네요...
온라인이든 오프라인이든 잘 쫓아다니며 배울 자신 있는데.
학회(컨퍼런스)를 를 중심으로 모여야 합니다
사실 학술학회가 교수나 대학원생 연구원 이런 사람들만 가는 게 아니라 현업에서 일하는 분들의 활발한 피드백이 있어야 상아탑에서의 탁상공론으로 끝나는 게 아니라 실제적인 지식과 기술의 공유와 발전이 가능하죠. 물론 직접적으로 산업계에 영향을 미치지 않는 이론적인 기초분야 연구도 필요하긴 하겠지만 컴퓨터 쪽에서는 대부분 실무와 연결되는 경우가 많습니다. 예를 들면 국제 함수형 프로그래밍 학회(International Conference of Functional Programming)의 경우 기업체의 함수형 프로그래밍 활용 사례 보고서도 일정 비율 받이 발표하기도 하고, 또 본 학회 이외에 학회 전후로 같이 열리는 여러 워크샵이나 심포지움 등의 트랙이 있는데 그 중에는 함수형 언어를 사용한는 기업들끼리 모여서 기술 교류와 인력 채용을 위한 장이 되고 있는 Commercial Users of Functional Programming (CUFP)라는 워크샵이 있습니다. 고전적인 예로 Erlang을 쓰는 에릭슨이라던가 또 Credit Suisse, Standard Charters 등 금융권에서는 이름만 들으면 누구나 아는 국제적 투자은행들에서 F#이나 Haskell을 쓰고 있고, Scala를 쓰는 페이스북 (스칼라 뿐 아니라 ML Haskell 그리고 Erlang도 쓰고 있더군요), 또 그 외에더 10년 이상 함수형 언어를 성공적으로 사용해 수익을 올리고 있는 탄탄한 중소기업이라던가 또 학회가 열리는 주변 지역에서 새로 창업한 벤쳐기업들이 많은 관심을 가지고 참여합니다. 뿐만 아니라 개발자들끼리 모여서 구체적인 개발 기술이나 도구 등에 대한 강좌나 강의를 하는 Developer Tracks on Functional Programming (DEFUN) 이라는 세미나도 열립니다. ( 2009년 DEFUN 홈페이지 http://www.defun2009.info/ ) 우리나라에도 물론 대안언어축제가 DEFUN과 비슷한 성격의 행사라고 할 수 있고, 또 한국의 OSCON이라 할 수 있는 KLDP 컨퍼런스도 있습니다만, 이런 좋은 행사들이 개별적으로 열리는 것으로 끝나지 않고 더욱 시너지 효과를 얻을 수 있도록 학회와 산업계가 함께 역량을 집중할 수 있는 구심점을 구축해 나간다면 더욱 좋을 것입니다.
우리나라에서도 한국정보과학회 대한전자공학회 등을 구심점으로 하여 함께 학계와 IT 업계의 역량을 집중하고 교류를 활발히 하는 장을 만들어 나갔으면 좋겠습니다만, 문제는 그동안 국내 학계가 역량을 집중할 만한 그런 에너지와 리더십를 구축하지 못하기도 했을 뿐더러, 학계에서 열정적으로 그런 모임을 연계해서 한곳으로 역량을 집중하려 해도, 우리나라 IT 산업의 현실이 워낙 암울하기 때문에 그런 그런 데 여유를 가지고 나가고 회사가 그걸 지원할 만큼 의식과 역량을 가진 곳이 별로 없다는 것도 큰 문제이고, 그런 데 가서 발표한다고 하면 다른 데 스카웃되어 이직하면 어쩔가 걱정하는 그런 돼먹지 못한 경영 마인드를 가진 경영진들도 우리나라에는 많습니다. (그러니까 우리나라에 동종업계 전직금지각서를 대부분의 회사에서 쓰고, 기술유출방지법 같은 악법도 만들어서 이공계 기술자를 노예로 부려먹으려 하죠.)
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
댓글 달기