이 포스팅을 마지막으로 훌륭한 프로그래머 되는 법 읽기를 마친다. 끝은 언제나 새로운 시작으로 이어지므로 끝이 아니다. 머리와 가슴에 담아두고 개발을 시작하자.

사진은 이제니의 시집 '왜냐하면 우리는 우리를 모르고'의 목차이다.

37장. 선언문

납득할 만한 개발 선언문들을 지지하라. 하지만 맹목적으로 따르거나 독단적으로 다루지 말라.

애자일 선언, GNU 선언, 리팩토링 선언, 장인정신 선언 등 수많은 선언문이 있다. 이중에서 애자일과 장인정신 선언문을 살펴보자. (출처: http://guruble.com/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%9E%A5%EC%9D%B8%EC%A0%95%EC%8B%A0software-craftsmanship/)

애자일 선언문 (Agile Manifesto)

우리는 스스로 소프트웨어를 개발하고, 
다른 사람들이 개발하는 것을 도와주면서 더 나은 소프트웨어 개발 방법들을 찾고 있다. 
이 과정에서 우리는 다음과 같은 가치를 중요하게 생각한다.

절차와 도구보다는 개성과 화합을 
Individuals and interactions over processes and tools
방대한 문서 작업보다는 동작하는 소프트웨어를
Working software over comprehensive documentation
계약 조건에 대한 협상보다는 고객과의 협업을
Customer collaboration over contract negotiation
계획을 따르는 것을 넘어서서 변화에 대처하는 것을
Responding to change over following a plan
더 가치있게 여긴다.

좌측의 사항도 가치가 있음을 인정하지만 우리는 우측의 사항에 더 높은 가치를 둔다는 것이다.
소프트웨어 장인정신 선언문 (Software Craftsmanship Manifesto)

소프트웨어 장인을 열망하는 우리는, 스스로 기술을 연마하고, 
다른 사람들이 기술을 배울 수 있도록 도움으로써 프로페셔널 소프트웨어 개발의 수준을 높인다. 
이러한 일을 하는 과정에서 우리는 다음과 같은 가치들을 추구한다.

동작하는 소프트웨어뿐만 아니라, 정교하고 솜씨 있게 만들어진 작품을
Not only working software, but also well-crafted software
변화에 대응하는 것 뿐만 아니라, 계속해서 가치를 더하는 것을
Not only responding to change, but also steadily adding value
개별적으로 협력하는 것 뿐만 아니라, 프로페셔널 커뮤니티를 조성하는 것을
Not only individuals and interactions, but also a community of professionals
고객과 협업하는 것 뿐만 아니라, 생산적인 동반자 관계를
Not only customer collaboration, but also productive partnerships
이 왼쪽의 항목들을 추구하는 과정에서, 오른쪽 항목들이 꼭 필요함을 의미한다.

이 두 가지 선언문을 같이 살펴본 이유는, 소프트웨어 장신정신 선언문이 애자일에서 기술적 중요성을 깎아내리는 것에 대한 반발로 만들어졌다고 하기 때문이다. 개인적으로 둘다 맞다고 생각하지만, 소프트웨어 장인정신 선언문을 더 중요시한다. 그렇다고 해서 애자일이 틀렸다고 생각하지도 않는다. 각각 선언문에서 좋은 것들만 빼와서 마음에 새기는 것이 더 좋다고 생각한다.

38장. 코드찬가

모든 나쁜 시들은 순수한 감정에서 비롯된다.

오스카 와일드의 말이다. 개발자들간의 논쟁은 더 좋은 코드를 작성하고 싶다는 사람과 그보다 다른 것이 중요하다는 사이에서 주로 발생하는 것처럼 보인다. 이 논쟁에서 좋은 코드를 작성해야 한다는 생각과 일정(다른 것중에 하나의 예)을 지키는게 중요하다는 생각 둘 다 좋다고 할 수는 없다. 하지만, 개발자로서 좋은 코드를 작성해야 한다는 것은 수없이 강조해온 것 같다. 팀원을 비난하는 것보다는 좋게 만들어갈 방법을 찾아야 한다. 책에서는 페어 프로그래밍과 리뷰회의를 예시를 들고 있다. 만약 어떻게 해도 도무지 바뀌지 않는다면, 그들처럼 되지 않으려 노력해야 한다. 흑화되면 안된다.

39장. 태도가 핵심이다

선율의 끝은 선율의 목표가 아니기에, 선율이 끝에 도달하지 않았다 해도 그 선율이 음악의 목표에 도달하지 않은 것은 아니다.

니체의 말이다. 음미해보면 좋겠다.

그것은 바로 프로그래밍을 잘 하고자 하는 소망과 열정이다.

책에선 태도(attitude)의 다른 뜻에 대해서 설명해준다. '비행기의 frame of reference 에 대한 상대적인 위치' 라는 뜻인데, 비행기가 잘못된 attitude 로 비행을 하고 있을 때 약간만 힘을 가해도 목표지점에서 크게 벗어난다고 한다. 결국 사람의 태도도 중요하다고 말하고 있다. 건전한 태도로 코드를 대하면 좋은 결과로 이어질 것을 확신하다. 내가 지금 작성하는 코드가 세상에 기여하고 있음을, 앞으로 더 나아질 것을, 그리고 더 나아진 코드로 세상에 더 많은 기여를 할수 있음을 기억하자.

마치며

벨로그에 '훌륭한 프로그래머 되는 법'에 대한 포스팅을 처음 작성한 것이 2021년 8월 29일이다. 예전에 읽었던 이 책을 다시 읽은 이유는 더 좋은 개발자에 대한 의문으로 시작했다. 다시 읽다보니 왜 여태 다시 읽지 않았나 싶을 정도로 좋은 내용이었고, 그래서 공유를 시작했다. 9월 중순까지 작성하다가 팀을 옮기고 포스팅을 멈췄다가 설 연휴와 장기근속휴가로 2022년 1월 30일에 포스팅을 다시 시작했고 6개월 만에 마칠 수 있게 되었다.
아무리 좋은 마음으로 시작하더라도, 끝 마치기는 어려운 것 같다. 시작이 반이라고 말하지만 끝날 때까진 끝난 게 아니다. 코드 작성도 그런 것 같다. 원대한 꿈을 가지고 시작했다가도 엉망이 되기 쉽다. 결국 끝까지 좋은 코드를 작성하겠다는 마음이 제일 중요한 것 같다. 지금까지 이 많은 글들을 읽어주신 분들께 감사하며 조금이라도 도움이 되었기를 바란다. 앞으로는 좀 더 개발에 관련된 포스팅을 작성할 계획이다.

profile
집사없는 개발 고양이

0개의 댓글