패왕넷

location tag guestbook

  • RSS
  • admin
  • post

C#을 어떻게 공부해야 하나요?

분류없음 2007/01/22 00:59
 
 
 
 

Written by 안재우(Jaewoo Ahn), 닷넷엑스퍼트(.netXpert)

가끔 DevDays와 같은 행사에서 Meet the Expert와 같은 행사를 진행하다 보면, 꼭 한번씩은 받는 질문이 아래와 같은 것들입니다.

".NET을 어떻게 공부해야 하나요?"

"C#을 마스터하려면 어떻게 해야 되죠?"

"ASP.NET을 잘하고 싶은데요. 무슨 책 보는게 좋아요?"

정리해보자면, 어떻게 공부를 해야 하는지와 어떤 책이 좋냐고 물어보는게 되겠네요.

질문을 하는 사람들은 개발자가 되고자 희망하는 사람들(주로 학생)도 있을테고, 기존 또는 다른 플랫폼에서 개발을 하다가 옮겨오려는 사람들인 경우가 많습니다. 물론 아주 가끔은 이미 .NET으로 개발을 하고 있음에도 불구하고 이런 질문을 물어보는 사람들도 있지요. ^^

자, 그럼 위의 질문들에 대한 해답은.....?

설마 이 글을 읽으시면서 바로 답이 나오기를 기대하시는건 아니시겠죠? ㅎㅎㅎ
사실, 이 질문에 대한 답을 바로, 섣불리 할 수 없는 이유에는 두가지가 존재합니다.

우선 첫째는 위 질문 자체가 잘못 되었기 때문입니다. 답을 해드린다고 하더라도 '에이~ 그게 어떻게 되요?'라고 부정하는 경우가 대부분이기 때문입니다. 그렇다면 제가 답을 엉터리로 드리는 걸까요, 아님 질문 내용과 질문자가 기대하는 것이 다르기 때문일까요?

구체적으로 만들어 보기 위해서 이번 글에서는 "C#을 마스터하려면 어떻게 해야 되죠?"라는 질문을 봅시다. 이 질문에 대한 제 답변은 항상 동일합니다.

"먼저 C# 언어 사양(C# Language Specification)을 보십시오."

C# 언어 사양은 http://msdn.microsoft.com/vcsharp/programming/language/default.aspx에 가면 다운로드 받을 수 있습니다. 또는 온라인 버전(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/csharpspecstart.asp)을 보셔도 될 듯 합니다. 분량은 좀 많아 보이지만 최소한 이전에 OOP 프로그래밍 언어(C++, Java 등)을 한번이라도 보신 적이 있다면 실제로 보는데 크게 오래 걸리지는 않을 겁니다. 영어가 두려우시다구요? 그러면 친절하게 번역된 한글판(http://msdn.microsoft.com/library/KOR/csspec/html/CSharpSpecStart.asp)을 보셔도 됩니다.

제 경우는 이걸 읽어보는데 한 2일 정도 걸렸던 것 같습니다. 그리고 한 2일 정도 실제 코드로 만들면서 문법을 익혔던 것 같구요. 다른 분들도 넉넉하게 잡아서 1주일이면 다 하실 수 있을 겁니다.

어떻습니까? 지금까지 1주일 안에 C#을 마스터하는 방법을 알려드렸습니다.

아마 여러분들의 마음 속엔 '너 지금 장난하냐?'라는 생각이 드실 겁니다.

DB 연결은 어떻게 하고, 쿼리는 어떻게 실행하고, 결과를 화면엔 어떻게 보여줘야 하느냐는 생각이 드시겠죠? 그래서 여러분의 질문이 처음부터 틀렸다는 겁니다.
여러분은 C#을 마스터하고자 하는 것이 아니라 C#을 사용하는 방법을 마스터하고자 하는 겁니다.

그거 구분하는게 그렇게 중요하냐? 라고 또 물어보실 분도 계실 겁니다.
네, 그렇습니다. 중요합니다. 프로그래밍 언어 자체와 언어를 활용하는 방법은 분명히 서로 구분되어야 하는 장르이고, 학습하는 방법이나 형태도 달라질 수 밖에 없기 때문입니다.

어느 C# 책을 보던지.. 아마 제일 처음 시작하는건 Hello, World 예제부터 시작할 겁니다.
아마 여러분은 그 Hello, World 예제를 열심히 타이핑해서 콘솔에 결과가 출력되는 걸 보면서 뿌듯해할겁니다. '나 드디어 C#으로 프로그램 짜 봤다!'라고...
입력하는 키워드가 대체 무슨 뜻이고, 왜 이렇게 써야 하며, 문법이 어떻게 되는지에 대해서 전혀 알지 못하면서 말이죠.

Hello, World 예제에서 여러분이 얻어야 할 지식은 콘솔 화면에 글자를 찍는 방법을 터득하는 것이 아닙니다. 가장 간단하게 실행되는 프로그램을 보여줌으로써 전반적인 C# 코드가 이렇게 생겼고, 각각의 키워드가 무엇을 의미하고 문법이 어떻게 되는지를 보라고 알려주는 것이 가장 중요한 목적입니다.

좀 더 예를 들기 위해.. 귀여운 후배가 다음과 같은 질문을 해왔다고 가정합시다.
"선배님~ C#에서 메서드 어떻게 만들어요오~~~?"

여러분이라면 어떻게 답을 해주시겠습니까?

밑으로 내리기 전에 잠깐 스스로 한번 생각을 해보시기 바랍니다.

......

물론 사람의 심리상(?) 별로 귀엽지 않은 후배인 경우는 외면해버릴수도 있지만..
상당수 분들은 아마 이렇게 답을 할 겁니다.

public void Method()
{
}

생각하신 것이 맞습니까?
이대로 친절하게 후배에게 메서드 작성법을 알려주었다고 하겠습니다.
이제 이 후배에게 다음과 같은 걸 요구하면 수행이 가능할까요?

이 메서드를 오버로딩해서 string 형 가변길이 매개변수(매개변수 배열) 하나를 입력으로 받고 int형을 반환하는 메서드를 작성해라.

이것이 예제 위주, 활용법 위주로만 공부를 하는 경우 발생하는 문제입니다. 개발 커뮤니티 게시판의 질문 중 상당수는 이러한 문제로부터 기인하는 경우가 대부분입니다.
귀여운 후배한테는 가혹(?)하다고 생각될 수도 있지만, 질문에 대한 답은 다음과 같이 해주는 것이 후배의 미래를 위해 더욱 바람직합니다.

http://msdn.microsoft.com/library/KOR/csspec/html/vclrfcsharpspec_10_5.asp

진정하게 후배의 미래를 생각하는 사람은 다음 두개의 URL을 덧붙일 것입니다.
http://msdn.microsoft.com/library/KOR/cpgenref/html/cpconMethodNamingGuidelines.asp
http://msdn.microsoft.com/library/KOR/cpgenref/html/cpconParameterNamingGuidelines.asp

예를 들다보니, 약간 얘기가 빗나갔는데...
정리하면 공부해야 할 대상을 명확하게 구분하라는 것입니다.
C#을 배우겠다면 C# 언어 자체와 C# 언어 활용법으로 나누라는 말이죠.
그리고, 이중 언어 자체를 배우는데 있어서 가장 좋은 교재는 바로 C# 언어 사양이라는 겁니다.
언어 사양으로는 도저히 진도가 안나간다는 사람은 다음의 자습서(http://msdn.microsoft.com/library/KOR/csref/html/vcoriCSharpTutorials.asp)를 활용해보는 것도 좋습니다.

주의해야 할 사항은 사양을 공부하라고 해서 밑줄 쳐 가면서 키워드 하나하나까지 다 외우라는 의미가 아닙니다. 읽단 읽어보고 나머지는 필요할 때 Reference를 참조하면 되니까요.

그 다음 활용법..
UI 다루기, DB에 접근하기, 컴포넌트 또는 컨트롤 만들기 등등...
활용법은 말 그대로 많이 써보는게 가장 좋은 겁니다.
이건 어떤 기술을 쓰던지, 어떤 프로그래밍 언어를 사용하던지 마찬가지입니다.
예를 들어 DB 액세스라고 할 때, 어떤 언어를 쓰더라도 DB에 연결하기, DB에 명령 수행하기, 결과값 받아오기, 트랜잭션 처리라는 항목들을 배워야 한다는 것은 변하지 않는다는 것입니다.
사실상 .NET에서 이러한 DB 액세스는 C#의 영역이 아닌 ADO.NET의 영역입니다. 즉 여러분이 공부해야 할 대상은 이제 C#이 아니라 ADO.NET이라는 것이죠.

활용법 역시도 책을 보면서 익히는 방법도 있겠지만...
제가 제일 추천하는 방법은 .NET Framework SDK에 포함되어 있는 QuickStart 예제를 전부 따라해보거나 MSDN 내의 연습을 따라해보는 것입니다. MSDN 내만 하더라도 유용한 연습 자료들이 엄청나게 많습니다. 다음은 Visual Studio 2003 기준으로 연습 예제나 활용법을 배우기 좋은 내용들에 대한 URL입니다. 아마 어떠한 책들도 MSDN에 있는 것만큼 광범위하고 풍부한 내용을 다루는 것이 없을 겁니다.

http://msdn.microsoft.com/library/KOR/cpqstart/html/_NET_Framework_QuickStart_Samples.asp
http://go.microsoft.com/fwlink/?linkid=516
http://msdn.microsoft.com/library/KOR/vsintro7/html/vbconVisualStudioSharedWalkthroughs.asp
http://msdn.microsoft.com/library/KOR/vbcon/html/vboriVisualBasicInActionEndtoEndSolutions.asp
http://msdn.microsoft.com/library/KOR/cpguide/html/cpconBuildingNETApplications.asp

QuickStart 예제의 경우, 아마 마음먹고 하면 1주일이면 충분히 끝날 겁니다.

결과적으로 C# 언어 사양 1주일 + Quick Start 1주일 = 2주일이면 두꺼운 책 붙들고 한달 넘게 씨름하는 것보다 훨씬 나을 것이라고 감히 자신합니다. 모든 내용들은 다 배우고 외워야 하는게 아니라 나중에 어디를 참조하면 되는가만 기억해 두면 됩니다. 대신 언어 사양을 통해 기반을 다지기 전에는 절대 활용법에 손을 대지 않는 것이 좋습니다.

이쯤에서 질문에 대한 답을 선뜻 할 수 없는 두번째 이유를 적어본다면...
이렇게 알려 드려도 이게 여러분에게 적합한 방법이라는 보장도 없고, 이를 실천하는 것도 쉽지 않은 일이기 때문입니다. 하지만 적어도 이 방법들은 저를 포함한 대부분의 나름(?) 전문가라고 불리는 개발자들이 새로운 기술을 익힐 때 사용하는 학습 패턴이라는 점은 확실합니다.

이 패턴은 앞으로 나올 어느 기술을 공부할 때도 마찬가지로 적용됩니다. 예를 들어 WinFX에서 WPF를 공부할 때도 XAML의 스펙부터 볼 것이고, WCF를 볼 때도 역시 스펙부터 볼 겁니다. 스펙을 보고 되는 것과 안되는 것, 이전과 달라진 것, 새로운 것이 무엇인지를 확인한 다음 실제로 활용하는 방법만 몸에 체득하면 되니 새로운 기술이 나온다고 하더라도 별로 두렵지 않습니다.

바탕을 다진 후, 활용법을 배우면서 맨땅에 헤딩을 하다보면 개발을 하면서 생기는 문제에 대처하는 것도 그다지 어렵지 않으며, 꽁수라고 불리는 팁과 트릭들은 자연적으로 얻어지게 됩니다. 저희 회사의 김현승 책임의 경우 "정도를 걸어야지 꽁수에 집착하지 말라"라는 말을 즐겨하곤 합니다. 그런데 모순적이게도 저희 회사에서 꽁수의 최대 대가는 바로 김현승 책임입니다. 이를 보면서 얻을 수 있는 것은 '꽁수도 정도를 걸어본 사람에게서야 나온다'라는 겁니다.

그냥 이것저것 편한대로 써봤는데, 여러분들에게 도움이 되었는지 모르겠습니다. 오히려 혼란스럽다고 원망하는 분들도 계실지도 모르겠지만, 다시 한번 말하지만 이것이 프로그래밍 언어를 공부하는 정석이라는 것은 변하지 않는 사실입니다.

다음 번엔 좀 더 구체적으로 들어가서..
ASP.NET을 최단시간 내에 가장 완벽하게 정복(?)하는 방법을 한번 써보도록 하겠습니다. 반응이 별로 안 좋고 재미없다고 하시면 안 쓸 수도 있습니다. 여긴 제 블로그인데다 카테고리도 FreeTalk니깐.. 제 맘대로인거 아시죠? ^^

p.s. (2006.4.20) Advice to Beginner라는 카테고리를 신설해서 이동했습니다. ^^


출처 : lancers, .NETXPERT "C#을 어떻게 공부해야 하나요?"

날개달기
2007/01/22 00:59 2007/01/22 00:59
 
받은 트랙백이 없고, 댓글이 없습니다.

트랙백 주소 :: http://blog.paewang.net/trackback/34

 
◀ 다음 글 목록 1 ... 196 197 198 199 200 201 202 203 204 ... 231 이전 글 목록 ▶

블로그 이미지
안녕하세요. 이광수입니다. 저는 한때 세계적인 컨설팅 회사인 맥킨지의 컨설턴트가 되는 목표를 가졌었지만, 지금은 리더십 · 자기계발 전문가를 꿈꾸고 있습니다. 2006년부터 최근까지 마이크로소프트 MVP로 활동했었습니다. by 날개달기

공지사항

패왕넷 - 최근 공지

  • 쿠키미디어에서 필진을 모집...
  • 문의사항
  • 운영자 소개

카테고리

  • ATOM 전체 (231)
    • ATOM 삶의 지혜 (70)
      • ATOM 고수독서법 (4)
      • ATOM 독서토론 (2)
      • ATOM 추천도서 (1)
    • ATOM 소프트웨어 개발 (30)
    • ATOM 소식 (6)

새로 등록된 글

  • 나는 고민에 빠져들게 하는...
  • 먼지가 되느니 차라리 재가...
  • 내가 몰입하는 이유
  • 소비자의 갈망을 충족시켜라
  • 한국리더십센터 up&up에 제... (2)

태그목록

  • atlas
  • 엠베스트
  • 추천도서
  • 원고
  • 생각
  • WPF
  • 독서노트
  • Debugger
  • RSS
  • 대가
  • 독서경영
  • 자바스크립트
  • 메타베이스
  • 디버거
  • 베스트셀러
  • 비스타
  • 강좌
  • 성취
  • 서적
  • Anthem.NET
  • Ajax
  • MSE7
  • ID
  • vista
  • utf8
  • utf8_unicode_ci
  • up&up
  • 자료
  • 닷넷프레임워크3.0
  • Tracer

글 보관함

  • 2010/03 (1)
  • 2010/01 (3)
  • 2009/12 (1)
  • 2009/11 (8)
  • 2009/10 (4)

달력

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

새로 달린 댓글

  • 원래 아티클에 첨부된 파일만.... 01/30 날개달기
  • 안녕하세요. 잘 보았는데요...... 01/14 stephen
  • 지속적인 발전을 보이고 있네.... 2009 날개달기
  • 관리자만 볼 수 있는 댓글입.... 2009 비밀방문자
  • 스트레스 관리에 운동만한게.... 2009 날개달기
  • 좋은글이네여 역시 운동이 제.... 2009 montreal florist
  • 네, 참여 가능합니다. 조만간.... 2009 날개달기
  • 독서토론에 참가하고 싶어서.... 2009 성수정
  • 효율적으로 토론할 수 있는.... 2009 날개달기
  • 안녕하세요. 이 글은 프로그.... 2009 날개달기

새로 달린 트랙백

  • 소프트웨어 컨플릭트 2.0 2007 The note of Legendre
  • 자바스크립트 째려보기 2007 조선일보 사절
  • IIS 메타베이스에 액세스하지... 2007 tpoz님의 블로그

링크

  • 56 69 72 75 73 20 4D 79 74...
  • Ajax + 요구공학
  • AmiText
  • Architecture and Design
  • Babel Fish 번역
  • BPM
  • Creating Passionate Users
  • Enterprise Library
  • FreeBooksPedia
  • IT용어 사전
  • J & J
  • jwmx
  • Korea Embedded Developer Bl...
  • Loner's .NET Blog
  • Martin Fowler
  • MSDN Korea
  • MSDN2 라이브러리
  • my msdn
  • Nagging Machine: 꿈은 꾸되...
  • NetFx3
  • Prototype.js
  • Refactoring
  • Script#
  • searchmash
  • stophobia
  • The Art of Project Management
  • Toby’s Epril
  • Visual Studio 용어 사전
  • W3C CSS 검사 서비스
  • 강주헌의 <펍헙 번역학교>
  • 고수닷넷
  • 날개달기, 경영을 말하다
  • 달봉이넷
  • 독서가 만들어주는 하루
  • 두고보자
  • 마이크로소프트 언어 포털
  • 마케팅커뮤니케이터의 공부방
  • 북세미나닷컴 공식 블로그
  • 서광열의 소프트웨어 이야기
  • 소설같은 시리즈
  • 스마트플레이스
  • 애자일 이야기
  • 작은불꽃
  • 조엘 온 소프트웨어
  • 좋은글 러브젝트닷컴
  • 주간번역가
  • 철수네 소프트웨어 세상 3
  • 쿠키미디어
  • 태터툴즈 메뉴얼
  • 패왕넷 - 이즈블로그 분점
  • 패왕넷 - 티스토리 분점
  • 퍼키의 열고 보는 세상
  • 프로그래머의 마음공부
  • 피플웨어
  • 한국 eXtreme Programming 사...
  • 한국마이크로소프트 에반젤리...

카운터

  • 전체 : 80307
  • 오늘 : 33
  • 어제 : 73

이올린

skin by 써머즈