[독후감] 실용주의 프로그래머 감상문 2023. 10. 19. 22:32

상당히 오래전부터 읽을 기회가 아주 많이 있었지만, 조금 읽다가 말기를 반복하다가 도서소개를 해보려고 끝까지 쭈욱 읽었다. 꼰대 아저씨 프로그래머의 잔소리 같은 느낌도 있지만 내용은 정말 실용적이다. 책의 내용이 실용적인만큼 책도 적당히 실용적으로 읽고 수용하는 것도 좋을 것 같다.ㅋ

매년 새로운 언어를 최소 하나는 배워라

1장에서 나온 이 한 문장이 당장 책을 덮게 만들 수도 있다. 분기마다 기술서적을 읽고, 수업을 듣고, 지역 사용자 모임에 참여하고, 다른 환경에서 실험을 해보라는 도전적인 잔소리는 잔업에 지친 국내 프로그래머에게 씨알도 안 먹힐만한 소리다. 젊은 나에게는 정말 그랬었다.

하지만, 십여년 동안 근무 환경이 꾸준히 개선되면서 이제 한두개 정도는 시도해 볼 수 있게 되었고, 해보니까 참 좋다는 것을 알게 되었다. 아직도 저녁이 없는 삶에서 허우적대는 프로그래머들에게는 여전히 힘든 일이겠지만, 기회가 된다면 꼭 도전해 보라고 말하고 싶다. 다양한 관점에서 내가 업으로 하는 일을 바라 볼 수 있으며, 때로는 좀 더 깊게 그리고 때로는 재미있게 일상의 시간을 돌아볼 수 있는 기회가 된다.

관련 없는 것들 간에 서로 영향이 없도록 하라

사내 어소시에이트 아키텍트 교육 이후 나는 의존성에 대해서 매우 집착하게 되었다. 함수나 클래스, 모듈, 패키지에 대한 의존성을 넘어서 심지어 시스템을 구성하거나 관련 서비스를 구독할 때도 의존성에 대해서 생각해보게 되었다. 그리고 더 나아가서 프로그래밍이 아닌 다른 부분, 개인적인 재테크나 생활용품을 구입할 때에도 의존성을 고려하는 습관이 생겼다.

누군가에, 어딘가에 또는 어떤 상황에 의존하게 된다는 것은 잠재적인 문제 요소가 될 수 있고, 반대로 의존성이 없을 때는 보다 자유롭게, 유연하게 주어진 상황에 대처할 수 있다. 이 단순하면서도 분명한 논리는 다양한곳에 폭넓게 적용할 수 있다. 물론, 프로그래밍 할 때는 말 할 것도 없다.

완벽한 소프트웨어는 만들 수 없다

이 책은 프로그래머의 자질과 능력, 자긍심에 대해서 많이 강조하고 있다. 심지어 마지막 장이 자긍심을 갖고 자신이 작성한 코드에 서명을 하라는 내용이다. 하지만 동시에 완벽한 소프트웨어는 만들 수 없다는 것을 받아드리라고 말하고 있다. 정말 지독하게도 실용적인 접근이 아닌가 싶다. 대단하다.

새로운 언어를 배우고, 꾸준히 학습을 하면서 다져진 실력을 바탕으로 의존성이 낮은 구조, 반복을 피해서 소프트웨어를 잘 만들라고 강조 하면서도, 동시에 아무리 잘 만들어진 그 소프트웨어도 문제를 가지고 있음을 간과하지 말라는 메세지를 함께 전달하고 있는 것이다. 완벽하게 만들기를 목표로 하기보다 조금이라도 더 완벽해질 수 있도록 부족한 부분을 보완할 수 있는 실용적인 방법들 대해서 다양한 이야기를 하고 있다.

단위 테스트, 통합 테스트, 사용성 테스트 등 다양한 테스트를 갖추는 방법, 단정문이나 컴파일러의 기능을 적극 활용하는 방법, 주석과 문서를 작성하고 효율적으로 관리하는 방법 등 개발 프로세스 전반에 걸쳐서 다양한 방법과 아이디어를 제시하고 있다. 물론, 일부는 요즘 트렌드나 환경에 잘 안맞을 수도 있지만, 저자가 개발 프로세스를 이해하고 좋은 프로그램을 만드는 방법을 고민하는 그 자세만큼은 정말 실용주의 그 자체라고 인정하지 않을 수 없다.

후배랑 읽으면 좋을만한 책

요즘에 선후배 문화가 많이 사라졌고, 특히나 소프트웨어 개발자들은 수평적이며 유연한 관계를 형성하는 경우가 많지만 경험의 양적 측면에서 봤을 때 선후배가 함께 이야기 해볼 만한 좋은 주제를 다루고 있는 책이라고 생각한다. 특히 개발 프로세스 전반에 걸쳐서 한 번쯤을 고민해보고 이야기를 나누면 좋을 만한 주제를 다루고 있다는 점에서 특히나 그렇다. 이 책의 내용들은 소소한 개발팁부터 설계하는 방법, 구현하고 테스트하는 방법, 프로젝트를 운영하는 방법까지 개발 프로세스의 모든 부분에서 실용적인 해법을 찾기위해서 부단히 노력한 흔적의 결과물이라는 것을 알 수 있다. 주니어 개발자일 때는 공감하기 힘든 부분도 있고, 미쳐 생각해볼 기회가 없었던 주제들도 있다. 반대로 선배로서 너무 당연하게 생각하고 있는 다소 고리타분한 내용의 주제들도 있는데, 일률적인 지침으로 간주하기 보다는 현재 상황에 맞는 진정 실용적인 방법에 대해서 함께 이야기 해본다면 업무 효율도 올라가고 서로에 대해서 좀 더 깊게 이해할 수 있지 않을까 생각된다.

좋은 말 대잔치 자기 개발서 보다는 실용적인 프로그래밍을 위해서 한 번 생각해 볼만한 이야기 모음집 정도로 생각하면 좋을 것 같다.

댓글