E D R , A S I H C RSS

데블스캠프계획백업

2002년 6월 1일 기준 데블스캠프토론 에 대한 백업페이지입니다. 문서구조조정 관계로 백업해둡니다. 문서구조조정 후 문맥의 변화로 인해 글의 의도가 바뀌었는지 각자 확인해주시고 고쳐주시기 바랍니다. --석천



이페이지는 ?

  • 이번 30일 정모때 이야기할 방학 스터디의 시작인 데블스캠프를 어떻게 진행할지에 대해서 정모 전에 우선 대략적인 모습을 구상하기 위해서 만들어 봤습니다. 그래야 정모때 회의가 너무 길어지는것을 방지할 수도 있고, 이 안건이 상당한 중요성을 가지고 있는데 정모에 피치 못할 사정으로 못 나오는 사람들이 의견을 낼 수 없을거 같아서 그러한 사람들의 의견도 들어봤으면 좋을거 같아서 이 페이지를 열었습니다.

어떤 식으로 진행하면 좋을까요?

  • 우선 신입생들이 직접 프로그램에 고민을 많이 하게 했으면 합니다. 기술적인 것보다는 알고리즘을 스스로 생각하게 하는 것을 우선적으로 많이 하게 했으면 합니다. 그리고 전에 창준 선배님이 가르쳐 주신 페어 프로그래밍 방식도 한 번 해 보는 것도 괜찮을 듯 합니다. 구체적인 모습은 저도 좀 생각 하고 다시 쓰겠습니다. 마지막으로 개인적인 이야기지만 작년에 데블스캠프를 하며 일주일 동안에 정말 많은 걸 배우고 느꼈습니다. 그것을 후배들도 느끼게 했으면 좋겠습니다...^^ --재동
    • PairProgramming은 안했으면 하네요.. 아직 프로그래밍에 대한 기초가 없을텐데.. 데블스 캠프의 목적이 프로그래밍의 기초를 다지는데 있지 페어 프로그래밍 방법의 전수는 아니라고 생각하거든요. --태호형
      PairProgramming을 하냐 안하냐 하는 것은 크게 중요한 것은 아닌데, 한가지 오해가 있군요. 페어 프로그래밍은 "PairProgramming 방법의 전수"를 위해서 하는 것이 아니고, 프로그래밍을 잘하기 위해서 하는 것입니다. 과외가 "과외방법의 전수"를 목적으로 하는 것이 아니고, 공부를 잘하기 위해서 하는 것이듯. --JuNe
      • 솔직히 저는 PairProgramming의 장점을 모르겠습니다. 같이 프로그래밍을 하면서 다른 사람의 프로그래밍 기술을 습득하는것이 장점인지 아니면 프로그램의 개발 속도 향상을 하는것이 장점인지 .. 아마도 둘다 장점이 되겠지요. 하지만 PairProgramming의 목적은 둘중에 개발 속도 향상에 중점을 두고 있다고 생각하네요. 다른 사람의 프로그래밍 기술의 습득은 부가적인 것이구요. 후배들에게 하는 세미나는 개발을 위한게 아니고 실력 향상을 위한 것인데 제가 보기에는 PairProgramming을 해서 얻는 기술보다는 기존의 방법들이 훨씬더 효과적일거라고 생각하네요. 그들 자신이 이 문제를 어떻게 해결해야 할 것인가에 대한 고민을 하고 자신의 생각을 코드로 표현할 수 있는 능력을 기르는 것. 문제 해결의 해법을 어느정도 찾을 수 있고 자신의 생각을 코드로 표현 할 수 있으며 타인의 코드를 완벽하게는 아니더라도 어느정도 이해 할 수 있는 수준이 된 사람이라면 PairProgramming으로 얻을 수 있는 기술들은 많을거라 생각하지만 전혀 그렇지 않는 신입생들에게는 무리일거 같군요. -태호-

  • 음.. 밤샘 세미나라..; 내가 밤을 샐수 있을지가 가장 큰 고민인데..; 그래도 귀여븐 후배들을 위해서라면.. 저두 페어해보는거에 대해 찬성이고여. 기간은 일주일이겠죠? 작년 데블스 캠프때는 무엇을 했나요? - 인수
  • 작년에는 '간략한 세미나(매우 짧습니다.) + 과제 제출 + 다음 문제 관한 세미나 + 제출...' 이런 식이었습니다. 세미나라 하면 거의 문제가 무엇인지를 알려주는 정도였습니다. 스스로 고민을 많이 하게 했던 캠프였습니다. 당시 과제의 갯수는 대략 20개 정도였습니다. --창섭
  • 여태까지 있었던 데블스캠프는 짤막한(정말 어이없을 정도로 짧을 수도 있는..^^) 세미나 직후 문제 내주기, 풀기 등으로 이루어졌던 걸로 압니다. 이번에도 그렇게 할 것인지.. 아니면 Team 프로젝트식으로 선후배가 한 팀이 되어 하는것이 좋을지도 생각해봐야겠습니다. 그런데 아직 경험이 부족한 1학년들과 선배들이 페어가 되어 한다면 (잘하는 사람 예외) 선배들만의 잔치가 될 우려가 있기 때문에 잘 생각해보고 정해야겠습니다. --창섭
  • 음.. 솔직히 문제 주고, 풀게 하고 하는게 더 현실적이고 배울점도 많을거 같네여.. 그러면 02들이 문제풀 동안 나머지 학번들은 뭐 하져? 같이 문제 푼다 해도 시간이 남을거 같은데여..- 상협
  • 작년엔 선배들이 1학년들할 때 지켜보면서 많은 도움을 주셨습니다. 이번에는 어떻게 할까요. 참. 작년엔 선배들이 각각 파트를 나눠서 세미나를 했습니다. 그리고 이번 회의때는 캠프기간에 무엇을 다루었으면 하는지도 있었으면 합니다. 방법 못지 않게 중요한 것이 '무엇을' 이니까요. 작년엔 HTML, C/C++, API, MFC 등을 했습니다. 물론 API, MFC 는 맛봬기였구요. 자료구조도 다루었습니다. --창섭
  • 꼭 힘들고 고되게 밤새가며 하지 않으면서도 많이, 오히려 더 많이 얻을 수 있다고 생각합니다. 어떻게 하면 모두 즐겁고 유익한 시간을 가질 수 있을까요? see also Wiki:SustainablePace --JuNe
  • NoSmok:ApprenticeShip모델을 적용해서, 처음에는 선배 주도로 프로젝트를 하나 하고, 다음에는 조금씩 후배가 안으로 들어오게 하고, 선배는 바깥으로 빠지는 것도 좋습니다. 이 NoSmok:ApprenticeShip에는 전통적으로 두가지가 있습니다. 재단사들의 경우, 사람이 새로 들어오면 맨 마지막 마무리 일(예컨대 단추달기 등)을 맡깁니다. 그러면서 경험이 쌓이면 공정을 역으로 거슬러 올라오게 합니다. 즉, 이번에는 단추달기도 하고, 주머니 달기도 하는 겁니다. 다음에는 단추달기, 주머니 달기, 팔 만들기처럼 하나씩 늘려 갑니다. 어느 시점이 되면 자신은 Journeyman이 되고 작은 일은 새로 들어온 Apprentice에게 넘기고, 자신은 나름의 확장을 계속하죠. 반대로 처음 공정부터 참여를 시키는 방법(항해사)도 있습니다. 중요한 것은 "주변"(덜 중요한 것)에서 "중심"(더 중요한 것)으로의 점차적 확장이지요. 이렇게 되면 견습공은 매번 "제품의 완전한 개발 과정"을 관찰할 수 있고, 어떻게든 도움이 되는 일을 하며, 그 참여의 영역을 넓혀나가게 되어, 종국에 가서는 전 개발 과정에 참여할 수 있습니다. 장난감 문제(Toy Problem)의 한계를 벗어나는 길이지요. --JuNe

  • 기존 방식대로.. 위에서 말하는 방식들은 어느정도 프로그래밍에 기초가 다져진 사람들에게 적합할듯.(신입생들의 실력이 어느정도일지는 모르지만 구구단도 제대로 못짤것 같음.) 기존의 방식은 아직 프로그래밍의 기초가 없는 사람들을 대상으로 성공적이었으므로. 그리고 몇년의 시행착오를 거쳐서 굳어진 방법이므로 . 새로운 방법을 도입한다면 해왔던 만큼의 시행착오를 해야 하므로 후배들이 얻을수 있는 것들에 대한 확신을 못함. --태호형
    변화를 두려워하면 영원히 개선되지 않습니다. 하지만 어찌되건, 이 캠프를 할 당사자(가르치고 배울 사람들) 이외의 사람들의 입김이 크게 작용하는 것은 여러모로 바람직하지 못하다고 봅니다. 선배들의 이야기를 참고는 하되, 결정은 당사자들(특히 직접 가르칠 사람들)이 자신의 주관을 갖고 하길 바랍니다. 필요하다면 몇가지 실험을 해볼 수도 있을 겁니다. (그리고, NoSmok:ApprenticeShip방식은 수천년의 시행착오를 거쳐 인류와 함께한, 우리 DNA에 코딩된 방식입니다. 이 방식의 장점은 아무 기초가 없는 사람도 참가할 수 있다는 것이죠. 과거에 공식적인 교육기관이나 별도의 책을 접하기 힘든 상황을 생각하면 오히려 당연하죠.) --JuNe
    • 변화를 두려워 하지는 않지만 무턱대고 마구 바꿔대면 망할수 있다는것은 감안해야 할겁니다. 마찬가지로 NoSmok:ApprenticeShip모델이 어떤걸 말하는지 알지는 못하네요. 당연히 당사자가 세미나는 어떻게 할것인가 등등은 당사자들이 정해야 할 문제이고 어쩌면 제가 그 당사자중 하나가 되어 버릴지도 모르겠네요. 저역시 기존의 데블스캠프( 실제로는 데블스가 신입회원을 뽑을때 썼던 방법입니다. 95년에 시작했으니 벌써 8년째를 접어드는군요..) 를 여러차례 해왔고 기존 방법의 장점을 누구보다 잘 피부로 느끼고 있습니다.위에서 간략하게 설명해 놓은 내용을 볼때 기존의 방식이 위에서 제시한 방법보다 훨씬 효과적이라고 장담할 수 있습니다. 그건 수년간 기존의 방법을 수행해온 경험자로써의 확신입니다. -태호-
      구체적으로 이전의 데블스캠프 때 했었던 일들에 대해 말씀해주셨으면 합니다. ZeroPagers들이나 JuNe 님의 경우 데블스캠프를 겪어보지 않은 관계로 '기존의 방법' 자체에 대해 제대로 알고 있지 못하다고 생각합니다. 그때 실제 했었던 행사들, 느꼈던 장점이 될 부분, 그리고 보완해나가야 할 점 등에 대해서 말씀해주신다면 각 방식들에 대한 올바른 시각을 가질수 있으리라 생각합니다. 서로 무엇을 말하는지 알지 못하는 상황에서는 좋은 판단이 내려질 것이라 생각되지 않습니다. --석천
      저는 참여자가 아니라서 적극적으로 나서지 않고 있었는데, 정말 좋은 생각입니다. 역시 여러 사람 머리가 한 두 사람 머리보다 훨씬 낫겠지요. 저는 옆에서 관전하면서 최소한의 조언만 하겠습니다. 제가 하려던 이야기의 골자는 석천군이 이미 이해하고 있다고 생각하므로... :) --JuNe

  • 최근까지 했던 세미나(??)에서 했던게 구구단, 소트, 피보나치 수열, 팩토리알, 스택, 큐 등 기본 문법과 기초 자료구조를 익히기 좋은 문제들이었거든요. 대다수가 잘 짜던것 같습니다. 기본 문법은 확실히 다져진 것 같으니 뭔가 좀 응용성 있는것을 해봐도 된다고 생각합니다. --인수
  • 제 생각에는 꼭 한가지 방법을 모든 신입 회원들에게 적용할 이유는 없다고 생각합니다. 아직 기초가 부족하다 싶은 회원, 좀 프로그래밍에 익숙하다 싶은 회원을 각자 다른 방법으로 캠프를 진행해도 괜찮다고 생각합니다. (작년에 MFC스터디 벽돌깨기팀과 오목짜기 팀처럼 익숙한 정도에 따라 방법을 나누는 거죠..) - 상협
    A very good idea!! --JuNe

무엇을 하면 좋을까요?

  • 좀 제대로 할것
    • C++ 클래스 부분은 어떨까요? - 상협
  • 맛만 보여줄 것
    • MFC도 간단히 맛좀 보여줘도 좋을거 같은데요.. - 상협
    • PHP나 비베 오쓔로 듣는 사람 있으니깐 그런건 어떨까...ㅎㅎ -병희
      • 스크립트 언어를 가르친다면 제일 익숙하고 쉬운 자바스크립트는 어떨지... ^^ (사실.. 내가 자바스크립트를 아~주 약간 봐서..ㅋㄷ) --창섭

  • 선배들이 어떻게 문제를 해결하는지 보여주는 것도 좋을 것 같습니다. --데기
    아주 중요합니다. 선배가 어떻게 버그를 잡는지, 코딩은 어떻게 하는지, 어떤 사고 과정을 거치는 지 등의 암묵적 지식(tacit knowledge)은 책에서 배우기 힘듭니다. 여러 선배와 돌아가며 페어를 해보면서 얻는 경험은 어느 무엇과도 바꿀 수 없는 귀중한 경험이 될 것입니다. --JuNe

    PairProgramming 이 그 방법으로서 적합하다고 생각하지만, 이 또한 '선'을 잘 맞춰야 하겠죠. 개인적으로는 약간의 전략이 필요하다고 생각합니다. 요즘 하고 있는 Pair의 경우 초기에 대해서는 가급적이면 알고 있는 내용을 천천히, 자세하게 가르쳐주려고 하는 중입니다. 일단 Todo List 를 주석으로 달아놓고, (또는 연습장 등) 제가 먼저 기본 틀이 되는 부분을 플밍을 합니다. 그리고 나머지를 후배들이 플밍하게끔 하고. 그리고 이 주기를 좀 짧게 가져보려고 하고 있죠. (20 - 30분) 그리고, 차차 그 주기를 늘려 보려는중. 너무 선배가 오래잡고 있어도 후배들은 넋놓고 구경하고, 너무 후배가 오래잡고 있어도 완성되는 정도가 오래걸려서 Feedback 이 오는 시간이 오래걸리면, 또한 지쳐하는 듯. --석천
    NoSmok:SituatedLearningWiki:LegitimatePeripheralParticipation을 참고하길. 그리고 Driver/Observer 역할을 (무조건) 5분 단위로 스위치하면 어떤 현상이 벌어지는가 실험해 보길. --JuNe

  • 학교를 다니면서 혼자서는 거의 공부하지 않을만한, 그러나 중요한 것들(see also FocusOnFundamentals). 앞으로 학교생활에서 체험하기 힘든 것들. 학교를 졸업할 때까지 유효한 지식으로 남아있을만한 생명력이 긴 것들. 학교생활 동안 공부, 프로그래밍에 영향을 많이 끼칠 메타 수준이 높고 늘상 하는 것들. 사고하는 방법. 프로그램을 만드는 방법. 아마추어 아이디어 맨은 "아이디어"를 만들고, 프로 아이디어 맨은 "아이디어를 대량으로 생성해 낼 수 있는 구조와 과정"을 만들어 낸다고 합니다 -- 프로가 만든 아이디어는 엄청난 양의 아이디어를 자동 생산해 냅니다. 제가 학교를 다닐 때 "프로그램을 생성해 낼 수 있는 구조와 과정"을 선배에게서 배웠더라면 얼마나 좋았을까 하는 생각을 자주 합니다. 예를 들어, 이메일 주소를 찾는 RE를 "답"으로서 가르치거나, 혹은 무작정 시행착오를 거치면서 그 답을 찾으라고 종용하거나 하는 것보다는, 그런 RE를 효율적이고 손쉽게 생성해 낼 수 있는 과정과 인식적 도구를 가르쳤으면 합니다. --JuNe

  • 이런 걸 할 때 날마다 위키에 조별로 공동일기를 쓰고 ThreeFs를 공유하면 좋을 겁니다. 그리고, 매일 저녁에 조원들이 같이 모여 Daily Retrospective를 갖도록 합니다. 이런 건 좋았다, 나빴다, 내일은 이렇게 저렇게 해보자 등등. 그러고 나서, 선배들이 같이 모여 전체 Daily Retrospective를 합니다. 우리 조는 이랬고, 너희 조는 저랬구나, 그럼 우리는 이렇게 해야겠다 등. --JuNe
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:20
Processing time 0.0350 sec