과연 나는 장인인가?(아뇨, 전 신입입니다...)
이 책 '소프트웨어 장인'은
소프트웨어 개발의 프로페셔널리즘에 대한 것이다.
프로페셔널하다는 것. 개발자라는 직업. 생산자의 위치에 있다는 것에 대해 다시 한 번 생각하게 되보는 계기가 되었다.
감명깊게 읽었던 문구들을 나열만 해도 이 책이 의미하는 바가 무엇인지 단번에 파악하지만, 책을 읽으면서 자신이 공감하는 것이 더 중요하다고 생각된다.
코딩이 직업인 사람이 동작하는 코드를 만드는 건 당연한 일이에요.
동작하던 코드로 마냥 기뻐하던 나의 신입시절이 주마등처럼 스친다. (사실 지금도 신입이다.)
동작하는 코드를 만드는 것이 당연한건데, 이건 이래서 안되고 저건 저래서 안되고, 왜 매번 나는 에러가 날 때마다 핑계를 댔는지 모르겠다. 에러가 안나는 것이 당연하고 그 코드는 어떤 상황에서도 동작해야 하는 것이 당연한 일인데 말이다.
아직 완성되지 않은 자동차가 도로에서 운행되거나,
이미 팔린 자동차에 문짝을 하나 더 달아 달라고 하거나,
엔진을 앞에서 뒤로 옮겨달라고 공장으로 되돌려 보내는 일은 없다.
하지만 소프트웨어는 그런 일이 비일비재하다.
위의 예시는 기가 차는 노릇이지만 왜인지 그렇게 된다. 극히 공감되는 일이다. 이게 된다고? 된다.
고객의 요구사항은 늘 옳다. 이걸 쳐낼 수 있는 위치와 권한을 가지지 못하는 것이 안타까운 노릇이지만, 그런 요구사항을 계속 계속 받아서 해결해 내야하는 것이 개발자라는 직업의 숙명이 아닐까 싶다.
'어떻게 일을 했느냐'는 일을 해낸 것만큼이나 중요해요.
결과가 좋으면 좋다는 이야기를 많이들 한다. 실제로도 그게 편했다. 결과만 좋으면 됐지. 그러나 개발이라는 거대한 협업의 현장에서는 과정도 그 못지 않게 중요했다. 어떻게 일을 했느냐. 그것이 중요했다.
코드를 잘 작성하는 것은 소프트웨어 프로페셔널이 가져야 할 최소한의 요건이다.
나는 신입 개발자. 초급 개발자라는 허울 좋은 방패를 들고 있다. 제가 아직... 잘 몰라서...라는 말을 달고 사는 것 같다.
실제로 모르고 있지만, 그런 말을 하는것이 굉장히 부끄럽다. 스스로 프로페셔널리즘이 부족하다고 오늘도 자각한다.
절차와 도구보다는 개성과 화합을
방대한 문서 작업보다는 동작하는 소프트웨어를
계약 조건에 대한 협상보다는 고객과의 협력을
계획을 따르는 것을 넘어서서 변화에 대처하는 것을 더 가치있게 여긴다
-애자일 매니페스토
결과, 협업, 무에서 유를 창조해 나가며 문제를 해결해 나아가는 것. 굉장히 중요한 일이긴 하나, 나는 대단히 안쓰러운 애자일만 해서 그런지 사람이 갈려나가면 뭐가 되긴 되나보다 싶은 심정으로 애자일을 경험하면 고객이 만족했다. 일을 하나 시작했기에, 생기는 수많은 에러와 변수를 극복하는 것이 힘들었지만, 고객과의 협력에 대해서 그리고 애자일에 대해서 많은 생각을 가져본다.
프로젝트의 진척도를 가늠하는 가장 기본 요소는 동작하는 소프트웨어이다.
동작해야한다... 오픈때 기도만 할 수는 없는 노릇이다.
중요한 점은 어떤 문제가 있는지 재빨리 인식하고 대응하는 것이다.
더 나아지는 데 시한은 없다.
늦을 수록 좀 더 고통스러울 뿐이다.
고통스러웠다. 어쨌든 해야하는 일이었는데, 내일 야근하나 오늘 야근하나 이번주에 주말출근하나 다음주에 주말출근하나 결국은 매한가지였다. 해결해야하는 것은 결국 나였으므로.
끝으로. 신입개발자 혼자서 남겨진 말도안되는 프로젝트를 경험하고 나서 나를 지켜보셨던 한 고급개발자께서 추천해 주신 책이었다. 읽으면 읽을 수록 개발자로서 스스로 부끄러워지고 또 그만큼 공감가는 내용이 많았던 책이 없는 것같다. (사실 개발관련된 책을 많이 읽지는 않았지만.) 소프트웨어의 장인. 프로페셔널리즘. 내가 앞으로 지향해야 하는 바가 무엇인지 깨닫게 해준 좋은 책이었다. 더 나은 개발자가 되기 위한 방법을 책을 통해 스스로 정립한 좋은 독서 경험이었다.