📖
Aaron's TECH BOOK
  • Intro
    • About me
  • Lecture
    • Kubernetes
      • Begin Kubernetes
    • Kafka
      • Begin Kafka
    • Kotlin
      • TDD, Clean Code Preview
      • woowa Kotlin
    • Java
      • Multithread Concurrency
      • The Java
    • Toby
      • Toby Spring 6
      • Toby Spring Boot
    • MSA
      • 01.Micro Service
      • 02.DDD 설계
      • 03.DDD 구현
      • 04.EDA 구현
    • Spring Boot
    • Spring Batch
    • Spring Core Advanced
    • Spring DB Part II
    • Spring DB Part I
    • JPA API and Performance Optimization
    • JPA Web Application
    • JPA Programming Basic
    • Spring MVC Part 2
      • 01.Thymeleaf
      • 02.ETC
      • 03.Validation
      • 04.Login
      • 05.Exception
    • Spring MVC Part 1
      • 01.Servlet
      • 02.MVC
    • Http
      • 01.Basic
      • 02.Method
      • 03.Header
    • Spring Core
    • Study
      • Concurrency issues
      • First Come First Served
      • Performance Test
      • TDD
      • IntelliJ
  • Book
    • Kafka Streams in Action
      • 01.카프카 스트림즈
      • 02.카프카 스트림즈 개발
      • 03.카프카 스트림즈 관리
    • Effective Kotlin
      • 01.좋은 코드
      • 02.코드 설계
      • 03.효율성
    • 이벤트 소싱과 MSA
      • 01.도메인 주도 설계
      • 02.객체지향 설계 원칙
      • 03-04.이벤트 소싱
      • 05.마이크로서비스 협업
      • 06.결과적 일관성
      • 07.CQRS
      • 08.UI
      • 09.클라우드 환경
    • 몽고DB 완벽 가이드
      • I. 몽고DB 시작
      • II. 몽고DB 개발
    • Kotlin Cookbook
      • 코틀린 기초
      • 코틀린 기능
      • ETC
    • Kotlin in Action
      • 함수/클래스/객체/인터페이스
      • 람다와 타입
      • 오버로딩과 고차 함수
      • 제네릭스, 애노테이션, 리플렉션
    • Kent Beck Tidy First?
    • 대규모 시스템 설계 기초
      • 01.사용자 수에 따른 규모 확장성
      • 02.개략적인 규모 추정
      • 03.시스템 설계 공략법
      • 04.처리율 제한 장치 설계
      • 05.안정 해시 설계
      • 06.키-값 저장소 설계
      • 07.유일 ID 생성기 설계
      • 08.URL 단축기 설계
      • 09.웹 크롤러 설계
      • 10.알림 시스템 설계
      • 11.뉴스 피드 시스템 설계
      • 12.채팅 시스템 설계
      • 13.검색어 자동완성 시스템
      • 14.유튜브 설계
      • 15.구글 드라이브 설계
      • 16.배움은 계속된다
    • 실용주의 프로그래머📖
    • GoF Design Patterns
    • 도메인 주도 개발 시작하기
      • 01.도메인 모델 시작하기
      • 02.아키텍처 개요
      • 03.애그리거트
      • 04.리포지터리와 모델 구현
      • 05.Spring Data JPA를 이용한 조회 기능
      • 06.응용 서비스와 표현 영역
      • 07.도메인 서비스
      • 08.애그리거트 트랜잭션 관리
      • 09.도메인 모델과 바운디드 컨텍스트
      • 10.이벤트
      • 11.CQRS
    • Effective Java 3/E
      • 객체, 공통 메서드
      • 클래스, 인터페이스, 제네릭
    • 소프트웨어 장인
    • 함께 자라기
    • Modern Java In Action
      • 01.기초
      • 02.함수형 데이터 처리
      • 03.스트림과 람다를 이용한 효과적 프로그래밍
      • 04.매일 자바와 함께
    • Refactoring
      • 01.리펙터링 첫 번째 예시
      • 02.리펙터링 원칙
      • 03.코드에서 나는 악취
      • 06.기본적인 리펙터링
      • 07.캡슐화
      • 08.기능 이동
      • 09.데이터 조직화
      • 10.조건부 로직 간소화
      • 11.API 리팩터링
      • 12.상속 다루기
    • 객체지향의 사실과 오해
      • 01.협력하는 객체들의 공동체
      • 02.이상한 나라의 객체
      • 03.타입과 추상화
      • 04.역할, 책임, 협력
      • 05.책임과 메시지
      • 06.객체 지도
      • 07.함께 모으기
      • 부록.추상화 기법
    • Clean Code
    • 자바 ORM 표준 JPA 프로그래밍
Powered by GitBook
On this page
  • Intro
  • 서문
  • 실용주의 철학
  • 실용주의 접근법
  • 기본적인 도구
  • 실용주의 편집증
  • 구부러지거나 부러지거나
  • 코딩하는 동안 해야 할 일들
  • 프로젝트 전에
  • 실용주의 프로젝트
  1. Book

실용주의 프로그래머📖

Last updated 1 year ago

책을 요약한 내용입니다.

Intro

숙련공

교육과 경험은 갖추었으나 그 능력이 평균 이상이라고 할 수 없는 직공

.

숙련공이 마스터가 되는 것은 단순한 기계적 학습으로는 어렵다.

지혜가 필요하다.

마스터로부터 통찰과 직관, 지혜를 배워야 한다.

.

기술 습득의 과정을 여러 단계로 나누면 각 과정에 따라

"규칙", "격언", "직관" 등이 중심이 된다.

초기에는 맥락에 상관없이 절대적으로 지킬 수 있는 "규칙"이 필요하다.

그러다가 발전을 하면 원리를 찾게 되고, 특정 맥락에서 "격언"을 이해, 응용하게 된다.

그리고 마지막에 이르러서는 이성보다는 "직관"에 따라 행동하게 된다.

(Hubert Dreyfux)

.

서문

Tip. 1

자신의 기술에 관심과 애정을 가져라.

Tip. 2

자신의 일에 대해 생각하면서 일하라.

.

실용주의 철학

자신이 하는 모든 일에 책임을 져야 한다.

.

고양이가 내 소스코드를 삼켰어요..

  • 우리는 자신의 능력에 대해 자부심을 가질 수 있지만 실수나 무지 같은 단점에 대해서도 정직해져야 한다.

  • 실수를 저지르거나 잘못된 판단을 내렸다면 정직하게 인정하고 다른 방안을 제안하도록 노력하라.

Tip. 3

어설픈 변명을 만들지 말고 대안을 제시하라.

.

소프트웨어 엔트로피

Tip. 4

깨진 창문을 내버려두지 말라.

  • 더 이상의 손상을 예방하기 위해 어떤 조치든 취하고 현 상황을 잘 관리하고 있다는 것을 보여 줘라.

  • 방치는 다른 어떤 요인보다도 부패를 더 가속시킨다.

.

돌맹이 수프와 삶은 개구리

Tip. 5

변화의 촉매가 되라.

Tip. 6

큰 그림을 기억하라.

  • 의욕과 팀 자체의 파괴는 종종 작은 것들의 누적에서 온다.

  • 큰 그림에 늘 주의를 기울여라.

  • 개인적으로 무엇을 하고 있는가에만 정신을 쏟지 말고, 주변에서 무슨 일이 벌어지는지 지속적으로 살펴보라.

.

적당히 괜찮은 소프트웨어

Tip. 7

품질을 요구사항으로 만들어라.

  • 완벽하게 훌륭한 프로그램을 과도하게 장식하거나 지나칠 정도로 다듬느라 망치지 말라.

.

포트폴리오 만들기

ex) 주식.

  • 주기적인 투자

    • 지식 포트폴리오에 주기적으로 투자하자.

  • 다각화

    • 여러 가지를 알면 알수록 자신의 가치는 더욱 높아진다.

  • 리스크 관리

    • 기술 달걀을 한 바구니에 모두 담지 말자.

  • 싸게 사서 비싸게 팔기

    • 새롭게 떠오르는 기술이 인기를 끌기 전에 미리 알고 학습하자.

  • 검토 및 재조정

    • 인기 있던 기술이 언제 식어버릴지 모른다.

Tip. 8

지식 포트폴리오에 주기적으로 투자하라.

목표

  • 매년 새로운 언어를 최소 하나는 배우자.

  • 기술 서적을 분기마다 한 권씩 읽자.

  • 비 기술 서적도 읽자.

  • 수업을 듣자.

  • 지역 사용자 모임에 참여하자.

  • 다른 환경에서 실험해보자.

  • 요즘 흐름을 놓치지 말자.

  • 인터넷을 이용하자.

Tip. 9

읽고 듣는 것을 비판적으로 분석하라.

.

소통하라!

  • 말하고 싶은 게 무언지 알자.

    • 의사소통하고 싶은 아이디어들을 적은 다음, 제대로 전달하기 위해 필요한 전략을 몇 개 세우자.

  • 청중을 알자.

    WISDOM (청중 이해하기)
    > 무엇(What)을 바우길 원하는가?
    > 말하려는 것에서 그들의 관심(Interest) 있어 하는 것은 무엇인가?
    > 얼마나 소양(Sophisticated)이 있는가?
    > 어느 정도의 구체적인(Detail) 내용을 원하는가?
    > 누가 정보를 소유(Owe)하길 원하는가?
    > 그들이 경청하도록 동기(Motive)를 주려면 어떻게 해야 할까? 
  • 때를 고르자.

    • 말하는 내용만 아니라 말하는 시간도 적절하게 하자.

  • 스타일을 고르자.

    • 전달하는 스타일이 청중에 어울리도록 조정하자. (사실만 전하기? 본론 전 길고 넓은 한담하기?..)

  • 멋져 보이게 하자.

    • 레이아웃, 맞춤법..

  • 청중을 참여시키자.

    • 피드백..

  • 청자(Listener)가 되자.

    • 질문을 하거나, 내용을 요약하도록 하자. 회의를 대화로 바꿔보자.

  • 응답하자.

    • 누군자 질문한다면 응답하자.

Tip. 10

무엇을 말하는가와 어떻게 말하는가 모두 중요하다.

.

실용주의 접근법

중복의 해악

Tip. 11

DRY - 반복하지 마라. (Don't Repeat Yourself)

중복의 생성

  • 강요된 중복

    • 다른 선택이 없다고 느낀다. 환경이 중복을 요구하는 것처럼 보인다.

  • 부주의한 중복

    • 자신들이 정보를 중복하고 있다는 것을 깨닫지 못한다.

  • 참을성 없는 중복

    • 중복은 쉬워 보이므로 게을러져서 중복을 하게 된다.

  • 개발자간의 중복

    • 여러 사람들이 동일한 정보를 중복한다.

Tip. 12

재사용하기 쉽게 만들라.

.

기본적인 도구

.

실용주의 편집증

.

구부러지거나 부러지거나

.

코딩하는 동안 해야 할 일들

.

프로젝트 전에

.

실용주의 프로젝트

.

실용주의 프로그래머