코딩 호러의 이펙티브 프로그래밍

Posted by 엘키의 주절 주절 on February 3, 2018

스택 오브 플로우의 창시자로 알려져 있는건 조엘 온 소프트웨어로 더 유명한 조엘 스포스키였다.

내가 좀 잘못 알고 있었던 부분으로, 공동 창업자이자 테크니컬한 부분을 모두 담당한건 제프 앳 우드였다.

스택 오버플로우가 어디인가? 가장 유명한 개발자 커뮤니티 아니던가?

그런 스택 오버플로우가 어떤 고민과 고찰을 했는가에 대한 책이라니 구매하지 않을 수 없었다.


이 책의 원제는 Effective Programming : More Than Writing Code 인데, 사실 과거에 꽤나 긴 시간동안 most important is coding라고 생각해왔었다.

프로그래머들에게 충분한 자원과 지원이 이루어지면 프로젝트는 잘 굴러간다고 믿었지만, 그 것이 사실이 아니란 것을 깨닳는 데에는 아주 오랜시간이 걸리진 않았다.


나는 다른 부분보다 4부 프로그래머를 제대로 채용하는 법가 매우 관심이 갔다. 채용 결정권자는 아닌 때도 많았지만 면접관으로 참관할 때가 적지 않았고, 그 과정에서 많은 고민이 있었다. 실제로 최근 국내 많은 회사가 코딩 테스트를 진행하고 있는데 (이에 대한 회의론도 적진 않지만), 필요하겠구나 싶을 만큼 의외로 코딩을 잘 못하는 케이스가 많았다.

심지어는 이 책에서와 마찬가지로 채용하고나니 코딩을 전혀 못하는 케이스도 실제로 봤고, 면접 때와 실제 장단점을 반대인 경우도 봤다.

제대로 된 채용보다 중요한 것은, 최악의 채용을 하지 않는 것인데, 이는 쉽지 않은 문제다.

절대로 경력이 쌓인다고 좋은 프로그래머가 저절로 되지 않는다.

그렇기에 이를 판단하는 기준과 수단은 높아지고 있고, 이 허들로 인해 진짜 괜찮은 프로그래머의 소소한 단점으로 인재를 놓치는 일도 비일비재하다.

현재의 채용 과정과 허들은 누구에게도 좋지 않지만, 그렇다고 허들을 없애는 것도 좋은 대안이라 볼 순 없다.


위에서 언급한 것과 마찬가지로, 나는 개발에 있어 코딩이 가장 중요한 덕목이라고 여겨왔다.

하지만 1인 개발이 아닌 이상에는 사람 문제가 더 크고, 그에 대한 챕터가 바로 5부 팀이 함께 일하도록 만들기이다.

마이크로 매니지먼트 부터 시작해서, 자율 방임 등 다양한 시도가 프로그래밍 팀에 있어왔음에도 여전히 결론은 상황에 맞는 선택을 하자와 같은 모호한 중립적 입장의 결론만 남아있을 뿐이다.

은총알은 없다, 맨먼스 미신 등에서 지적하는 문제의 근간은 소통 비용이 클 수록 개발 효율은 감소한다이다.

관리, 회의, 협업, 보고 모두 효율을 저해한다.

하지만 일정 부분은 필요하다. 그 사이의 적절한 중간 지점을 찾는 것은 어렵다.


시스템을 구현 하는 입장에서, 기능적인 스펙보다 더 중요한 것은 사용자다.

그에 대한 챕터가 7부 사용자를 염두에 두고 설계하기이다.

애플리케이션은 결국, 작은 디테일의 모음이란 말은 매번 주장하지만, 지켜지기 어렵고 중요시 여기지기 어렵고, 누군가는 다른 외부요인보다 중요하지 않다고 한다.

아무리 남들과 차별화 된 컨텐츠, 시장 점유율, 뛰어난 가성비를 자랑하고 있다고해도, 어플리케이션의 완성도에 문제가 있다면 그 빈틈은 언제든 꿰뚫릴 수 있는 큰 문제로 번지기 쉽다.

사용성에 대한 고민도, 사실 개발자들은 많이 하지 않는다. 코드의 일관성, 클래스 구조, 코드 가독성, 아키텍쳐 구조 등 내부적 문제에 대한 관심은 아주 크지만, 사용성에 대한 고민은 그만큼 크지 않은 것이 일반적이다.

이 문제는 결국 잘 만든 기반을 사용자가 외면함으로써 모든 노력이 수포로 돌아가기 쉬운 결정이다.

이 챕터에서의 내용들은 다 공감이 크게 갔는데, 그 중에서도 버전 1은 엉망이야, 하지만 어쨌든 출시하라고는 심금을 울리는 명언이다.

어떠한 소프트웨어도 버전 1에서 사용자를 감동 시킨 적은 흔치 않다.

그렇기 때문에, 출시하고 개선해나가는 과정에서 사용자를 만족시켜야 한다. 지속적으로 나아지고, 그 방향성이 사용자와 공감대를 이루고 있다면 그 소프트웨어는 결국 훌륭한 소프트웨어가 된다.


이외에도 수 많은 이야기들이 우리가 개발하면서 겪게 되는 수많은 문제에 대한 경험담이자 솔루션이다.

내 개인적으론 이런 프로그래밍 관련 에세이를 좋아하는데, 그 중에서도 작년 읽은 책 중에 유독 맘에 든 책이다.


서적 링크 : http://www.yes24.com/24/goods/8611802