2015년 3월 13일 금요일

동기에게 보내는 편지 : 프로그래밍 실력을 향상 시키는 방법

2010년에 썼던 글인데, 과거글 AS의 관점에서 책을 추가하거나 제외하고, 책의 링크를 알라딘으로 수정했습니다.


작년 말인가요. 회사 동기에게 메일 한 통을 받았습니다.

언제 시간이 완전 한가해져서 남으면..
나에게 초보가 고수가 되는 S/W 관련 서적들을
급 수별로 추천 좀 해주렴..
나도 이제 책 좀 읽고 살아야게따!!ㅋㅋㅋㅋ

대충 위와 같은 내용이었는데요. 시간이 완전 한가해지는 거 기다리다가는 메일도 못 쓸 것 같아서 며칠간에 걸쳐서 답장을 작성했습니다. 제가 그 동안 읽었던 책들을 되돌아 보았는데요. 전산과를 졸업하고 개발을 직업으로 하게 된 제 처지와 같은 분들에게 도움이 된다면 좋겠습니다.

이하 답장의 내용입니다.


초보에서 고수라..

내가 고수는 아니지만, 어떻게 하면 고수가 되는지는 대충 알고는 있지. 최고의 트레이너가 최고의 선수인건 아니잖아?

내가 최고의 트레이너는 아니지만 말이야. :-)

여하튼 이야기를 풀어보면,

목표 : 소프트웨어 개발에 필요한 지식 + 프로그래머로서의 기본 소양을 갖춘다

지금 하고 있는 일에 맞는 도구를 완벽하게 다를 수 있는지가 우선되겠지. 우리가 주로 쓰는 언어가 C, C++, java인데 각각을 익히는데 좋은 책은 맨 아래를 참고하면 되. 언어를 익히는 문제는 도구를 사용하는 방법을 배우고 연습을 하는 과정이니까 시간이 중요하거든, 지속적으로 진행해야 할 꺼야.

전반적인 개발 능력 향상을 원한다면 아래 순서로 책을 읽으면서 연습을 하면 될 꺼야. 좋은 책들 줄줄이 나열하려다 복잡하고 명확하지 않은 것 같아서, 순전히 내 개인적인 생각으로 커리큘럼을 만들어 보았어. 절대적인 건 아니니까 참고하도록 하고. 그래도 이대로만 하면 실력은 분명 많이 향상 될 꺼야.


1. Code Complete 2/E


2. Refactoring

우선 위 두 권의 책을 꼭 구입하도록 해. 코딩을 하면서 읽어야 할 서적 1순위거든, 자바를 한다면 Design Patterns을 포함시키겠지만, 그건 좀 더 시간이 흐른 뒤에 보면 좋은 책이니까 뒤로 넘겨두고. 우선은 위 두 권을 먼저 보도록 해. Code Complete는 워낙 두꺼운 책이라서(1000페이지가 넘던가) 다 보려면 시간이 좀 걸리니까, Refactoring도 같이 보면서 심심할 때는 돌려가면서 보도록 하는 게 좋을 꺼야. 그리고 Code Complete에 나온 내용 중에 업무에 적용 시킬 만 한 것이 있을 텐데 꼭 해보도록 하고.


3. 프로그래밍 수련법

Code Complete가 너무 커서 정말 읽기 싫다면 이 책도 좋은 대안이 될 수 있을 꺼야. 하지만, 둘 중의 한 권만 읽는 것보다 둘 다 읽는걸 추천해. 참고로 이 책을 쓴 사람은 C언어와 Unix를 만들고 아래 The C Programming을 쓴 사람과 동일 인물이야.

위의 책들은 실용서라서 바로 현업에 사용할 수 있는 책인데, 집에서 쉴 때나 출 퇴근 때 지하철이나 화장실에서 책을 읽을 때처럼 시간이 남을 때 읽기 좋으면서 내공을 기를 수 있는 책으로 아래 두 권이 있어.


4. 실용주의 프로그래머



5. 생각하는 프로그래밍

이 책들은 프로그래밍 과정에서 겪을 수 있는 다양한 상황들에서 얻은 개발자의 노하우들이 집대성 된 책이야. 생각하는 프로그래밍은 문제를 해결하는 관점에서 서술하였고, 실용주의 프로그래머는 생산성을 높이고 편하게 개발할 수 있는 방법에 대해 서술한 책이야. 둘 다 깊은 내용을 포함하고 있어서 경험이 뒷받침 되어야만 온전히 이해할 수 있지만, 이번에 보고 1년 뒤에 또 보면 또 다른 통찰을 얻을 수 있을 꺼야. 내 경우에도 매년 혹은 2년 정도에 한번은 보는 것 같은데 매번 무언가 얻고 있어. 이 두 권의 책도 필수 구입이라고 생각하면 될 꺼야.

위의 책은 모두 순서에 상관없이 읽으면 되는 책이야 1,2,3,4,5 아무거나 먼저 읽으면 되는데, 3번부터 보고 다른 거 시작하는 것이 좋을 것 같아.

소설에도 판타지 소설이나 무협지 같이 어렵지 않고 재미있는 책들이 있는 것처럼, 프로그래밍 책이라고 모두 어렵고 지겨운 건 아니야. 쉬우면서도 재미있는 책으로 아래 책들이 있어. 대부분 연구소 도서관에 있으니까 대출 신청하면 거기서도 받을 수 있는 방법이 있을 꺼야. 모두 괜찮은 책들이니까 시간 날 때 한 권씩 읽어봐. 비록 쉽고 재미있는 책이라고 해도 얻을 수 있는 것들은 위의 책들에 뒤지지 않을 꺼야. 



조엘 온 소프트웨어 : 유쾌한 오프라인 블로그



More Joel on Software 조엘 온 소프트웨어를 넘어서


위에 책이랑 함께 조엘 스폴스키라는 사람의 블로그 내용을 책으로 만든 건데, 재미도 있고, 감동도 있고, 교훈도 있어!


HARD CODE : 나잘난 박사의 IT 정글 서바이벌 가이드


예전 메일에 한번 설명한 것 같은데 “IT업계에서 일하는 모든 분들을 위한 실용적인 지침서” 이 글을 참고 하도록 해. 



Art of UNIX Programming

절판이긴 한데, 도서관에 있어. 유닉스의 철학을 말하는 책인데, 정말 재미있게 읽었는데 어떨지 모르겠네. ^^;



Coders at work

도서관에서 빌려서 요즘 읽고 있는 책인데, 위대한 개발자들과 인터뷰 한 내용인데, 정말 좋은 책이야. 전산 분야의 장점이 70년도 안된 역사 때문에 전설적인 인물들이 대부분 살아 있는 거거든. 그런데 바로 그런 사람들의 이야기를 들을 수 있는 거지. 과학으로 말하자면 뉴턴이나 아인슈타인의 인터뷰를 책으로 만든 거니까, 그 가치를 알겠지? 재미있고, 뛰어난 통찰과 교훈을 얻을 수 있어. 그런데 아직 번역이 안 되었는데, 6개월 안에 분명 나올 꺼야. 기다리지 못하겠으면 원서로 읽어도 좋아 전혀 어렵지 않고 영어도 쉽거든.
(2015/03/13 현재 아직 번역이 안되었습니다. ㅜㅜ)



피플웨어


개발관련 교양서 중에 필수적인 책이야. 아래 책과 함께 많이 거론되기도 하고, 상식을 풍부하게 해주고 다른 관점을 배울 수 있을 꺼야.


맨먼스 미신 THE MYTHICAL MAN-MONTH

소프트웨어 공학 분야에서는 전설적인 책이지. 소프트웨어 프로젝트에 인원을 더 투입한다고 생산성이 높아지지 않는 다는 말이 이 책에 있는 이야기야.

이외에 볼만한 책이 바닥나면 아래 링크의 리스트를 참고하도록 해.

"Top 100 Best Software Engineering Books, Ever를 읽고 책 정리"를 읽고 책 정리

C 언어 추천 서적


The C Programming Language

번역서도 있는데, 예전에 봤던 것 같은데 기억이.. 3만원이나 하는 책답지 않게(?) 얇고 ANSI C를 딱 전부 설명한 책이야. C 만든 사람들이 이 책을 지은 걸로 유명하기도 하고 내가 보기에는 아직 이거보다 좋은 C책은 없지 않나 싶은데, 영어도 쉬워서 그냥 읽히는 책이야. 
(2015/03/13 현재 번역서를 찾아서 링크 걸었습니다)

Java 추천 서적


Effective Java (2nd Edition)

자바를 조금 해봤다면, 이 책을 통해서 자바를 어떻게 사용해야 좀 더 좋은 방향으로 사용하는지 알 수 있을 꺼야. 내 생각에는 자바로 개발한다면 이 책은 필수. C++ 최고 추천서가 Effective C++인데 그 책에서 영감을 받아서 지은 책이 맞고. 참고로 이 책의 저자가 지금 구글에서 자바 총책임으로 있어. 



Head First Java

난 정말 괜찮은 자바 입문서를 본적이 없는데, 그나마 이 책이 가장 좋았던 것 같아. 자바를 정말 모르겠다거나, 수업 한번 들어보고 한동안 안 써서 잘 모르겠다면 한번 술술 읽어보면 도움이 될 꺼야.
C++


Effective C++ (3rd Edition)


More Effective C++


요기 위에 두 개의 책은 C++개발한다면 필수로 있어야 하는 책들이야. 바이블이라고 생각하면 되고 이펙티브 자바와 같이 정말 중요한 팁들로 구성되어 있어. 즉 C++을 좀 할 줄 아는 상태에서 봐야지 이해가 된다는 말이지. 여하튼 C++한다면 필수 



The C++ Programming Language (Special 3/E)  - 절판

이건, 나도 집에 있기는 한데, 그다지 추천하고 싶진 않은데 C++좀 제대로 써야겠다 싶으면 구입하면 좋은 책이야. 참고로 1000페이지 넘고 보통은 필요한 부분 뒤져서 살펴보는 용도로 사용하는데 입문서로는 그다지 좋지 않을 것 같아. Depth In C++ 시리즈가 좋긴 한데 종류도 많고 읽은 지가 오래 되어서 어떤 것부터 봐야 할지 모르겠네. 일단 위에 적은 C책을 읽고 시작 하는 게 좋을 꺼야.

댓글 9개:

  1. [...] This post was mentioned on Twitter by isdead and Byeongweon Moon, Young-jin An. Young-jin An said: 동기에게 보내는 편지 : 프로그래밍 실력을 향상 시키는 방법 http://tasy.jaram.org/blog/?p=122 [...]

    답글삭제
  2. 정리가 잘되잇네요 저는 작곡가인데 알고리즘컴포지션에 관심이있어 읽어볼까하는데 이런것이도움이될까요?

    답글삭제
  3. 김종현 //
    http://en.wikipedia.org/wiki/Algorithmic_composition
    여기에 나와있는 알고리즘 컴포지션을 이야기 하시는 것 같은데, 위에 나오는 책들이 큰 도움은 안될거라 생각합니다. 예전에 전자 음악을 잠깐 배웠던 기억으로는 작곡을 위해 다른 프로그래밍 언어를 쓰실텐데, 해당 언어를 설명한 책을 읽으시면서 언어를 마스터 하시는게 도움이 될 것이고, 위에 있는 책중에서는 생각하는 프로그래밍이 간접적으로 도움이 될 것 같습니다.

    답글삭제
  4. 감사합니다 전자음악도공부하셨었나보네요 답변감사드립니다^^ 새해복많이받으세요~

    답글삭제
  5. 정말 많네요 지금 자료구조 보는데만 힘든데 ^^;
    컴공 2학년으로 복학하는 학부생인데
    많은 도움이 되었네요 감사합니다.

    답글삭제
  6. 컴공 2학년 학부생인데
    많은 도움이 되었네요 고맙습니다 ^^

    답글삭제
  7. 헐 답변 안달린줄 알고 달았는데 2개가 달려버렸네요;;

    답글삭제

Man of Month를 마치며

벌써 2020년 1월 14일이다. 19년의 마지막 달에 Man of Month라는 팀의 제도를 시작한다고 했었는데, 12월이 지나고 그 다음 달도 거의 절반이 흐른 것이다. MoM을 시작하면서 하겠다고 계획했던 것들도 실제 한 것들과 비교해보니...