소프트웨어

입문자에게... "프로그램 공부 어떻게 해야 하나요?"

falconer 2008. 2. 27. 09:05
몇몇 분들이 이제 .NET 을 시작하고 공부를 하면서 저에게 이런 문의를 하신 분들이 계셨습니다.
 
닷넷 공부를 어떻게 하세요?”
 
사실 공부하는 방법은 학창시절에서부터 사람마다 너무 다양하기 때문에, 마냥 “열심히 하세요”, “외우세요”, “직접 해보세요” 등등 의외로 성의 없는 답변이 될 수도 있을 것 같아요. 그도 그럴 것이, 달달 외워서 잘 하는 사람이 있기도 하는 반면, 매일 골목 뒷 편에서 같이 놀던 친구들도 시험 때면 성적이 상당히 좋은 사람도 있습니다(이런 친구는 수업 때만 잘 들으면 된다 라고 하더군요^^;).
 
부끄럽지만, 저는 사실 학창시설에 공부를 못했습니다. 공부를 어떻게 해야 하는지도 몰랐고, 더욱 중요한건 관심(?)이 없었습니다. 학업을 열심히 하는 것이 학생의 신분이라면, 전 좋은 학생은 아니였나 보네요. 그렇다고 너무 사춘기의 방황이 심해서 관심분야인 컴퓨터 공부도 내팽겨 쳐 버렸으니까요.
 
궁금해 하시는 분들도 계셔서 제가 지금까지 봤던 책을 나열해 봅니다. ( 프로그램과 관련 없는 책은 제외입니다 무작위 순서 )
 
l Taeyo’s ASP.NET V1.0 ( 영진출판사, 김태영 저 )
l ASP.NET 으로 구현하는 블로그 프로그래밍 ( 가남사, 장현희 저 )
l ASP.NET Website Programming ( 정보문화사, 김태역 역 )
l C# 을 이용한 ASP.NET 웹 프로그래밍 ( 크라운출판사, 황인균 저 )
l Effective C# ( 한빛미디어, 김영신 역 )
l 마이크로소프트 ASP.NET AJAX ( ITC, 이광수 역 )
l Visual C# .NET 2005 2nd Edition 실전 프로젝트 ( 영진출판사 최재규 저 )
l C# Programming Bible with .NET Framework 3.0 ( 영진출판사, 최재규 저 )
l XML For .NET ( 정보문화사, 김세현 역 )
l C# 디자인 패턴 ( 정보문화사, 전병선 역 )
l C# Web Sevices ( .NET 리모팅과 ASP.NET 으로 웹 서비스 구현하기 ) ( 정보문화사, 문건웅 역 )
l ASP.NET Distributed Data Application ( ASP.NET 분산 데이터 애플리케이션 ) ( 정보문화사, 강승규 역 )
l Professional ASP.NET Web Services ( 정보문화사, 송영덕 역 )
l 훈스닷넷과 함께하는 .NET Framework 3.0 ( 영진닷컴, 박경훈/서동진 저 )
l PROGRAMMING MICROSOFT WINDOWS WITH C# ( 정보문화사, 김태현/박한돌 역 )
l 찰스페졸드의 WPF ( 에이콘, 최세영/황상철/김인기/신희철 역 )
l Programming WCF Services(한글판) ( ITC, 박경훈 역 )
 
그리 많은 책은 아니지만, 제 경력에 일반적인 책 읽기의 권장량 정도를 본 것 같네요. E-Book(인터넷 PDF 도서)를 포함한다면 더 많은 양이 될 수 도 있습니다. 그렇다고, 이 책의 내용을 모두 독파하고 빠삭하게 마스터 한 것은 아닙니다. 언제나 옆에 끼고, 참고서 처럼 심심할 때 끄집어보고, 생각날 때 보고 하는 책들이 대부분 입니다.
 
1. 입문서는 반드시 마스터 하라.
 
그렇다면, 이 모든 책을 모두 이해하고 정독했느냐? 그렇지 않습니다. 이중에서 입문서 3권만을 6개월 이상 옆에 끼고 살았습니다. 워낙 닷넷에 대한 기초가 없었기 때문에, ASP.NET 과 OOP(객체지향)를 중심으로 공부를 했습니다. BASIC 이나 C 언어에 대해선 어느 정도 수준(?)이 되었으나, 처음 접해보는 OOP 는 내 머리 속을 가장 많이 혼란스럽게 하였고, 더 이상 다른 책들을 보지 못하고 덮어버리게 만든 장본이었답니다.
 
베스트셀러이자 최고의 입문서인 김태영님의 책을 본 후, 스스로 초급 탈출을 외치며 또 하나의 베스트셀러인 장현희님 책을 보았을 때, 너무나도 큰 좌절이었습니다. 장현희님의 책 중반부터 도저히 보고 또 봐도, 이해할 수가 없었기 때문입니다. 바로 이해할 수 없던 이유는, OOP 에 대한 텅 빈 지식 때문이었죠.
 
 
2. 입문서는 눈높이에 맞는 책을 직접 서점에서 골라라.
 
처음으로 김태영님의 책을 인터넷으로 주문하고, 한달 동안 집에 처박혀 공부했습니다. 그리고 두 권의 책을 인터넷으로 주문을 하게 되었죠. 하지만, 이 책 두 권은 OOP 의 기초를 모르고선, 도저히 책의 마지막 장을 찍을 수 가 없었습니다. 바로, 책 한 권으로 모든 것을 마스터한양 자신의 실력을 망각했던 것입니다.
 
당장 서점으로 달려가서 직접 읽어보고 자신에게 맞는 책을 고르세요. 똑같은 수학문제를 놓고, 푸는 방법을 10분 동안 알려준 후, 숫자만 다른 문제를 제시했을 때, 풀지 못하는 사람도 분명 있을 거라고 생각합니다. 또한 응용 문제를 제시했을 때, 손도 대지 못하는 사람도 분명 있을 거라고 생각합니다. 이것은 문제의 답이 중요한 것이 아니라, 문제를 푸는 방법을 배운 10동안 자신에게 맞는 수준으로 배우지 못했기 때문입니다.
 
똑같은 입문서 일지라도, 자신에겐 어렵거나 너무 쉽거나 할 수 있습니다. 어떤 사람은, 책의 글자 크기나, 폰트, 또는 종이 재질, 두께가 마음에 안들 수 도 있습니다. 반드시 입문서는 직접 서점에서 보고, 꾸준히 볼 수 있을 지를 확인사살 후에 구입해도 늦지 않습니다.
 
 
3. 인터넷 검색을 최대한 활용해라.
 
인터넷은 분야를 가리지 않고 많은 정보로 가득차 있습니다. 이 인터넷을 활용하는 두 명의 개발자를 예를 들어 보겠습니다.
 
첫 번째 개발자 - 개발자로서 인터넷을 잘 활용하지 못하는 사람은, 검색을 통해 원하는 답을 찾지 못합니다. 때문에, 옆 사람에게 물어보거나, 커뮤니티 게시판으로 바로 달려가서 질문하는 유형이 되겠습니다.
 
두 번째 개발자 - 인터넷을 잘 활용하는 개발자는 다양한 검색엔진을 통해 자신이 궁금한 질문의 요점을 몇 가지 단어로 추스려내어 검색결과를 통해 문제를 해결합니다.
 
위 두 명의 개발자 중 누가 문제를 빨리 해결할까요? 바로 첫 번째 개발자일 가능성이 큽니다. 단, 옆 사람 또는 자신이 속한 집단의 사람이 그 문제의 해결방법을 알고 있거나, 자신보다 뛰어난 기술을 보유한 사람이어야 할 가능성이 큽니다. 더욱 위험한 것은, 소위 고만고만한 사람들이라면 오히려 잘못된 지식을 배우게 될 가능성이 더 클 수 밖에 없습니다.
 
그럼 인터넷 검색을 어떻게 해야 멋진 해결방법을 얻을 수 있을까요? 만약 “비쥬얼 스튜디오 2008이 제대로 설치가 되지 않습니다” 라는 문제를 얻었을 때, 다양한 단어를 조합하여 검색할 수 있습니다.
 
“visual studio 2008 install error”
“visual studio setup 2008 error”
“vs 2008 install error”
“vs 2008 setup error”
 
좀더 분명한 오류를 유추할 수 있다면, 연상되는(또는 명확한) 단어를 끼워맞춰서 검색하시면 됩니다. 이런 유형의 개발자는 문제 해결의 과정이 오히려 굉장히 느릴 수 도 있습니다. 하지만, 검색을 통해 직접 겪어보지 못한 다양한 문제유형을 간접경험을 할 수 있게 되어, 비슷한 다른 유형의 오류를 보았을 때, 오히려 첫 번째 개발자 보다 빠른 문제해결 능력을 갖출 수 있게 됩니다.
 
참고로 저는 자는 시간 빼고 3일 동안 검색해서 답을 얻은 기억이 있답니다… ㅠ_ㅠ
 
 
4. 관심분야의 RSS FEED 에 가입하라.
 
이쯤 되면, 자신이 어떤 분야에 관심이 있는지, 무엇을 해야 하는지 약간은 명확해 지셨는지요. 인터넷 검색을 통해 원하는 답을 얻는 과정이 반복 되면서 내용이 상당히 유용한 블로그를 자주 접할 수 있을 것입니다. 그러한 블로그는 반드시 즐겨찾기 또는 RSS FEED 를 구독하시기 바랍니다.
 

[그림1] HanRSS 를 카테고리별로 분류하여 사용중인 필자
 
즐겨찾기는 해당 사이트를 방문하기 전에 사이트의 컨텐츠를 확인 할 수 없기 때문에, RSS FEED 를 구독하는 것을 권장합니다. 이렇게 만들어진, RSS FEED 목록은 해당 사이트에 새로운 컨텐츠가 게시되면 자신에게 사이트의 컨텐츠를 통보해 주기 때문에 최신의 내용을 앉은 자리에서 받아 볼 수 있습니다.
 
참고로 저는, 연모를 쓰다가 불편한 감이 있어 HanRss 로 바꾸었답니다.
 
5. 커뮤니티 활동을 하라.
 
이것은 옵션입니다. 이것은 해도 그만, 안해도 그만입니다. 커뮤니티 활동에 적극 참여해도 그만, 눈팅만 해도 그만입니다. 절대 커뮤니티에 목매이지 않아도 됩니다. 오히려 커뮤니티 활동에 너무 적극적이다 보면, 회사 업무에 지장을 초래할 수도 있게 됩니다. 하지만, 커뮤니티 활동을 통해 어떤 이로운 옵션이 있는지 보겠습니다.
 
첫 번째, 커뮤니티 활동의 질문답변을 통해 개발자들이 어떤 문제를 겪는지 알 수 있습니다. 특히나, 취업을 앞둔 초보 개발자들이라면 눈여겨 볼 만 합니다. 저 또한 그러했듯이, 실무 개발자들이 부딪히는 문제를 간접 경험할 수 있고, 그것을 해결해 주는 답변 글을 통해 미리 오류 유형을 연습함으로써 미래의(취업후에) 삽질의 시간을 줄여 줄 수 있습니다.
 
두 번째, 온라인, 오프라인을 통해 인맥을 쌓을 수 있습니다. 온라인 게임을 보면, 오프라인이 현실세계라면, 온라인은 가상의 세계라고 합니다. 온라인 게임상 같은 마음으로 뭉친 자신의 집단이 오프라인 모임으로 종종 이어지는 경우가 많습니다. 개발자의 세계도 마찬가지입니다. 여러 사람을 만날 수 있는 기회가 많아질 수 있습니다. 인맥이 왜 중요한지는 더 말 안해도 아실 듯 해서 생략합니다.
 
세 번째, 자신을 PR 할 수 있습니다. 적어도 이 글을 적고 있는 저는, 이왕 이 바닥(?)에 뛰어든 이상 유명해 지고 싶습니다. 평범한 인생은 적어도 저에겐 의미가 없기 때문입니다. 자신이 평범한 개발자로 남길 원하지 않는다면, 반드시 커뮤니티나 블로그를 개설하여 활동하세요. 아마 지금 말한 자기 PR 이 위에 열거한 1~5 번 중에 가장 어렵고 힘들거라 생각합니다. 왜냐하면, 꾸준해야 하기 때문입니다.
 
 
그렇다면 나는 어떻게?
 
위의 5가지 방법은 저의 주관적인 방법입니다. 위의 방법이 도움이 될 사람도 있겠지만, 전혀 그렇지 못한 사람도 있을 겁니다. 자신의 스타일은 자신이 만들어 가는 것이 가장 좋은 공부 방법입니다. 억지로 하는 스터디는 차라리 안하는 것보다 못합니다.
 
무었을 해야할 때, 마음의 준비와 자세가 되어있고, 그것이 잘 되지 않을 때는, 왜 잘 안되는지.. 주변의 어떤 방해요소가 있는 것은 아닌지 살펴보시기 바랍니다. 참고로 어떤 유명하신 분은, 집에 가면 뻘짓을 하게 되어, 회사에 남아서 하고 싶은 것을 하고 막차를 타고 들어간다고 합니다.
 
읽어주시느라 고생 많으셨고요. 새해에 모두 어떤 계획이 있는지는 모르겠지만, 하시는 일 모두 잘 되길 바라면서 이만 줄입니다.

출처 : http://blog.powerumc.kr/article/2008/01/27/programming-study-ways.aspx