Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
2장 실용주의 접근법
#pragmatic
2년 전
864
1

오늘 TIL 3줄 요약

  • 바꾸기 쉽게 설계해라

  • tracer bullet 코드와 프로토타입을 활용하자

  • 추정하는걸 연습해서 판단력을 길러라

TIL (Today I Learned) 날짜

2022.03.21

오늘 읽은 범위

2장 실용주의 접근법

  • 2장에서는 앞서 말했던 실용주의적인 프로그래머가 되기 위한 구체적인 설계에 대하여 다룬다.

  • 좋은 설계 := 바꾸기 쉬운 것 이라 정의하고 어떻게 바꾸기 쉬운 상태를 만드는지에 관한 방법을 소개한다. 근데 왜 좋은 설계는 바꾸기 쉬운 것일까? 프로그래밍은 계속해서 바뀔 수 밖에 없는 작업이기 때문이다. 처음 사용하던 외부 api 의 성능이 안좋았다던가, 유저의 피드백으로 인해 기능을 수정해야 할 상황이 온다던가, 버그가 발생하는 등 프로그래밍은 시작부터 끝까지 계속해서 바뀌는 상황에 내던져진다.

    • 바꾸기 쉬운 상태로 만들기 위한 방법 중 하나는 Don't Repeat Yourself 하는 것이다. 같은 정보 혹은 기능을 반복해서 작성하면 나중에 하나를 고치게 될 때 다른 하나도 고쳐줘야한다. 대부분의 사람은 고쳐야하는 상황이 생길 때 나머지 하나를 잊어버린다. 그래서 반복하면 안된다. 꼭 코드 구현 뿐만아니라, 의미없는 주석이나 db 스키마 생성 등에도 적용되는 말이다.

    • 또 orthogonality 를 유지하는 것이다. 쉽게 말해 하나 바꿨을 때 다른 것들의 영향력을 최소화하는 것이다. 이러면 교체하기 쉬우니 당연하게도 바꾸기 쉬워진다. orthogonality 를 유지하는 방법에는 계층 구조를 만들고 추상화하는 방법이 있다. 각 계층들끼리는 상세 구현을 보여주지 말고 추상화만 제공해주는 식이다. 그럴 경우 상세 구현이 바뀌더라도 interface 가 바뀌지 않으면 나머지 계층에는 그대로여서 orthogonality 를 유지할 수 있다. 계층 안의 일은 계층 안에서만 해결하게 만드는 작업도 필요하다. 계층끼리 공유하는 데이터를 만들게 되면 유지가 힘들어질 것이다.

    • 언제든 되돌릴 수 있는 상태로 유지해야한다. DRY, orthogonality 가 잘 유지되면 따라오는 특성이라고 생각되기도 한다. 이게 필요한 이유는 초기에 최선의 결정을 하기 힘들고 이 업계는 기술이 너무 빨리 변하기 때문이다.

  • tracer bullet 코드란 최소의 기능으로 동작하는 코드를 말한다. 이걸 작성함으로 인하여 프로젝트의 가능성과 필요, 사용자의 반응을 얻을 수 있다. 뿐만 아니라 팀 작업 효율성을 증가시키고 앞으로의 진행상황을 예측할 수 있게 된다. 좋은 설계로 코드를 짠다면 쉽게 바꿔가면서 프로젝트를 고도화할 수 있다. 프로토타입도 경우에 따라 좋은 선택일 수 있다. 프로토타입과 다른 점은 이 코드는 계속해서 쓸 코드이다. 프로토타입 용 코드는 일회용 코드이다. 그렇다고 해서 프로토타입 코드가 의미없는 것은 아니다. 프로토타입을 해봄으로써 어떤게 필요할지 학습할 수 있고 시간과 돈, 노력을 아낄 수 있다.

  • 판단력을 기르기 위해서 추정하는 실력을 기르자. 실제 작업에 대한 감이 생겨서 가능성을 빠르게 판단할 수 있고 어느 부분을 바꿔야 최적화가 가능한지 판단할 수 있을 것이다. 계획하는 실력을 늘리고 싶다면 추정하고 계획하고 실행하고 그것을 바탕으로 다시 추정하면서 반복해라.

1 comment