////
Search
Duplicate
9️⃣

9. 달리는 기차의 바퀴를 갈아끼우기

밥값에 대하여

: 일단 동작하게 만든 다음 더 좋게 만들어라
⇒ 켄트 백의 동작하게 만들고 제대로 만들고 빠르게 만들어라라는 격언을 필자가 변형한 것
: 요구사항을 충족하라, 제약조건을 지키면서 제대로 동작하는 코드를 만드는 것이 개발자의 ‘밥값’
: 좋은 코드의 기준은 다양하지만 공통적으로 내세우는 것은 가독성, 성능, 유연성
기존 코드를 유지보수할 때 가독성은 도움이 된다. 가독성이 좋은 코드는 좋은 관행을 잘 준수한 것, 또한 일관성이 잘 지켜진 것
대부분의 경우, 우선순위가 높지 않은 성능, 물론 최적화는 필요하지만 성급한 최적화는 모든 악의 근원이라는 격언도 있다.
: 성능이 좋은 코드는 대부분 이해하기가 어렵다. 그럼에도 불구하고 성능이 강조되는 코드도 있다. 잘 프로파일링하여 최적화가 필요한, 필요하지 않은 코드를 구분하라
좋은 코드는 유연성이 있다. 유연성에는 추상화가 필요한데, 이 추상화가 잦아질 경우 함정에 빠지게 된다.
: 좋은 코드는 가독성, 성능, 유연성 모두 중요하나 가장 중요한 것은 가독성

기술 부채에 대하여

: 앞서 말했듯이 비즈니스의 행위에 집중하게 되어 구현을 목표로 삼고 개발하다보면 자연스레 기술부채가 쌓일 수 밖에 없다..
: 이때 사용되는 것이 클린 아키텍쳐에서도 언급했듯 보이스카웃 규칙, 깨진 유리창 이론
: 부채 청산의 시작은 자동화된 테스트를 확보하는 것, 테스트 작성이 어렵다면 이것은 명백한 기술 부채이다.
: 먼저 구현 코드와 무관환 E2E 테스트를 작성하고 단위 테스트가 가능한 코드로 천천히 조금씩 리팩토링해나가야 한다.
: 흔히 개발을 달리는 기차의 바퀴를 갈아끼우는 것에 비유하곤 한다. 멈추지 않는 기차의 바퀴를 한 두개씩 갈아끼우는 건 오래 걸리지만 가능한 일이다.
: 하지만 그것이 불가능하다면 멈추는 것을 건의하자, 안 된다면 속도를 줄이는 것을 건의하자, 그것마저도 안 된다면 기차에서 뛰어 내려라

삽질에 대하여

: 바퀴를 다시 발명하지 마라, 개발자들은 이를 잘 따르고 있다. 바퀴를 다시 발명하려하지 않고 내게 필요한 사이즈의 바퀴를 찾아 헤매고 있다.
: JSON의 창시자인 더글라스 크락포드는 “바퀴를 새로 발명하는 일의 좋은 점은 둥근 바퀴를 얻을 수 있다는 점”이라고 했다.
: 바퀴를 다시 발명하는 일의 또 다른 좋은 점은 바퀴를 더 잘 알게 된다는 것, 처음부터 잘 굴러가는 완벽한 바퀴를 만들려하지 말라, 일단 굴러가는 바퀴를 만들자.
: 굴러간다고 멈추는 것이 아니라 어떻게 하면 더 잘 굴러갈지, 끊임없이 고민해야 한다.
: 바퀴를 다시 발명하는 일은 결과보다는 과정에 더 큰 가치가 있다. 현실 세계에서는 과정보다 결과가 더 중요하고 바퀴를 발명할 기회는 좀처럼 없다.
: 기회가 온다면 놓치지 말아야 하고 기회가 없으면 만들어라.

은탄환은 없다. 많이 읽고 많이 쓰고 많이 생각하자.

: 논리적인 글쓰기를 유시민 작가는 훈련으로 향상할 수 있는 기능이라고 했다. 코딩은 극단적인 형태의 논리적인 글쓰기이다. 코딩도 글쓰기와 마찬가지로
: 많이 읽고 많이 쓰고 많이 생각해야 한다.