fos-blog/study
01 / 홈02 / 카테고리03 / 시리즈
01 / 홈02 / 카테고리03 / 시리즈

카테고리

  • AI 페이지로 이동
    • RAG 페이지로 이동
    • agent 페이지로 이동
    • langgraph 페이지로 이동
    • 사람용 CLI와 AI 에이전트용 CLI는 설계가 다르다
    • agents.md
    • Claude Code 메모리: CLAUDE.md와 .claude/rules를 규칙으로 쓰는 법
    • Claude Code의 Skill 시스템 - 개발자를 위한 AI 자동화의 새로운 차원
    • Claude Code를 5주 더 쓴 결과 — 스킬·CLAUDE.md를 키워가는 방식
    • Claude Code를 11일 동안 쓴 결과 — 데이터로 본 나의 사용 패턴
    • Claude Code 멀티 에이전트 — Teams
    • AI 에이전트와 디자인의 새 컨벤션 — DESIGN.md, Google Stitch, Claude Design
    • Docling — IBM Research 의 문서 파싱 toolkit 상세 정리
    • 하네스 엔지니어링 실전 — 4인 에이전트 팀으로 코딩 파이프라인 구축하기
    • 하네스 엔지니어링 — 오래 실행되는 AI 에이전트를 위한 설계
    • 멀티모달 LLM (Multimodal Large Language Model)
    • AI 에이전트와 함께 MVP 만들기 — dooray-cli 사례
    • 온톨로지에서 코딩 에이전트 컨텍스트까지 — 클래스·관계 설계와 그래프 평가
    • OpenClaw는 context와 memory를 어떻게 관리하나 — 나만의 에이전트를 구성하는 법
    • OpenClaw vs Hermes Agent — 갈아탈까 고민하며 정리한 비교
  • ai 페이지로 이동
    • agent 페이지로 이동
    • [초안] AI 제품 백엔드 안정성 — 지연·비용·권한·관측·도구 실패·폴백/재시도/사람 에스컬레이션
    • [초안] LLM 평가 프레임워크: 골든셋, 회귀 테스트, LLM-as-a-judge, 사람 피드백 루프
  • algorithm 페이지로 이동
    • live-coding 페이지로 이동
    • 분산 계산을 위한 알고리즘
  • architecture 페이지로 이동
    • 시니어 백엔드를 위한 API 설계 실전 스터디 팩
    • API 버저닝과 하위 호환성: 모바일·외부 컨슈머까지 안전하게 진화시키기
    • 캐시 설계 전략 총정리
    • [초안] 커머스 Spring 서비스에 Clean/Hexagonal Architecture를 실용적으로 적용하기
    • [초안] 커머스 도메인 모델링: 주문·재고·노출의 세 축을 분리해서 설계하기
    • 커머스 주문 상태와 데이터 정합성 기본기
    • [초안] 쿠폰/프로모션 동시성과 정합성 기본기 — 선착순·중복 사용 방지·발급/사용/복구
    • [초안] DDD와 도메인 모델링: 시니어 백엔드 관점의 전술/전략 패턴 실전 가이드
    • [초안] Decorator & Chain of Responsibility — 행동을 체인으로 조립하는 두 가지 방식
    • 디자인 패턴
    • [초안] 분산 아키텍처 완전 정복: Java 백엔드 시니어 인터뷰 대비 실전 가이드
    • [초안] 분산 트랜잭션과 Outbox 패턴 — 왜 2PC를 피하고 어떻게 대신할 것인가
    • 분산 트랜잭션
    • [초안] e-Commerce 주문·결제 도메인 모델링: 상태머신, 멱등성, Outbox/Saga 실전 정리
    • [초안] Event Sourcing과 CQRS — 상태가 아니라 변화를 저장한다는 발상
    • [학습중] 금융 거래 취소·정정·대사·일마감 운영
    • [학습중] 금융 거래 상태와 원장 설계
    • [초안] F&B 쿠폰·프로모션·멤버십·포인트 설계
    • [초안] F&B · e-Commerce 디지털 채널 도메인 한 장 정리
    • [초안] F&B 주문/매장/픽업 상태머신 설계
    • [초안] F&B 이커머스 결제·환불·정산 운영 가이드
    • [초안] Hexagonal / Clean Architecture를 Spring 백엔드에 적용하기
    • [초안] 대규모 커머스 트래픽 처리 패턴 — 대규모 회원과 메가 프로모션을 버티는 설계
    • [초안] 레거시 JSP/jQuery 화면과 신규 API가 공존하는 백엔드 운영 전략
    • [학습중] 모듈러 모놀리스에서 MSA로 점진 전환하는 실습
    • [초안] MSA 서비스 간 통신: Redis [Cache-Aside](../database/redis/cache-aside.md) × Kafka 이벤트 하이브리드 설계
    • [초안] Observability 입문: 시니어 백엔드가 장애를 탐지하고 대응하는 방식
    • [초안] Outbox / Inbox Pattern 심화 — 분산 메시징의 정합성 문제를 DB 트랜잭션으로 풀어내기
    • [초안] 결제 도메인 멱등성과 트랜잭션 재시도 기본기
    • [초안] 시니어 백엔드를 위한 Resilience 패턴 실전 가이드 — Timeout, Retry, Circuit Breaker, Bulkhead, Backpressure
    • [초안] Spring Batch vs Event-Driven — 같은 비동기처럼 보이지만 전혀 다른 두 패러다임
    • [초안] Strategy Pattern — 분기문을 없애는 설계, 시니어 백엔드 인터뷰 핵심 패턴
    • [초안] 시니어 백엔드를 위한 시스템 설계 입문 스터디 팩
    • [초안] 템플릿 메서드 패턴 - 백엔드 처리 골격을 강제하는 가장 오래되고 가장 위험한 패턴
    • [초안] 대규모 트래픽 중 무중단 마이그레이션 — Feature Flag + Shadow Mode 실전
  • database 페이지로 이동
    • milvus 페이지로 이동
    • mysql 페이지로 이동
    • opensearch 페이지로 이동
    • qdrant 페이지로 이동
    • redis 페이지로 이동
    • vespa 페이지로 이동
    • 김영한의-실전-데이터베이스-설계 페이지로 이동
    • [초안] DB Connection Pool Saturation과 Thread Pool 격리
    • 커넥션 풀 크기는 얼마나 조정해야 할까?
    • 인덱스 - DB 성능 최적화의 핵심
    • [초안] JPA N+1과 커머스 조회 모델: 주문/메뉴/쿠폰 도메인에서 살아남기
    • [초안] MyBatis 기본기 — XML Mapper, resultMap, 동적 SQL, 운영 패턴 정리
    • [초안] MyBatis와 JPA/Hibernate 트레이드오프 — 레거시 백엔드를 다루는 시니어 관점
    • 한국어 형태소 분석기 Nori vs Lindera — OpenSearch에서 Milvus로 갈 때 어휘 검색은 유지되나
    • 벡터 DB 5종, 아키텍처는 어떻게 다른가
    • 벡터 DB 5종을 실제로 벤치마크했다 — 같은 recall에서 QPS는 얼마나 갈리나
    • 벡터 DB 어떻게 고를까 — OpenSearch · Milvus · Qdrant · Vespa · pgvector 비교
    • 벡터 DB를 실제로 도입한 사례 — 빅테크 프로덕션
    • 역정규화 (Denormalization)
    • 데이터 베이스 정규화
  • devops 페이지로 이동
    • docker 페이지로 이동
    • k8s 페이지로 이동
    • k8s-in-action 페이지로 이동
    • observability 페이지로 이동
    • [초안] 커머스/F&B 채널 장애 첫 5분과 관측성 기본기
    • [초안] 운영 데이터 정합성 장애 대응 — 결제 취소 누락과 중복 적재 런북
    • Envoy Proxy
    • [초안] F&B / e-Commerce 운영 장애 대응과 모니터링 — 백엔드 관점 정리
    • Graceful Shutdown
    • [초안] 시니어 백엔드를 위한 SLO와 Error Budget 기반 장애 대응
  • http 페이지로 이동
    • HTTP Connection Pool
    • HTTPS는 어떻게 안전한가 — TLS, 인증서, 그리고 termination
  • interview 페이지로 이동
    • [초안] AI 서비스 팀 경험 기반 시니어 백엔드 면접 질문 뱅크 — Spring Batch RAG / gRPC graceful shutdown / 캐시 정합성 / 12일 AI 웹툰 MVP
    • Observability — 면접 답변 프레임
    • [초안] 시니어 Java 백엔드 면접 마스터 플레이북 — 김병태
    • [초안] NSC 슬롯팀 경험 기반 질문 은행 — 도메인 모델링·동시성·성능·AI 협업
  • java 페이지로 이동
    • concurrency 페이지로 이동
    • jdbc 페이지로 이동
    • opentelemetry 페이지로 이동
    • spring 페이지로 이동
    • spring-batch 페이지로 이동
    • testing 페이지로 이동
    • 더_자바_코드를_조작하는_다양한_방법 페이지로 이동
    • [초안] Java 동시성 락 정리 — 커머스 메뉴/프로모션 정책 캐시 갱신 관점
    • [초안] JVM 튜닝 실전: 메모리 구조부터 Virtual Threads, GC 튜닝, 프로파일링까지
    • Java의 로깅 환경
    • MDC (Mapped Diagnostic Context)
    • Java StampedLock — 읽기 폭주에도 쓰기가 밀리지 않는 락
    • Virtual Thread와 Project Loom
  • javascript 페이지로 이동
    • typescript 페이지로 이동
    • AbortController
    • Async Iterator와 제너레이터
    • CommonJS와 ECMAScript Modules
    • 제너레이터(Generator)
    • Http Client
    • Node 백엔드 운영 패턴 — Streams 백프레셔, pipe/pipeline, 멱등성 vs 분산 락
    • Node.js
    • npm vs pnpm — 어떤 기준으로 선택했나
    • `setImmediate()`
  • kafka 페이지로 이동
    • [초안] Kafka 기본 개념 — 토픽, 파티션, 오프셋, 복제
    • Kafka를 사용하여 **데이터 정합성**은 어떻게 유지해야 할까?
    • [초안] Kafka 실전 설계: 파티션 전략, 컨슈머 그룹, 전달 보장, 재시도, 순서 보장 트레이드오프
    • [학습중] Kafka 파티션·리밸런스·컨슈머 지연 운영
    • 메시지 전송 신뢰성
    • [초안] Spring Kafka 컨슈머 오프셋 커밋과 트랜잭션 정렬: AckMode, manual ack, 멱등 처리
  • linux 페이지로 이동
    • fsync — 리눅스 파일 동기화 시스템 콜
    • tmux — Terminal Multiplexer
  • mlops 페이지로 이동
    • llm-serving 페이지로 이동
    • serving-frameworks 페이지로 이동
    • Python CUDA 버전 생태계 — nvidia-smi, nvcc, pip, conda가 다 다른 버전을 말하는 이유
    • GPU 컨테이너의 CUDA 버전 호환성 — nvidia-smi부터 이미지 다이어트까지
    • Kubernetes GPU 노드에서 /run tmpfs가 꽉 차서 Pod가 안 뜰 때
    • GPU·CUDA·MPS 기초 — 자바 백엔드 개발자가 처음 만나는 그림
    • Multi-process GPU 워크로드 — 자바 ThreadPool 사용자가 만나는 모델 차이
    • ML 서비스 성능 분석 워크플로 — 자바 백엔드 트러블슈팅과 다른 점
    • 한 GPU 를 여러 프로세스가 나눠 쓰기 — Time-Slicing 과 MPS
  • network 페이지로 이동
    • Connection reset by peer는 누가 보낸 걸까 — 리버스 프록시 홉마다 TCP 연결은 따로 논다
    • L2(스위치)와 L3(라우터)의 역할 차이
    • L4와 VIP(Virtual IP Address)
    • IP Subnet
  • python 페이지로 이동
    • Python async/await — CompletableFuture·Reactor 와 다른 점, 그리고 blocking I/O 함정
    • Python 의존성 관리 — Java Maven/Gradle 사용자가 만나는 첫 충격
    • FastAPI 기초 — Spring Boot 사용자가 빠르게 익히는 법
    • Java 개발자를 위한 Python 심화 — OOP·데코레이터·컨텍스트 매니저
    • PyTorch 기초 — 텐서, 디바이스, 그리고 모델 로딩이 무거운 이유
    • Java 개발자를 위한 Python 문법 핵심
    • ThreadLocal 에서 contextvars 로 — Python 의 요청 컨텍스트 전파
    • OCR 동작 원리 — Layout · Text · Post-process 3단계
    • Python 서버의 RSS 가 안 줄어드는 이유 — gc.collect 의 한계와 malloc_trim
  • rabbitmq 페이지로 이동
    • [초안] RabbitMQ Basics — 실전 백엔드 관점에서 정리하는 메시지 브로커 기본기
    • [초안] RabbitMQ vs Kafka — 백엔드 메시징 선택 기준과 실전 운영 관점
  • resume 페이지로 이동
    • [초안] 김병태 경력기술서
    • [초안] 김병태 포트폴리오
  • security 페이지로 이동
    • [초안] 시니어 백엔드를 위한 보안 / 인증 스터디 팩 — Spring Security, JWT, OAuth2, OWASP Top 10
    • [초안] Spring Security 6.x OAuth2 + JWT 상용 인증 설계 — Grant 선택, Resource Server, Refresh Rotation, 로그아웃
  • task 페이지로 이동
    • ai-service-team 페이지로 이동
    • nsc-slot 페이지로 이동
    • sb-dev-team 페이지로 이동
    • the-future-company 페이지로 이동
  • testing 페이지로 이동
    • [초안] 시니어 Java 백엔드를 위한 테스트 전략 완전 정리 — 피라미드부터 TestContainers, 마이크로벤치, Contract까지
  • thinking 페이지로 이동
    • 좋은 일을 넘어 중요한 일을 하는 법
FOS-BLOG · FOOTERall systems normal·v0.1 · 2026.04.27·seoul, kr
Ffos-blog/study

개발 학습 기록을 정리하는 블로그입니다. 공부하면서 기록하고, 기록하면서 다시 배웁니다.

visitors
01site
  • Home↗
  • Posts↗
  • Categories↗
  • Glossary↗
  • About↗
02policy
  • 소개/about
  • 개인정보처리방침/privacy
  • 연락처/contact
03categories
  • AI↗
  • Algorithm↗
  • DB↗
  • DevOps↗
  • Java/Spring↗
  • JS/TS↗
  • React↗
  • Next.js↗
  • System↗
04connect
  • GitHub@jon890↗
  • Source repositoryjon890/fos-study↗
  • RSS feed/rss.xml↗
  • Newsletter매주 1 회 · 한 편의 글→
© 2026 FOS Study. All posts MIT-licensed.
built with·Next.js·Tailwind v4·Geist·Pretendard·oklch
fos-blog/thinking/좋은 일을 넘어 중요한 일을 하는 법
thinking

좋은 일을 넘어 중요한 일을 하는 법

Richard Hamming의 You and Your Research를 7년차 백엔드·AI 엔지니어의 다음 성장 구간에 맞춰 다시 읽었다. 더 열심히 일하라는 글이 아니라, 어디에 힘을 쓰고 어떤 결과를 남길지 묻는 글이다. > 중요한 문제는 단순히 큰 문제가 아니다. 지금 가진 관찰과 수단으로 진전시킬 수 있고, 해결했을 때 다음 여러 문제의 비용까지 낮...

2026.07.20·10 min read·21 views

Richard Hamming의 You and Your Research를 7년차 백엔드·AI 엔지니어의 다음 성장 구간에 맞춰 다시 읽었다. 더 열심히 일하라는 글이 아니라, 어디에 힘을 쓰고 어떤 결과를 남길지 묻는 글이다.

중요한 문제는 단순히 큰 문제가 아니다. 지금 가진 관찰과 수단으로 진전시킬 수 있고, 해결했을 때 다음 여러 문제의 비용까지 낮추는 문제다.

이 글은 원문 전체 번역이 아니다. 강연의 핵심 논지를 선별해 해설하고, 지금의 엔지니어링 환경에 맞춘 적용 예시와 비판을 덧붙였다.

지금은 기술을 더 아는 것보다 방향을 고를 때다

주니어에게는 "어떻게 구현하는가"가 큰 문제다. 7년차쯤 되면 구현 자체보다 어떤 문제를 골라 어떤 형태로 남기는가가 성장 폭을 가른다.

백엔드 운영, 아키텍처 개선, RAG, AI 제품과 개발 자동화를 이미 경험했다면 다음 병목은 기술 목록이 아니다. 흩어진 경험을 하나의 문제의식으로 연결하고, 반복 가능한 방식으로 바꾸며, 조직이 사용할 수 있게 전달하는 능력이다.

Hamming은 뛰어난 연구자와 그렇지 못한 연구자의 차이를 40년 넘게 관찰했다. 그의 질문은 단순하다. 능력이 충분한 사람도 왜 오랫동안 기억될 만한 일을 하지 못하는가?

그가 찾은 답은 천재성 하나가 아니었다.

  • 문제 선택
  • 몰입과 용기
  • 작업 방식
  • 커뮤니케이션
  • 자기 관리

여기서 "연구"는 논문에만 한정하지 않는다. 아직 답이 없고, 해결하면 다음 여러 문제의 비용까지 낮아지는 엔지니어링 작업으로 넓혀 읽을 수 있다. 새로운 장애 복구 체계, 평가 가능한 AI 파이프라인, 팀 전체가 재사용하는 개발 도구도 충분히 연구적인 일이다.

핵심 논지는 여섯 문장으로 압축된다

중요한 문제를 가까이 둔다

영향이 크기만 한 문제가 아니라, 지금 가진 수단으로 진전시킬 수 있는 문제를 고른다.

기회가 오기 전에 준비한다

운은 사건을 정하지만, 준비된 문제 목록과 축적된 관찰은 그 사건을 성과로 바꾼다.

한 건을 문제군의 해법으로 바꾼다

오늘의 요청만 닫지 않고 내년의 비슷한 요청이 더 싸지는 구조를 남긴다.

집중과 노출을 번갈아 쓴다

깊게 만드는 시간과 무엇을 만들지 감지하는 시간을 의도적으로 분리한다.

이해되어야 결과가 된다

코드, 문서, 발표와 비공식 대화를 통해 다른 사람이 발견하고 사용할 수 있게 만든다.

자신의 성향도 설계 대상이다

의지력만 믿지 않고 약점과 환경을 이용해 중요한 일에 머무를 확률을 높인다.

이 글의 중심은 "위대한 사람이 되라"는 영웅주의가 아니다. 중요하다고 말하는 방향과 실제 캘린더가 일치하는지 확인하라는 운영 원칙에 가깝다.

중요한 문제는 크기가 아니라 접근 가능성까지 포함한다

Hamming이 말한 중요한 문제는 세상을 뒤집을 만큼 거대한 문제만을 뜻하지 않는다. 결과의 가치가 크면서도 현재의 지식, 위치와 도구로 유의미한 공격 경로가 보이는 문제다. 해결 가능성이 전혀 없는 거대 담론은 야심일 수는 있어도 좋은 작업 항목은 아니다.

중요한 문제는 다음 세 요소를 함께 만족한다.

  • 의미 있는 영향
  • 현실적인 접근 경로
  • 내가 가진 관찰 지점

이 관점은 백로그 우선순위와 다르다. 긴급한 업무는 오늘 처리해야 할 수 있지만, 중요한 문제는 앞으로 여러 분기의 비용 구조를 바꾼다. 둘을 같은 큐에 넣으면 긴급한 일이 항상 이긴다.

당장 닫는 문제중요한 문제로 다시 묻기
AI 응답 JSON이 또 깨졌다모든 모델 호출에서 구조 계약과 실패 분류를 어떻게 강제할까?
에이전트가 없는 클래스를 만들었다도메인 컨텍스트와 검증 절차를 실행 계약으로 어떻게 만들까?
운영 요청을 다시 수작업으로 처리했다사람과 에이전트가 함께 쓰는 안전한 CLI 경계는 무엇일까?
장애 한 건의 원인을 찾았다같은 종류의 실패를 먼저 드러내는 관측 신호는 무엇일까?

문제 포트폴리오를 유지한다

Hamming은 뛰어난 연구자들이 중요한 문제를 여러 개 품고 있다가 새로운 단서가 나타나면 연결한다고 보았다. 엔지니어에게는 거창한 연구 목록보다 5개 안팎의 문제 레이더가 현실적이다.

  • 지금 조직에서 반복적으로 비용을 만드는 실패는 무엇인가?
  • 기술은 있지만 아직 품질을 측정하지 못하는 영역은 어디인가?
  • 내 경험 두세 개가 같은 구조적 원인을 가리키는 지점은 어디인가?
  • 새로운 도구가 등장했을 때 가장 먼저 다시 검토할 문제는 무엇인가?
  • 6개월 뒤 해결되어 있다면 팀의 행동이 달라질 문제는 무엇인가?

백엔드와 AI를 각각 별도 경력으로 늘어놓기보다 불확실한 결과를 검증 가능한 시스템으로 바꾸는 문제처럼 두 경험을 관통하는 질문을 잡는 편이 강하다. 그러면 RAG 평가, 구조화 출력, 에이전트 검토, 장애 관측과 운영 자동화가 한 방향으로 축적된다.

노력의 양보다 다음 일을 싸게 만드는 축적이 중요하다

Hamming은 지식과 생산성이 복리처럼 쌓인다고 설명한다. 이 말을 야근의 정당화로 읽으면 핵심을 놓친다. 진짜 차이는 한 시간을 더 쓰는 데 있지 않고, 오늘의 한 시간이 내일의 학습과 실행 속도를 높이는 구조에 있다.

단리형 작업복리형 작업
문제 한 건을 직접 처리하고 끝낸다판단 기준과 자동화 도구를 남겨 다음 처리 시간을 줄인다
새 기술을 많이 읽고 북마크한다현재 문제에 연결해 작은 실험과 의사결정 기록을 남긴다
개인만 이해하는 빠른 구현을 만든다인터페이스를 좁히고 다른 사람이 확장할 수 있게 만든다
매번 좋은 프롬프트를 새로 쓴다컨텍스트, 실행, 검토를 재사용 가능한 하네스로 만든다

이미 다양한 시스템을 경험한 단계에서는 새 키워드를 하나 더 배우는 것보다 기존 경험 사이의 공통 구조를 추출하는 편이 더 큰 복리를 만든다. 문서화도 산출물의 포장이 아니라 기억을 재사용 가능한 판단 기준으로 바꾸는 작업이 된다.

문을 닫아 만드는 시간과 문을 열어 감지하는 시간이 모두 필요하다

원문은 문을 닫고 일하는 사람이 단기 생산성은 높지만, 시간이 지나면 약간 빗나간 문제를 열심히 풀 위험이 있다고 말한다. 반대로 문을 열어 둔 사람은 방해를 받지만 중요한 문제가 어디에 있는지 알게 된다.

오늘의 원격·메신저 환경에서 이를 문자 그대로 적용할 필요는 없다. 핵심은 집중 생산과 문제 탐색이 서로 다른 모드라는 점이다. 알림을 항상 켜 두는 것은 열린 문이 아니라 주의력 누수다.

깊게 만드는 블록

설계, 구현, 글쓰기와 실험처럼 연속된 사고가 필요한 작업을 90분에서 2시간 보호한다.

현실을 감지하는 블록

운영 문의, 사용자 관찰, 타 직군 대화와 리뷰에서 반복되는 마찰을 수집한다.

깊게 일하는 능력만으로는 충분하지 않다. 깊게 팔 곳을 계속 보정하는 감각이 함께 있어야 한다.

요청 한 건을 풀지 말고 문제군의 대표 사례로 다룬다

Hamming의 가장 엔지니어링다운 조언은 고립된 문제를 그대로 풀지 말라는 것이다. 눈앞의 사례를 더 넓은 문제군의 표본으로 보면, 해법은 코드 한 줄에서 인터페이스·도구·운영 방식으로 확장된다.

다만 모든 것을 플랫폼으로 만들라는 뜻은 아니다. 성급한 일반화는 사용 사례보다 추상화가 먼저 자라는 병을 만든다. 좋은 일반화는 반복 증거가 있고, 변하는 부분과 고정되는 부분이 보일 때 시작한다.

세 단계만 올려 본다

  1. 사건: 이번에 정확히 무엇이 깨졌는가?
  2. 패턴: 어떤 조건에서 같은 실패가 다시 생기는가?
  3. 레버리지: 다음 사람의 판단이나 실행 비용을 무엇으로 낮출 수 있는가?

수작업 운영을 CLI로 바꾸고, AI 코딩의 시행착오를 컨텍스트와 검토 워크플로로 바꾸고, 개별 모델 응답을 구조화된 파이프라인으로 다뤄 온 경험은 이 원칙과 맞닿아 있다. 다음 단계는 각각을 "내가 만든 것"으로 나열하기보다 반복되는 불확실성을 실행 가능한 계약으로 바꾸는 방식으로 명명하는 것이다.

이 관점은 사람용 CLI와 AI 에이전트용 CLI는 설계가 다르다와 하네스 엔지니어링에서 더 구체적인 설계 문제로 이어진다.

좋은 결과도 전달되지 않으면 조직의 능력이 되지 못한다

원문은 다소 거칠게 "일을 했으면 팔아야 한다"고 말한다. 여기서 판매는 과장이나 자기 홍보가 아니다. 바쁜 사람이 왜 이 결과를 봐야 하는지 이해하고, 신뢰하고, 실제로 쓸 수 있도록 전달 비용을 대신 치르는 일이다.

형식해야 하는 일흔한 실패
PR문제, 선택 이유, 위험과 검증 근거를 짧게 연결한다diff가 스스로 설명할 것이라 기대한다
설계 문서결론보다 판단을 바꾼 제약과 trade-off를 남긴다구현 상세를 길게 복제한다
데모기능 목록보다 전후 행동과 실패 경로를 보여준다행복 경로만 빠르게 통과한다
비공식 대화결정이 굳기 전에 짧고 명확하게 문제를 제기한다결정 후 긴 문서로 뒤늦게 반대한다

Hamming은 기술 발표가 세부로 너무 빨리 들어가는 문제도 지적한다. 시니어 엔지니어의 설명은 "무엇을 만들었는가"보다 "왜 이 문제가 중요하고, 기존에는 어디서 비용이 났으며, 무엇이 달라졌는가"에서 시작해야 한다. 세부 구현은 그 그림을 납득시키는 만큼만 보여준다.

조직을 탓하기 전에 내가 통제할 수 있는 구조를 만든다

Hamming은 좋은 조건이 반드시 좋은 결과를 만들지 않으며, 제약을 관점 전환의 재료로 사용하라고 말한다. 인력 부족은 자동화의 계기가 될 수 있고, 계산 자원 부족은 더 작은 해법을 찾게 할 수 있다. 중요한 것은 고통을 미화하는 일이 아니라 제약이 강제하는 질문을 발견하는 일이다.

자신의 약점을 도구처럼 쓴다

  • 마감이 없으면 늘어지는 편이라면 작은 데모 날짜를 먼저 공개한다.
  • 새 기술을 넓게만 읽는 편이라면 읽기 전에 현재 문제에 대한 가설을 먼저 쓴다.
  • 혼자 통제하려는 경향이 있다면 다른 사람이 쓸 수 있는 인터페이스를 완료 조건으로 둔다.
  • 완성도를 이유로 공유가 늦어진다면 결정 가능한 최소 문서를 먼저 보여준다.

전문 분야를 주기적으로 옮긴다

원문은 약 7년마다 인접 분야로 이동해 낡은 성공 공식을 반복하지 말라고 조언한다. 정확한 주기는 중요하지 않다. 한 분야에서 얻은 평판이 새로운 초보자 상태를 피하게 만들 때 의도적으로 경계를 넘으라는 뜻에 가깝다.

백엔드에서 AI 서비스와 에이전트 워크플로로 이동한 것은 단절이 아니라 좋은 인접 이동이다. 분산 시스템의 계약, 검증, 관측과 실패 처리를 확률적인 AI 결과에 적용할 수 있기 때문이다. 새 분야에서 강점은 유지하되, 기존 해법을 억지로 투사하지 않는 균형이 필요하다.

1986년의 조언을 그대로 믿지 않을 부분도 있다

이 강연은 강력하지만 특정 시대, 조직과 성공한 남성 연구자의 관찰에서 나왔다. 오늘 읽을 때는 다음 한계를 분명히 해야 한다.

과로와 스트레스는 위대함의 입장료가 아니다

원문은 가족과 건강의 희생, 높은 스트레스를 상당 부분 당연하게 취급한다. 이는 지속 가능한 성과의 보편 법칙이 아니다. 수면과 회복을 깎으면 판단력, 창의성, 관계와 장기 생산성이 함께 무너질 수 있다. 몰입은 필요하지만 자기 파괴는 전략이 아니다.

시스템에 적응하라는 말에는 윤리적 경계가 필요하다

사소한 관료주의와 싸우느라 에너지를 모두 쓰지 말라는 조언은 유효하다. 하지만 차별, 안전, 괴롭힘과 공익 문제까지 "일에 집중하라"는 이유로 넘길 수는 없다. 마찰 비용을 줄이는 적응과 잘못된 구조를 묵인하는 순응은 다르다.

중요한 성과는 개인 영웅만 만들지 않는다

현대 소프트웨어와 AI 시스템은 팀, 운영, 데이터, 보안과 제품 판단이 엮인 결과다. 개인의 문제 선택은 중요하지만, 크레딧 배분과 협업 구조도 성과의 일부다. 다른 사람이 올라설 수 있는 어깨를 만든다는 원문의 표현은 개인 이름보다 공유 기반을 남긴다는 쪽으로 읽는 편이 낫다.

읽고 끝내지 않는 4주 적용 루틴

새로운 생산성 시스템을 크게 만들 필요는 없다. 한 달 동안 문제 선택과 실제 시간 사용을 연결해 보는 정도면 충분하다.

첫째 주: 문제 레이더 만들기

반복 비용이 크고 접근 경로가 보이는 문제를 5개 적는다. 각 문제마다 지금 아는 단서와 모르는 것을 한 줄씩 붙인다.

둘째 주: 큰 생각 시간을 캘린더에 고정하기

주 90분을 확보해 "어디가 변하고 있는가, 내가 가진 경험은 어디에 연결되는가"만 검토한다. 이 시간에는 구현하지 않는다.

셋째 주: 사례 하나를 문제군으로 올리기

최근 해결한 건 하나를 골라 사건, 반복 패턴, 재사용 가능한 레버리지로 다시 쓴다. 추상화가 아니라 다음 한 건의 비용 감소로 검증한다.

넷째 주: 전달하고 시간 배분을 감사하기

동료 한 명에게 10분 설명한 뒤 질문을 기록한다. 지난 4주 캘린더가 중요하다고 말한 방향과 실제로 일치했는지 확인한다.

매주 금요일에 보는 체크리스트

  • 이번 주 가장 많은 시간을 쓴 일이 정말 중요하다고 생각하는 방향과 일치했는가?
  • 긴급 업무를 처리하면서 반복 패턴을 하나라도 발견했는가?
  • 내 문제 목록에 새로운 기술이나 운영 단서가 연결되었는가?
  • 다른 사람이 재사용할 수 있는 코드, 문서, 도구 또는 판단 기준을 남겼는가?
  • 집중과 현실 노출 가운데 한쪽으로만 치우치지 않았는가?

결국 남겨둘 질문은 세 가지다

내 분야에서 지금 정말 중요한 문제는 무엇인가? 그중 내가 실제로 접근할 수 있는 문제는 무엇인가? 이번 주 캘린더는 그 답을 믿고 있다는 증거인가?

Hamming의 강연이 오래 살아남은 이유는 성공 공식을 제공해서가 아니다. 능력이나 환경을 핑계 삼기 전에 자신의 문제 선택을 정직하게 보게 만들기 때문이다. 좋은 일을 꾸준히 해온 사람에게 이 질문은 더 날카롭다. 이제 필요한 것은 일을 더 많이 잡는 것이 아니라, 이미 가진 힘이 한 방향으로 축적되게 만드는 선택일 수 있다.

참고 링크와 편집 기준

  • Richard W. Hamming, You and Your Research

원문은 1986년 3월 7일 Bell Communications Research Colloquium에서 진행된 강연의 전사본이다. 이 글의 경력 맥락에 맞춘 적용 예시와 비판적 보정은 편집자의 해석이며 Hamming의 원문 주장과 구분된다.

on this page
  • 01지금은 기술을 더 아는 것보다 방향을 고를 때다
  • 02핵심 논지는 여섯 문장으로 압축된다
  • 중요한 문제를 가까이 둔다
  • 기회가 오기 전에 준비한다
  • 한 건을 문제군의 해법으로 바꾼다
  • 집중과 노출을 번갈아 쓴다
  • 이해되어야 결과가 된다
  • 자신의 성향도 설계 대상이다
  • 03중요한 문제는 크기가 아니라 접근 가능성까지 포함한다
  • 문제 포트폴리오를 유지한다
  • 04노력의 양보다 다음 일을 싸게 만드는 축적이 중요하다
  • 05문을 닫아 만드는 시간과 문을 열어 감지하는 시간이 모두 필요하다
  • 깊게 만드는 블록
  • 현실을 감지하는 블록
  • 06요청 한 건을 풀지 말고 문제군의 대표 사례로 다룬다
  • 세 단계만 올려 본다
  • 07좋은 결과도 전달되지 않으면 조직의 능력이 되지 못한다
  • 08조직을 탓하기 전에 내가 통제할 수 있는 구조를 만든다
  • 자신의 약점을 도구처럼 쓴다
  • 전문 분야를 주기적으로 옮긴다
  • 091986년의 조언을 그대로 믿지 않을 부분도 있다
  • 과로와 스트레스는 위대함의 입장료가 아니다
  • 시스템에 적응하라는 말에는 윤리적 경계가 필요하다
  • 중요한 성과는 개인 영웅만 만들지 않는다
  • 10읽고 끝내지 않는 4주 적용 루틴
  • 첫째 주: 문제 레이더 만들기
  • 둘째 주: 큰 생각 시간을 캘린더에 고정하기
  • 셋째 주: 사례 하나를 문제군으로 올리기
  • 넷째 주: 전달하고 시간 배분을 감사하기
  • 매주 금요일에 보는 체크리스트
  • 11결국 남겨둘 질문은 세 가지다
  • 12참고 링크와 편집 기준
tags
#사고법#커리어#연구

댓글 (0)