많은 사람들이 어떻게 소프트웨어를 배워요? 어떤 기술을 어떻게 배워요? 라는 질문을 한다.

먼저, 제목이 좀 비관적이기는 하지만 다음 글을 보면 우리가 소프트웨어 배운다는 것이 결국 뭘 배우는 것인가 하는 이야기가 나온다. 바쁘면 꼭 읽어볼 필요는 없다.

"소프트웨어 개발자 되기는 왜 어려운가?"


한 줄짜리 정답은 .. 소프트웨어를 배울 때 가장 빠른 길은, 작은 성취를 이루어가는 것이다. 다음 감동적인 동영상을 보라. 왜 아침마다 침대를 깔끔하게 정리해야하는지를 명쾌하게 설명했다.
(자동생성 자막이 지원되며, 자동번역을 선택하면 한글로도 그럴듯한 자막이 나온다.)

많은 학생들은 책을 사서 진도를 다 나간 뒤에 (즉, 공부를 한 뒤에) 뭔가를 만들겠다고 결심한다. 통하지 않는다. 책걸이를 하고나면 책만 남을 뿐, 뭔가를 할 수 있다는 자신감이라곤 생기지 않는다.

그래서 정리한  소프트웨어를 배우는 방법  :
(내가 늘 사용하는 방법이며, 아마 대부분 사람에게 통할 것으로 생각되어 권하는 방법)

1. 책을 사기 전에 배우고 싶은 것으로 무엇을 만들까를 먼저 생각한다. (새로운 언어를 배울 때, 난 항상 Snake Bite 라는 게임을 만든다.)

2. Hello World를 해본다. (이는 최소한의 Tool 사용법을 익히는 과정이다) - 이 과정은 동영상 따라하기가 도움이 된다. 우리가 배워야하는 것의 대부분은 남들이 나보다 먼저 배운 것이다. 그들도 어렵게 배웠다. 그래서 고마운 분들이 따라하기 동영상을 만들었고, Youtube에 보면 Hello World 따라하기 동영상이 거의 100% 있다. - Youtube에서 "배우고싶은것이름 hello world" 를 검색하자. 이 'Hello World!' 따라하기 과정에서 작은 성취를 얻자. "아! 진짜 되는 구나", "나도 이걸 써서 간단한 메시지를 찍을 수 있게 되었구나." - 여기까지 해보니 완전 재미가 없으면.. 정말 하고 싶은 것인지 다시 생각해보자.

다음은

3. 책을 산다. 요즘엔 물리적인 책이 없거나, 인터넷의 무료 EBook도 많다. 책이 없으면 (예를 들어 무슨 API 만 잔뜩있는 그런 프레임워크를 배워야 한다면) 그 소프트웨어의 man page (모든 API가 설명되어 있는 문서 - API reference)를 찾는다.

4. 아주 빠른 속도로 책의 각 섹션 (각 API, man page, ..)의 제목과 앞의 몇 문장만을 정독한다. (젊은이들은 아재들과 달라서, 그 제목과 앞의 조금을 꽤 오래 기억한다). 웬만한 책은 오며가며 읽어도 하루, 이틀이면 읽을 수 있다.

5. 위 1번에서 만들려고 했던 것의 최소한부터 만들어본다. 1번에서 예를 들어 '페이스북 같은 것'을 만들기로 결심했다면, 아래 그림과 같이 

실제 검색은 안된다 해도, 그림만이라도, 이쁘지는 않더라도 이 부분을 비슷하게 만드는 거다. 그러면서 조그만 성취감을 느끼는 것이 중요하다.

6. 최소한을 만드는 과정에서 배워야 할 것이 있다는 것을 알게 되면, 다시 책 (man page, 홈페이지, eBook...)으로 돌아가서 그 배워야 할 항목 전체를 정독한다. - 선수 개발자들도 대개 뭔가를 사용하게 될 때 그 때 정독을 한다.

7. 6번의 과정에서 뭘 배워야할지를 알게되는 것이 중요한데.. 그래서 '최소한'을 진짜, 정말, Really, 누가 뭐래도 '최소한'으로 정해야 한다. 그랬는데도 뭘 배워야 하는지 모르겠다면. 이 장면에서 멘토가 필요하다. 롤모델이 아니라 멘토다. 롤모델은 액자에 걸려있는 사람이고, 멘토는 전화해서, 메일보내서, 만나서 질문하면 같이 답을 찾아주는 사람이다. 나보다 아주 조금만 더 잘하면 된다. 어느날 그 멘토와 내가 비슷한 수준이 되면, 멘토와 함께 우리보다 조금 더 잘하는 멘토를 찾으면 된다. 내 옆의 사람이 멘토다. 커뮤니티가 중요하다.

8. 그 "최소한"을 조금씩 늘려간다. 조그만 성취를 계속해나가는 것이다. 그러면서 배운다.

9. 여기가 제일 중요한데.. 그 조그만 성취를 자랑한다. 두려워하지말자. 누구나 다 첫번째 발걸음이 있다. 애인에게. 친구에게, 멘토에게, 부모님에게, 지나가는 사람에게, 페이스북에서, 트위터에서, 인스타그램에 공개하고 자랑하자. 누구 하나라도 '좋아요'를 눌러주면 그 '조그만' 성취를 더 크게 만들려는 의욕이 하늘을 찌르게 된다. 어느 포인트에 공개해야 하나? 그 조그만 성취를 자랑(공개)할까 말까 고민이 된다면.. 바로 그때가 자랑할 때다.

http://image.ajunews.com/content/image/2016/03/03/20160303155107141989.jpg


10. 그리고 뭔가 할 수 있게 되었다고 느끼면, 어떤 계단을 하나 올라섰다고 느끼면, 위 3번에서 언급한 뭔가를 만들어보기 위한 (무슨 언어, 프레임워크) 책이 아닌 (~~ 론으로 끝나는 책, 프로그래밍, 자료구조, 알고리즘, 운영체제, 데이터베이스, 네트워크, 그리고 확률통계, 선현대수 같은 수학책 등의) 이론 책을 관심에 따라 읽어본다. 당연히 전공자들에게 필수적인 유명한 주제들이기 때문에 유튜브 또는 MOOC에 엄청나게 쉽고 잘 가르쳐주는 동영상이 있다. 훌륭한 분들이 정리한 것을 차근히 배워 나도 알게되는 시간은 소프트웨어 개발자로서의 성장에 반드시 필요하다. 이런 책은 여유를 가지고 꼼꼼히 공부한다. 가능하다면 연습문제도 풀어보면서.

11. 더 시간이 지나, 여러 요소가 포함된 비교적 큰 프로그램을 만들어본 경험이 좀 생기면, 큰 그림에 관한 책들을 본다. 성능과 관련된 책, 디자인 패턴에 관련된 책, 데이터분석에 관한 책, 소프트웨어 공학에 관한 책, 오픈소스 소프트웨어에 관한 책 들을 찾아 본다. 필요한 부분을 발췌해서 읽어도 좋다.

12. 위 모든 과정에서 혼자하기 힘들다. 커뮤니티로 가자. 다음 사이트가 도움이 좀 될 것이다.

https://github.com/innovationacademy-kr/software-resources

*

한 줄 요약: 조그만 성취 반복하면서 배우고, 성과를 자랑하자.

*



나는 LINE 개발자입니다
Posted by 이민석 hl1itj

댓글을 달아 주세요

  1. rpgmakerxp 2016.04.17 14:32  댓글주소  수정/삭제  댓글쓰기

    교수님 가운데에 이미지가 엑박입니다!

  2. oliveoil 2016.06.26 22:37  댓글주소  수정/삭제  댓글쓰기

    교수님! 항상 어떻게 컴퓨터공부를 해야해나 고민을 많이 했는데, 조금이라도 방법을 찾은 것 같습니다. 좋은 글 써주시고 공유해주셔서 감사합니다! 저, 잘 할수 있겠죠?

  3. 이민석 hl1itj 2016.06.26 22:37 신고  댓글주소  수정/삭제  댓글쓰기

    물론입니다. 누구나 잘할 수 있습니다^^

  4. yuns 2016.10.18 22:23  댓글주소  수정/삭제  댓글쓰기

    도움이 많이 됐습니다. 감사합니다^^

  5. ymmu 2016.10.19 00:35  댓글주소  수정/삭제  댓글쓰기

    논문쓰는거랑 비슷하군요. ㅋ

  6. yamiyami 2016.10.19 14:19  댓글주소  수정/삭제  댓글쓰기

    좋은글 잘 읽었습니다. 혹시 출처 남기고 가져가도 되겠습니까??

  7. 황건구 2016.10.19 20:05  댓글주소  수정/삭제  댓글쓰기

    좋은 글 잘 봤습니다. 힘이 되네요.

  8. 대학생 2016.11.15 22:29  댓글주소  수정/삭제  댓글쓰기

    정말 저에게 많은 도움이 되었습니다.

    초등학생 때부터 꿈이 프로그래머인 저는 컴퓨터 이외의 과목에서는 크게 흥미를 가지지 못했습니다.

    고등학교를 컴퓨터 특성화고로 진학하여 3년동안 컴퓨터를 배우고, 또 대학도 마찬가지로 컴퓨터공학과를 간 후,

    1학년하고 군대를 가고, 통신병으로 근무하면서 간접적으로 컴퓨터를 배워나갔습니다. 전역하고 다시 학교를

    다니면서 정말 배우는 것도 많고 보람찼습니다. 하지만 누군가가 저에게 무엇을 개발해보았냐고 묻는다면, 저는

    개발 한 것이 아무 것도 없기 때문에 대답을 할 수가 없습니다. 그저 진도를 따라 고등학교 3년을 보내고, 대학교 역시 커리큘럼에 따라 공부를 하다보니 정말 내가 개발한 것이 없더군요.

    누군가가 짠 코드를 그대로 짤 뿐이고, 교수님이 내는 프로그램을 그냥 코딩할 뿐이더군요. 정말 비참했습니다. 나름 컴퓨터에 대해 공부한지 7년이 다되가는데도, 번듯하지는 않아도 내가 만든 프로그램이 없다는게요.

    우연히 이 곳의 게시글을 읽게 되었습니다. 스타트업의 임금이라는 게시글을 읽고, 여러 게시물을 보게 되었고,이 글을 보고 다시 자신감을 가지고 공부를 시작하려고 합니다.

    작은 성취가 모여 큰 성취를 이루겠지요. 자주 와서 글을 읽겠습니다. 다시 한번 이런 글을 통해 저 같은 사람에게 도움을 주심에 감사합니다.
    작은 성취가 쌓이고 쌓여서 뒤 돌아보면 크게 되어있겠지요

  9. LOEe 2020.07.20 14:26  댓글주소  수정/삭제  댓글쓰기

    좋은 자료입니다.

  10. CgYC 2020.07.20 14:26  댓글주소  수정/삭제  댓글쓰기

    좋은 정보입니다.