2014년 12월 17일 수요일

'Learning' 에 대하여

오늘 교수님과 학습 과정에 대해 토론 할 일이 있었는데,(사실 토론이라기 보다는 수업에 가까웠지만) 일단 나의 주장은, 많이 알면 (무조건) 연구에 도움이 될 거 같다였다. 한 예로, 최근에 알고리즘에 관심이 생겨서, 다이내믹 프로그래밍에 대해서 좀 더 공부하고 싶었고, 좀 더 자세히 알면 뭔가(?) 도움이 될 거 같다였다.

교수님 얘기는 정말 의미가 있을까? 였다. 교수님은 보통 Why? 를 항상 얘기한다.
시간은 한정되어 있고, 좀 더 가치있게 쓰는 게 좋은데, 이미 언제 써야 하고 컨셉을 알고 있다면, 지금 별로 필요하지도 않은 타이밍에 그걸 공부하는 건 의미가 없을 거 같다였다.
그리고 더 중요한 건 '자세한 내용'은 보통 시간이 지나면 잊어먹고, 추후에 필요할 때 결국 다시 공부해야 된다였다.(특히 바로 써먹지 않으면)
갑자기 머리가 깨이는 느낌이 들었다. 교수님의 용어로 이런 걸(원래 있는 용어인지도 모르겠다) Lazy Learning 이라고 한단다. 배우는 거에도 Lazy 가 있는거구나!

그러고보니, 2년쯤 전에 NHN NEXT 학장님하고 얘기를 하고 있었는데, 학장님이 올린 공대얘기를 해주었는데, 핵심은 대학 공부를 시작 할 때, 필요한 과목을 바로 배우지 않고, 프로젝트(목표)를 정하고, 그거에 맞추어서 필요한 과목을 배운다는 점이었다. 사실 이렇게 해도 배우는 크게 차이가 없을 거 같기도 하지만, 동기와 새로운 문제를 해결할 때 공부하는 방법을 배운 다는 점에서 졸업후에, 연구할때 일할 때 크게 도움이 되지 않을까 싶다. 사실 그때는 사실 오 '좋겠구나' 정도였는데, 요즘은 저렇게 해야만 제대로 배울 수 있지 않을까? 하는 생각이 든다. 특히 어떻게 새로운 문제를 해결하고, 접근 하는 지에 대해 아는 것은 정말 중요하다.

한편으로는, 기존에 MOOC 에서 알고리즘을 공부할 때 마다 끝내지 못한 게 게을러서 그랬다고 생각했는데, 사실은 명확한 목표가 필요했던 게 아닐까 싶다. 물론 사실 컨셉도 모르는 알고리즘도 있어서 공부하긴 해야하지만, 이번에는 과제를 전부 해보는게 아니라, 알고리즘을 보고 어디에 어떻게 써먹을 수 있을지 고민해보는 형태면 좋을 거 같다.

또한 공부할 때 어떻게 해야 되는지에 대해서도 교수님과 많은 토론을 할 수 있었는데,
솔직히 학교 졸업 이후로 학습을 제대로 못하고 있다고 얘기드렸더니,
학교 다닐때 했던, 노트 필기나, 짧은 수업 시간에 집중해서 생각하는 것등, 여러가지로 학습을 하는 방법에 대해 얘기할 수 있었다.
교수님이 보내준 참고자료는, 어떻게 정보를 습득하고 인덱싱할 것인가에 대한 것과, 비판적으로 사고하기!
http://lifehacker.com/how-to-better-retain-information-from-books-articles-1674677444
http://lifehacker.com/enhance-your-critical-thinking-skills-with-these-socrat-1672909712

만학도로 박사 과정을 시작하고 나서, 제일 좋은 건 어떻게 생각하고, 어떻게 시간을 관리하고, 그리고 어떻게 공부하는 지, 학습하는 지, 특히 문제를 해결하는 법을 배운다는 점인 거 같다. 이런 걸 배우고 경험할 때 마다, 내가 꽤 논리적인 사람인지 알았는데, 학교에 오니, 비논리적인 용어와, 생각을 남발하는 한명의 학생이구나 싶다. 그래도 한걸음 한걸음 어제와 달라지는 걸 느낄 수 있는데, 역시 새로운 곳에서 새로운 마음으로 공부하는 것의 장점이랄까!


2014년 11월 6일 목요일

공부하는 방법에 대하여

이번에 새롭게 대학원 공부를 시작하며, 공부하는 방법에 대해서 많이 잊어버린 것을 깨달을 수 있었습니다. 새롭게 이곳저곳에서 공부하는 방법에 대해서 찾아보며 나중에 다시 찾아보기 위해 정리해둡니다.

공부하는 방법은 크게 어떻게 실제로 공부할까와 어떻게 시간을 괸리할까 두가지 정도가 있습니다.

어떻게 공부할까는? how to learn 으로 quora 에서 검색하니 많은 내용을 볼 수 있었습니다.(Quora 대단!!)
http://www.quora.com/What-is-the-best-study-method
많이 볼 수 있었던 기억 곡선 부터, learn by doing 이나 learn by teach 까지 다양한 내용을 볼 수 있네요.

시간 관리는 아래 Quora 에서 볼 수 있는데,
http://www.quora.com/Time-Management

Randy Paush 교수님의 강의를 많이 추천하는군요
http://www.youtube.com/watch?v=oTugjssqOT0

그리고 끝으로 Ted 의 아기가 배우는 법에 대한 내용이 있네요.
http://www.youtube.com/watch?v=5MgBikgcWnY

곧 보고 좀 더 정리해서 올려두겠습니다!

2014년 9월 20일 토요일

프로그래밍을 어떻게 시작하나요?

요즘 주변에서 프로그래밍을 어떻게 공부해야 되냐는 많이 듣습니다. 이제 대학교 생활을 시작하는 학생들도 있고, 다른 분야를 하다가 물어보는 분들도 았고, 컴퓨터 공학을 전공하고 있지만 학교 강의만으로는 부족해서 물어보는 경우도 있습니다.

1.온라인 강의 - Udacity 의 컴퓨터 공학 개론

제일 먼저 도전해볼만한 것으로는,
Udacity 의 컴퓨터 공학 개론입니다.  영어 온라인 강의이기 때문에, 약간의 영어 실력이 필요하고, 온라인 강의 특성상 직접 시간을 정하고 공부하는 의지력이 있어야 합니다. 다양한 분야에서 쓰이는 Python 을 이용한 프로그래밍의 기본 개념인  변수, 함수 등에 대해서 자세히 설명하고 있습니다.   그리고 중간 중간 지루해지려고 할 때마다 직접 문제를 풀 고 확인하도록 되어있습니다. 참고로 모두 영어로 되어 있고, youtube 의 동영상을 직접 플레이하는 형태입니다. 영어 자막옵션도 있습니다.

Udacity의 온라인 강의를 따라가기 어렵다고 느끼는 경우에는,
http://code.org/ 의 코스를 먼저 따라해보고 이후에 Udacity의 강의를 들어도 좋습니다.

위의 코스를 마치고 나면 만들고 싶은 웹이나 앱또는 알고 싶은 것들에 따라서 Udacity 의 코스를 몇 개 더 듣거나,  조지아텍 온라인 석사과정을 시작할 수 도 있습니다.

2. 오프라인 강의

[풀타임 오프라인 강의]

      1) NHNNEXT
      NHNNEXT 학생들이 만는 강의 자료나 결과물등을 보면 정말 멋진 것들이 많습니다!
  
      2) 일반 대학원
      대학원은 동기 부여 측면(!)에서 매우 좋은 편이고, 질 좋은 학부강의를 직접 찾아가며 들을 수 있다는 장점이 있습니다.
     소프트웨어 특성화 대학원은 무료 과정에 방학동안 해외 연수등이 있으니, 한 번 알아보는 것도 좋을 거 같습니다. 영어 시험(Toefl,GRE)이 준비 가능한 경우에는 한국 뉴욕주립대 컴퓨터 공학 석사 과정도 있습니다.

[파트타임 오프라인 강의]

      3) 학원
      주말에 직장인등을 대상으로 다양한 국비지원 프로그래밍 교육 과정이 있는 것으로 알고 있고,  SK 에서 진행하는 T 아카데미Kitri 도 있습니다.

2014년 8월 14일 목요일

조지아텍 석사 준비 이야기 #2

기존 자료에서는 관련 내용을 소개드렸었는데, 한국에서도 준비하시는 분들이 늘어나면서 질문하시는 분들이 있어서 몇가지 답변 드립니다.

1. 입학조건을 좀 더 자세히 알려주세요?
    일단 다른 경우나 지원자 표준 점수가 없어서, 제 기준으로만 얘기 드리면,
    첫 해에는 비교적 지원자가 적어서 좀 더 경쟁이 적지 않았을까 싶긴 합니다만, 그때 기준으로 볼 때 토플 90점 정도에 추천서 3장(꼭 교수님께 받지 않아도 됩니다), 그리고 정성 들여 쓴 Essay 정도면 충분하지 않았을까 합니다). Essay 는 꼭 네이티브 스피커에게 교정 받기를 권합니다. 주변에 아는 사람이 없다면 Vappingo 채팅캣 서비스를 이용하는 것도 좋습니다.
 
2. 가격은 어떻게 되나요?
   기존 슬라이드쉐어 자료에도 찾을 수 있습니다만, 두 과목 정도 들었을때 대략 1000$ 정도 나옵니다. 참고로 매 학기 들어가는 비용입니다. 총 비용이 7000$(http://www.omscs.gatech.edu/)로 나오는 것으로 나오네요. 처음에 두과목만 들을 수 있고  이후에는 더 신청 가능하다는데, 일단 두과목도 회사 다니면서 하기에는 매우 많은 것으로 생각합니다.(일단 한과목으로 시작하는 걸 추천 또는 한과목+익숙한 한 과목)

3. 수업 퀄리티는 어떤 가요?
  수업 매우 좋습니다. 다양하게 실습 가능하고, 수업과 과제도 많이 준비한 흔적이 보입니다. 다만, 그 만큼 많은 시간을 투자해야 합니다. MOOC 의 특성상 한 주라도 늦춰지면 따라잡기가 매우 어려우므로, 과목당 1주일에 3~6시간 따로 공부할 시간을 미리 잡아두어야 합니다. 실제 수업은 https://www.udacity.com/georgia-tech 에서 바로 확인할 수 있습니다!

4. 추천?
   새로운 분야(머신 러닝 또는 AI) 를 더 공부하고 싶다거나, 새로운 플랫폼(안드로이드,리눅스등)을 공부하고 싶은 분들께 추천드립니다. 또한 영어 공부를 좀 더 하고 싶은 분들께도 좋은 도전과제이지 않을까 싶습니다.(토플 부터 수업까지!)

5. 졸업 까지 하는 건 쉬울까요? 온라인 코스라 힘든 부분은 없나요?
    끝까지 하는 건 쉽지 않은 일이라는 생각이 듭니다. 일단 온라인 코스 특성상 한 번 미루기가 쉬운데, 그 이후에 따라잡기가 어렵습니다. 무조건 일정한 시간을 정해두고 해당 코스를 시작하길 권장합니다. 강한 의지력이 필수적이고, 온라인 코스를 하나라도 끝까지 끝내보고 시작하는 것도 좋을 거 같습니다.(http://udacity.com/ 등에서)

6. 취업에 정말 도움이 될까요? /한국에 실효성이 있을까요?
   저는 하다가 중단한지라 얼마나 도움이 될지 사실 모르겠습니다만, 제가 생각하는 장점은, 최신의 공부를 스스로의 의지로 진행했다는 점이 아닐까 싶습니다. 실제로도 상당히 어렵고, 많은 시간을 투자한만큼 취업에 도움이 될만큼의 실력을 쌓는데 도움이 되지 않을까 싶습니다.

7.기타
    참고로 국내에도 몇몇 미국 대학들이 들어와 있고, 해당 학교에서는 공부후, 미국본교에서 공부하고 졸업하는 프로그램들이 있습니다. http://www.sguc.co.kr/ 에 송도 글로벌 캠퍼스에 들어와 있는 뉴욕주립대나 조지메이슨, 유타대등의 설명이 있습니다. 참고로 뉴욕주립대 박사과정(http://www.sunykorea.ac.kr/)의 경우 전액 장학 등 혜택이 많습니다.

혹시 이외에도 궁금한 점이 있다면 댓글남겨주세요!



2014년 4월 5일 토요일

조지아텍 석사(MOOC) 준비 이야기


작년 중반부터 준비해서 올해 초에 한달 정도 해보았던(=중간에 그만둔) 조지아텍 석사 과정 준비 및 간단한 과정 이야기입니다. 최근에 Udacity 를 통해서 공개되어서 관련 내용도 넣어보았습니다.

예전부터 한 번 쯤 준비해서 발표하고 싶다고 생각했는데,
마침 KASASTUDY에서 기회가 있어서 잽싸게 발표했습니다.
다른 분들도 MOOC나 이런 형태의 교육과정에 관심이 많으셔서 다양한 얘기를 나누고 배울 수 있었습니다!

차를 사고 나서!


어찌 어찌 하다 보니 송도로 이사오고 차를 사게되었는데,

신기한 점은
1.0 정도의 시력으로 수십킬로의 속도를 내는 차를 모두들 제법 몰고 다닌다는 것,
솔직히 자전거보다 분명히 더 어려운데, 자전거 보다 배우는 시간이 빠른 편이라는 거.
그리고 누구나 시간이 지나면 자동차 운전을 잘 한다는 것!

그래서 왜? 자동차는 대부분의 사람들이 잘 배우고 빠르게 타고 다닐 수 있을까? 하고 계속의문이 들었는데

1. 긴장감? 보통 초보 운전시에는 엄청난 긴장감과 압박하게 운전을 하게 되는데, 이 긴장감이 학습에 엄청난 도움을 주지 않을까?

2. 재미? 내가 원래 갈 수 있는 곳 보다 멀리 갈 수 있고, 좀 더 편안하게 갈 수 있고?

3. 정형화 된 학습 방법,
   - 같은 형태의 미러들(백미러,사이드미러)
   - 다른 차들이 운전하는 방법을 계속 보고 배우게 됨?

암턴 겁 많은 초보 운전자의 잡 생각이었습니다.

무인 자동차가 나올 때 까지 기다리려고 했는데,
일단은 무인 자동차 만드는 법 공부나 하고 있어야겠습니다!


2014년 3월 8일 토요일

해외 취업에 대하여 #2





예전에 독일로 취업이 되고 나서, 즐거운 마음에(!) 처음 관련 글을 썼던 거 같습니다. 이후에는 해외에서 일하며 느낀 것과 취업 이야기를 기억해두려고 관련 슬라이드도 만들었었습니다. 이후에는 게임쪽이 아닌 다른 회사도 도전해보고, 다양한 회사들과 면접 보며 느낀 점들을 적어보려고 합니다.성공적이지 못한 경우도 많습니다만 기록해두고 무엇이 부족했는지 반성해보는 것도 좋을 거 같아서 여기에 적어둡니다. 저는 아직 영어가 제일 큰 관문입니다 -) 이런 것들을 준비하면서 개인적으로 프로그래밍 공부를 어떻게 해야 될지, 프로그래머로써 미래 그림을 어떻게 그려야 할지 많은 생각을 할 수 있었습니다. 관련해서 The Startup of you 라는 링크드인 창립자의 책이 많은 도움이 되었습니다. 스스로를 스타트업이라고 생각하라는 말이 꽤 와닿았었습니다.(한국판 표지는 '뻔한' 자기 계발서 처럼 보입니다만...)

1. 링크드인은 이제 필수입니다. 한국 프로그래머도 이제 많이 만들어두는 거 같고, 괜찮은 회사 공고라든지, 한국에 지사를 설립하는 소프트웨어 기업들은 여기 공고에 제일 먼저 올라옵니다.

2. 회사리뷰 사이트 리뷰를 열심히 하고 권장하는 회사들이 많아서, Glassdoor같은 곳에서 미리 회사 문화를 확인하고 마음을 정할 수 있게 되었습니다. 한국에도 이런 리뷰 시스템이 있으면 좋겠네요.

3. Github 나 MOOC 관련 코스 경험도 도움이 되는 것으로 보입니다.아직 제가 이쪽은 많이 하질 않아서 정확한 느낌은 모르겠습니다만 대부분의 회사에서 인정해주는 편으로 알고 있습니다.

4. 알고리즘
  대부분의 소프트웨어 기업에서 알고리즘 시험은 기본입니다. 특히 비주얼 스튜오에만 익숙한 경우 구글닥스 등에서 코딩을 하게 되면 당황하거나 시간이 많이 걸리는 경우가 많습니다. 미리 관련해서 면접 연습을 해두면 좋습니다.
    big-oh notation 등을 많이 생각해 보지 않았거나 Quicksort나 그래프가 기억나지 않는다면, 코세라 코스 수업을 추천합니다. 제대로 공부해보려고 페이스북 그룹도 만들고 했는데, 다른 일에 밀려거 지지부진하네요.
   Visual Studio에 매우 익숙한 저로서는 사실 미리 분석하고 코딩 하기 보다는 코딩하고 분석하는 것에 익숙했었는데,(폭포수 모델이 좋은 지 나쁜 지에 대해서는 많은 토론 거리가 있을 거 같습니다.) 제 입장에서는 거의 노트패드 수준에서 코딩하는 많은 회사들의 경우는 미리 분석하고 생각하고, 툴에 의존하지 않고 코딩하는 것을 매우 중요하게 생각하는 거 같습니다. 사실 대규모 병력 프로그래밍등으로 갈 수록 툴에 의존하기 힘들고, 보이는 데이타에 의존하기(빅데이타) 힘들어서 그런 게 아닐까 하고 추측해봅니다.
   물론 게임 회사의 경우에는 Visual Studio 로 OpenGL 이나 DirectX과제를 하게 되는 경우가 많습니다.
  큰 회사들(Google,Facebook)등의 겨우 자체적으로 알고리즘 컨테스트를 열거나, TopCoder 등에서 스폰싱을 하기도 합니다. 탑코더에서 알고리즘 대회에 참가해보는 것을 적극 권장드립니다.
  어느 정도 준비가 되면,  Cracking the coding interview등 관련 책을 사거나, CareerCup등에서 준비합니다.

5. 서류통과가 힘들다면?
    사실 미국 학위가 있으면 도움이 되는 거 같습니다. MOOC 로 조지아텍 석사를 따 보는 걸 어떨까요? 온라인이지만 수업강도는 매우 높습니다. 처음에는 한과목씩 듣는 것을 추천합니다.
    최근에는 한국에도 몇몇 미국대학교가 들어온 것으로 알고 있습니다. 한국 뉴욕 주립대 같은 경우에는 선택에 따라서 한국/미국 1년씩 공부하게 됩니다.

6. 전화영어
    전화영어는 언제나 어렵습니다. 예전에 전화영어로 영어공부한 게 조금 도움이 되었던 거 같습니다. Skype로 화상 면접을 하는 경우도 많으니 틈날때마다 친구와(?) 인터뷰 연습해보는 것도 좋습니다.


2014년 2월 17일 월요일

하복을 떠나며


트리니지시절 부터 하복에 합병 이후 까지 그리고 독일의 시골마을에서 미국 샌프란시스코 그리고 한국까지 3년반 정도를 보낸 회사를 이번 달 말까지만 근무하게 되었습니다.
지금까지 다닌 회사 중에서 가장 유의미한, 즉 많은 것을 보고 듣고 배운 시간이 아닐까 싶습니다.

우선  프로그래머로서, 그리고 팀원으로서 좋은 분들과 함께 했을 때 얼마나 능력을 발휘할 수 있는 지에 대한 자신감이 생겼습니다. 개인의 능력보다 나를 알아봐주고 도와주는 사람이 있을 때 얼마나 많은 일을 할 수 있는 지 알게 되었습니다. 즉 팀으로 무언가를 만들어 내는 것을 익히고, 혼자 많의 능력이 아니라 주변 분들 덕분에 내가 있다는 것을 알게 되었습니다. 모자른 영어를 들어주고, 저에게 늘 도전하도록 도와주신 팀장님께 다시 한 번 감사드립니다.

회사에서 2년이 지난 후부터는 팀 매니저로서 일해볼 수 있는 경험을 가질 수 있었습니다. 의견을 조율하고 회사가 어떻게 돈을 벌게 되는 지 느낄 수 있는 소중한 시간이었습니다.부족한 커뮤니케이션 능력과 영어를 즐거운 마음으로 공부하고 또 향상할 수 있었던 거 같습니다.