쳐맞기 전까지는.
하지만 이를 딛고 일어나야 한다. 4개월 만에 글을 작성하는 것처럼... 😂
The Art of Computer Programming의 저자 도널드 커누스의 말이다. 예술의 경지를 목표로 삼아 좋은 프로그램을 만드려 노력하여야 한다. 물론 그 과정에서 수도 없이 쳐맞겠지만... 쳐맞음이 바로 좋은 기술에 대한 시선과 균형을 만들어줄 것이다.
아인슈타인의 말이다. 힘든 일이지만 용기를 가져야한다. 잘못된 길을 가고 있는 프로그램에 대해서 비전을 제시하고 그 길로 이끌어 나가야한다. 설득하기 위해선 바보도 알아 들을 수 있을 때까지 증명해야하며, 검증되어야 한다. 체계적인 구조를 설계한 뒤에 문제를 해결해야한다. 작동하는 것처럼 보일 때까지 if else 를 쳐바르는 것이 아니다.
지금까지 봐왔던 좋은 개발자 중에 공부를 멈춘 개발자는 단 한명도 보지 못했다. 항상 새로운 것을 먼저 알고 장점을 프로그램에 적용하고 팀에 전파하려 했다. 반대편의 사람들은 양상이 다양한데, 별로 이야기하고 싶지 않다. 배움을 멈추지 않아야하며, 모르는 것에 대해 받아들여야 한다. 일을 하고 있다해서 다 안다고 착각하지 말자. 다 안다고 생각하는 것은 모르는 것을 인지조차 못하고 있는 상태다.
멋지게 끝내주는 것을 만들고 있는 것처럼 보여도, 실제론 80% 이상이 집안일처럼 단조롭고 고된 일이라고 생각한다. 하지만 안할 수는 없는 일이다. 아무리 집이 좋아도 청소하지 않으면 더러운 것은 똑같다. 장도 봐야하고 요리도 해야하고 설거지도 해야한다. 코드도 똑같다. 요리를 하면 설거지를 해야하는 것처럼, 코드도 늘어나면 계속 데드코드는 삭제하고 리팩토링을 해야한다. 어느정도는 희생정신이 필요한 일이지만, 반드시 해야하는 일이다. 개인적으로 이 일을 멈추지 않고 하는 사람들을 존중한다.
(슬라이드는 안뜨네요.... 링크를 타고 들어가주세요.) 넷플릭스의 문화 : 자유와 책임 (한국어 번역본) from Doran Hwang
위의 슬라이드 75페이지에 아주 인상적인 이야기가 있는데, "넷플릭스에는 복장에 관한 규칙이 없지만 아무도 발가벗고 출근하지 않는다." 라는 이야기가 나온다. 왜 상반되는 이야기를 적고있는지는 스스로 생각해보면 좋을 것 같다.
겉보기에는 그럴듯 해보이지만 실제론 시궁창인 코드들을 많이 보았을 것이다. 이 비유가 딱이다. 이렇게 만들지 말자. 쓰레기가 가야할 곳은 쓰레기통이지 카펫 아래가 아니다.
지나치게 단순하다는 건 모든 기능을 구현하지 않았을 가능성이 높다. 인풋 데이터에 대한 정제가 누락되었다거나, 예외처리가 안되어있을 가능성이 높다. 우리가 이야기하는 간결함은 모든 요구사항을 충족하며 정확하게 돌아가는 것이다. 그를 위해선 명확하게 설계해야하고 오용과 남용을 방지해야한다. 이를 위해선 객체지향 5원칙은 SOLID에 대해 공부하는 것을 추천한다.
이를 원하시는 분들에게는 이 책을 추천드린다.
잘못된 가설은 잘못된 방향으로 코드를 작성하게 한다. 의도대로만 쓰일 거라 생각하지말고 제약조건을 명확하게 해야한다.
코드 최적화 행위는 확실하고 읽기 쉬운 알고리즘 구현을 찾아낸 뒤에 잘게 썰어버리는 행위라고 책에서 말하고 있다. 복잡도를 높이는 것은 성능이 나오지 않는 경우 같이 필요할 때만 해야한다. 많은 프로그래머들이 자신이 느릴거라 생각하는 부분에서 성능 최적화를 하지만, 실제로 느린 이유는 다른 곳에 있는 경우가 많다고 한다. 그래서 우리는 New Relic 같은 APM을 잘 사용해야 한다.