(서평) 소프트웨어 산책 - 역시나 흥미로웠던 그의 산책

이전에 임백준씨의 책들을 감명깊게 읽었던지라 이번책도 큰 기대를 품고 읽게 되었습니다.

그의 철학에 녹아있는 이야기들은, 자신에 철학과 글에 대한 믿음이 절로 이해가 되는 책들이라 매우 와닿았었죠.

이번책의 내용은 소프트웨어 방법론에 대한 이야기였는데, UML, 리팩토링, XP, 디자인 패턴등 다양한 방법론에 대한 이야기를 듣고 관련 서적을 접해보았지만, 딱히 와닿지는 않았던게 사실입니다.

설계가 잘 되어진 프로그램이 더 좋게 나올것이라는 생각은 늘 가지고 있었지만, 과연 UML의 다이어 그램을 통해서 프로그램을 좋게 만들수 있을까? XP는? 리팩토링은?? 늘 의구심이 들었습니다. 예외로, 디자인 패턴은 그 활용 가치에 공감했지만 말이죠.

특히나 리팩토링의 경우는 더더욱이 그런 편이었는데, 임백준씨가 책안에 적어놓은 코드안에 철학은 진정한 객체지향으로 향해 가는 코드를 보였고, 의미없는 클래스와 객체의 남발에 대한 일침을 가했다고 봅니다.

책안에 UML에 대한 이야기는 없었지만, 결과적으로 소프트웨어 방법론에 대한 핵심적인 이야기를 들음으로해서, 그것들이 필요하고, 왜 필요한지에 대한 “동기부여”가 됨으로써 그 가치가 더 높았다고 생각합니다.

자칫하면 한동안 (언젠가는 필요로 했을지 모르지만) 장식품 역할을 할뻔한 소프트웨어 방법론 서적들에 필요성을 높여준 이번 책도 역시 임백준씨라는 생각이 드네요.

프로그래머 K씨의 하루의 경우는 시도는 좋았던것 같았지만, 본책의 페이지를 줄이며 등장할것이 아니고, 기본적인 내용이 일정 페이지수를 만족하며, 부가적인 요소로 삽입되었으면…하는 아쉬움이 있었지만 나쁘지 않았다고 생각합니다.

여전히 방법론에 회의적인 분들을 위해 이 책을 추천하며…

(서평) 누워서 읽는 알고리즘

프로그래밍에 꽃이라 할수 있는 알고리즘.

그러나 그런 알고리즘은 늘 고민과, 고뇌를 동반하고, 풀릴듯 풀리지 않는 문제, 해결은 됐으나 완벽하지 못한 방법들은 늘 나를 괴롭혔고, 알고리즘이란 귀찮고 번거롭지만 해야하는것이라는 인식이 무의식적으로 자리 잡힌것 같았다.

그러나, 이 책은 보고나선 내 생각은 달라졌다. 다른 이론서(혹은 활용서)와는 달리 알고리즘에 대한 생각, 자신이 가지고 있는 프로그래밍및 알고리즘에 대한 생각들을 늘어 놓으면서, 음악에 대한 비유등.. 이 책을 쓴 저자는 프로그래밍을 참으로 즐길줄 아는 사람이고, 자신의 꿈을 사랑하는 사람으로써, 멋지다라는 생각이 들기도했다.

사실 이 책은 매우 많은 내용을 담고 있지는 못하다. 페이지수도 많은 편은 아니다. 하지만 이 책이 담고 있는 깊이는 여느 책 못지 않다고 본다.

이 책은 자칫하면 매너리즘에 빠질수 있는 사람들(특히 프로그래머)에게 매우 좋은 책이다.

처음 그 마음가짐을 잊었던 나에게, 프로그래머로서의 즐거움이나 마음가짐을 갖게 해준 이 책은 나에게 최고의 책이 될것이다.

(서평) 행복한 프로그래밍 - 당신은 프로그래밍으로 인해 행복한가요?

웃기는 이야기일지 모르지만, 사실 나는 게임이 좋아서 프로그래밍을 시작했다.

게임을 만들고 싶은데, 그래픽(간단한 그림도 많이 못그리는 편이다)에는 너무 소질이 없었고, 기획이란 분야는 너무 막막한 상황이었기에, 선택한것이 프로그래밍이었다.

그러나 그 시작과는 달리, 갈수록 프로그래밍의 매력에 빠져들었고, 프로그램을 만든다는 그 자체를 즐기게 되었다.

나에게 주어진 문제를 해결했을때 오는 짜릿함? 내가 만든것이 컴퓨터안의 가상 세계(이 표현은 틀렸을지도 모른다. 왜냐면 컴퓨터안의 세계는 저자의 말대로 bit로 이루어진 현실에 존재하는 세계이기도 하니까)에서 나의 발상을 코드화해서 그것을 구동하였을때의 즐거움? 이런건 무엇과도 바꿀수없는것이었다.

그러나 그 즐거움을 잊을때가 많았다.

어떠한 프로젝트를 위해선 선행작업들이 많고, 관련 분야에 대한 지식이 부족한 경우에는 그와 병행하느라 더 바빠지기 마련이다.

시간이 갈수록 코드를 읽거나 작성하는것은 심리적으로 쫓기는 상황에서 이루어지는 경우가 많았고, 아무리 좋은 설계를 해도 좋은 코드가 나오는 경우는 적었다.

일을 즐기기는 커녕 일에 쫓기는…그런 상황들이 날 힘들게 하고 있었다.

누워서 읽는 알고리즘을 읽을때도 느낀것이지만, 자신에 일에 프라이드를 가지고 있고, 진정 애정을 가진, 그리고 그 기분을 나에게도 가지게 해준 임백준씨에게 경의를 표한다.

(서평) 해킹 파괴의 광학 - 프로그래밍 기본 소양 서적에 가까운 책

사실 이 책은 네트워크 관련 공부에 관심을 가지다가, 해킹 방법에 대해 조금 알아야 겠다는 생각으로 접한 책이었습니다. 

그렇지만 이 책은 그 보다 큰 교훈을 주었습니다.

바로 근본 기술에 대한 이야기인데, 프로그래머들이 자주 겪는 딜레마는 내가 배운 기술이 한순간에 쓸모없어 지는것이 아닐까 내가 신기술에 적응 못하게 되는게 아닐까 하는 부분이 많습니다.

저자는 이 부분에 대해서 근본 기술에 대한 이야기를 함으로써, 그 근본으로 돌아가면 신 기술이 나온다하여도 금방 적응할수 있고, 그 원리를 이해 하는것이 IT에서의 해결책이라고 주장했습니다.

그 주장에 전적으로 동의하며, 그가 가르쳐준 PE포맷, API후킹, 메모리 다루기 등 모두 즐겁게 보았죠.

애초에 이 책을 접한 시기가 학생이었던 때이다보니 더더욱 좋게 와닿았단 책입니다. 리버싱을 살짝 다루긴했지만 조금 라이트하게 다루고 있습니다.

하지만 흥미를 불러 일으킬만큼은 맛볼수 있으니, 이 책에서 다룬 여러 주제들로 인해 관심분야의 폭이 늘어나는 데에 큰 도움이 되었죠.

적은 페이지로 다양한 내용을 다루다보니, 디테일하게 접근하려면 다른 책들을 참고해야했지만 그거야 다른 책들도 마찬가지인경우가 많으니.. 게다가 애초에 포지션 자체가 다른거라고 생각하시면 될거 같습니다.

아주조금 아쉬었던건, CD에 담긴 소스 파일의 내용과, 책에 나와있는 소스 코드의 내용이 다르다는 것입니다. CD에 담긴 파일에 오류가 있기도하고…-_-;;

뭐 직접 고치면서 도움이 되긴했지만요~

리버싱/어셈/프로그래밍 기본 소양이 무엇인지에 대해 가볍게 접하고 싶으신 분들에게 추천합니다.

(서평) 조엘 온 소프트웨어 - 조엘은 알고 있었다

프로그램을 작성하다보면 예기치 못한 문제에 봉착할 때가 많습니다. 그런 문제를 덜 겪기 위해 다양한 개발 방법론을 접해보았고, 시도해 보았습니다.

그 중에서도 조엘의 이야기는 특별했습니다.

능률을 높이기 위한 복잡한 절차대신, 마인드와 작은 행동으로 그것들을 대신했습니다. 

방법론을 쉽사리 적용시키기 힘든 초보 프로그래머인 저에게도 조엘의 이야기는 쉽게 받아들이고, 쉽게 적용시킬수 있는 것들이었기에 더더욱 좋지 않았나 생각합니다.   무엇보다 조엘 테스트는 꼭 체크해보시기 바랍니다. 조엘 테스트 점수 높은 팀 치고 안좋은 팀이 없습니다.

또 일정 예측이란, 예측 자체에 부담을 가질 것이 아니라, 예측과 실제 소요시간과의 오차를 줄여가는 과정이라는 얘기도 아주 크게 도움이 됐습니다.

두고 두고 도움이 되는 내용은 여러 챕터로 이어지며 큰 비중으로 설명한, 손쉬운 기능 명세 작성법 입니다.

제가 지인이나, 프로그래밍 관련 책 추천을 요청받으면 꼭 권해드리는 서적이 몇권 있습니다.

그 중 하나가 실용주의 프로그래머 인데요, 조엘씨도 바로 그 책에서 얘기하는 실용주의 프로그래머들 중 한 분이라는 것을 자연스레 느낄 수 있었습니다.

그렇습니다. 이런 이야기를 듣고 싶었습니다.

조엘의 이야기가 모두 정답이진 않겠지만 조엘의 경험과 통찰력에서 나온 이야기 들은 한번쯤 시도해볼만한 가치가 있는 좋은 이야기들이었다고 생각이 드네요.

개인적으로 임백준씨의 저서들 이외에 IT 관련 서적중 가장 즐겁고, 빠르게 읽은 책이 아니었나 싶네요. (대체 뭐가 문제야는 IT 서적이라 보기 애매하므로 패스~)

PS. 한국어판에만 있는 유쾌한 보너스는 꼭 읽어보시길 권합니다. 재밌는 내용이 많답니다.


조엘 테스트

  1. 소스코드 관리 시스템을 사용하고 있습니까?
  2. 한방에 빌드를 만들어 낼 수 있습니까?
  3. 일일 빌드를 하고 있습니까?
  4. 버그 추적시스템을 운영하고 있습니까?
  5. 코드를 새로 작성하기 전에 버그를 수정합니까?
  6. 일정을 업데이트하고 있습니까?
  7. 명세서를 작성하고 있습니까?
  8. 조용한 작업환경에서 일하고 있습니까?
  9. 경제적인 범위 내에서 최고 성능의 도구를 사용하고 있습니까?
  10. 테스터를 별도로 두고 있습니까?
  11. 프로그래머 채용 인터뷰 때 코딩 테스트를 합니까?
  12. 무작위 사용편의성 테스트를 수행하고 있습니까?