실용주의 프로그래머

Do_Doolly·2023년 4월 9일
1

책책책

목록 보기
7/10
post-thumbnail
post-custom-banner

🚥 리뷰 전

개발에서 실용주의란 무엇일까?

단순히 코드의 실행시간을 최소화 시켜 효율성을 높이는게 실용적인걸까 아니면 아키텍처를 잘 구성하여 유연하게 변경할 수 있는 개발을 하는게 실용적일까

사실 답은 없다고 생각한다. 중요한 건 코드를 작성할 때 어떤 방향성을 갖고 진행하는가 라고 생각한다. 이 책에는 이제 막 코딩을 시작하는 초보 개발자에게 코딩 근육을 만들고 코딩 뇌를 개발하는 예제와 발상, 실용적인 팁들을 소개하고 있다.


📚 본격 리뷰

모든 개발자는 유일무이하다. 그렇지만 자신의 기예에 관심을 가지고 자기 일에 대해 생각하는건 공통적이다.

1. 실용주의 접근법

  • 가역성
    • 문제를 풀 때 간단한 해결책을 좋아하지만, 오늘의 x 값이 내일은 다르게 바뀔 수도 있다.
    • 유연하고 적용 가능한 소프트웨어를 만들자
    • 최종 결정이란 건 없다!
  • 추정
    • 추정 능력을 계발하여 무언가의 규모를 직관적으로 짚을 수 있게 하자
    • 추정치는 문제의 모델에 기반한다.
    • 배경 이해 -> 시스템의 모델링 -> 모델의 컴포넌트화 -> 매개변수에 값을 할당 -> 답을 계산
    • 누군가 추정해달라고 말하면 '나중에 연락드릴게요'라고 말한 뒤 시간을 내서 추정하라

2. 구부러지거나 부러지거나

  • 결합도 줄이기
    • 높은 결합도는 변경의 적이다.
    • 결합도가 낮은 코드는 변경하기 쉽다
    • 변수나 함수를 글로벌화 하면 결합도가 높아진다
  • 상속세
    • 상속도 일종의 결합이다
    • 인터페이스와 프로토콜, 위임을 통해 상속을 줄일 수 있다

3. 동시성

  • 시간적 결합 깨뜨리기
    • 작업 흐름 분석으로 시간이나 순서에 의존하는 시간적 결합을 끊어내야 한다
    • 프로세스에서 동시성 찾는 연습을 하라
    • 자원을 공유하는 상태는 틀린 상태다 (상호 배제의 규칙을 만들 것)

4. 코딩하는 동안

  • 우연에 맡기는 프로그래밍
    • 행운과 우연에 의존하지 않고 의도적으로 프로그래밍을 해야한다 이거 왜 되지?
  • 알고리즘의 속도
    • 알고리즘을 추정하고 테스트 하라
  • 리팩터링
    • 소프트웨어 개발은 정원 가꾸기에 더 가깝다
    • 리팩터링은 나중에 하는게 아니다. 발견한 순간 당장해라! (아니면 잊고 지나가거나, 나중에 변경하기 어렵게 된다)
    • 리팩터링과 기능 추가를 동시에 하지 말아라
  • 테스트로 코딩하기
    • 테스트가 코드의 첫 번째 사용자다
    • 초록색 테스트 통과 메세지에 중독된 나머지 진짜 문제 해결에는 보탬이 안 되는 코드를 작성하면 안 된다
    • TDD(테스트 주도 개발)는 목표가 어디인지 확실히 알아야 한다
  • 이름 짓기
    • 컴퓨터 과학에는 어려운 문제가 딱 두 개 있다. 캐시 무효화와 이름 짓기다
    • 문화를 존중해서 그 회사 혹은 그룹에 맞는 문화에 적응해라
    • 함수나 메서드는 실제로 하는 일을 반영하도록 이름을 지어라

5. 실용주의 프로젝트

  • 실용주의 팀
    • 자동화를 만들어라
  • 코코넛만으로는 부족하다
    • 사용자가 필요로 할 때마다, 사업적으로 배포가 의미 있을 때마다 배포하기
  • 실용주의 시작 도구
    • 버전 관리 시스템
    • 가차 없고 지속적인 테스트 (테스트 커버리지에 목숨걸지 않기)

➰ 리뷰 끝

책에서 모든 챕터를 읽지는 않았다. 당장 실무에서 쓸 수 있는, 혹은 써야할 방법론에 대한 내용을 먼저 읽었다.

나머지는 기본적인 프로그래밍 도구에 대한 내용이라 추후에 가볍게 읽는게 좋을 것 같다. 전체적으로 책을 읽으면서 느껴진 핵심 내용은 소통과 유연성이다.

사용자를 기쁘게 하는 코딩은 완벽하게 짜여진 계획과 업무가 아니다. 그 때 그 때마다 변경할 수 있고, 사용자의 요구에 따라 빠르게 기능을 변경해 대응할 수 있는 업무 문화와 소통이 필요하다.

다행히 지금 일하고 있는 현업에서는 위 사항들이 잘 진행되고 있어 감사한 일이다 😆

링크 : 실용주의 프로그래머

profile
생각하면 복잡하니까 일단 해보자
post-custom-banner

0개의 댓글