2025-10-05

1일 1아티클

REFACTORING ENGLISH

개발 철학 9가지

소개

  • 20년 경력의 SW 엔지니어의 개발 철학에 영향을 준 9가지 소프트웨어 에세이

1. 조엘 테스트

  • “당신의 회사는 개발자를 존중하고 있는가?”에 대한 12가지 질문 리스트

2. 검증 말고 파싱하라

  • 데이터를 단순 검증에서 그치지 않고, 검증 완료된 데이터를 새로운 타입으로 파싱하여 사용
  • ex. 사용자가 입력한 아이디를 validate에서 나아가 parse하여 검증 성공한 아이디만 Username 타입으로 변환하여 사용 → 항상 안전함이 보장됨

3. No Silver Bullet

  • 소프트웨어 개발의 복잡성은 본질적 복잡성부수적 복잡성으로 나뉘며, 본질적 복잡성을 획기적으로 줄일 수 있는 기술은 없다!
  • 본질적 복잡성 : 비즈니스 규칙 정의와 같이, 반드시 해야 하는 핵심 고민
  • 부수적 복잡성 : 컴파일 대기, 라이브러리 사용법을 익히는 등 도구로 해결 가능한 부차적 문제

최신 기술은 부수적 복잡성을 줄일 뿐, 본질적 복잡성을 고민하는 개발자를 완전히 대체할 수 없다.

4. 선택

  • 사용자에게 선택지를 제공하는 것은 그들에게 생각하고 결정하라는 부담을 주는 것
  • 따라서, 불필요한 선택지는 최소화해야 한다.

개발자가 사용자 대신 현명한 결정을 내릴 수 있다면, 그렇게 해야 한다.

5. 호환성 계층은 고객을 위한 것

  • 사용자의 행동 유도 시, 사용자 입장에서 가장 저항이 적은 경로를 설계해야 한다.
  • ex. 인증되지 않은 편법이 사용자 문제를 해결한다면, 사용자는 편법을 쓰게 될 것. 개발자는 이러한 사용자 심리를 이해하고 시스템 개발 필요

6. 테스트 코드에 로직을 넣지 마라

  • 좋은 테스트 코드는 복잡성을 줄이는 것보다 명확성이 더 중요
  • 테스트 코드에서까지 중복 제거를 위해 변수, 헬퍼 함수 사용하는 것은 지양

7. 약간의 순수 자바스크립트로 많은 것이 가능하다

  • Vanilla JS는 매우 강력, 복잡한 프레임워크(React, Vue) 없이도 대부분의 웹 개발 가능
  • 프레임워크는 의존성 문제, 복잡한 디버깅 유발

8. 지루한 기술을 선택할 것

  • 새 프로젝트 시작 시, 최신 유행 기술보다는 오래되고 검증된 지루한 기술을 선택하는 것이 더 안정적
  • 최신 기술은 미확인 버그 및 약점이 많아, 문제 발생 시 해결이 어려움

9. 내 디지털 생활에서 나 자신이 잠겼다

  • 모든 디지털 기기가 한 번에 먹통이 되는 최악의 상황 대비
  • 디지털 재난 시나리오를 미리 점검하고 대비할 것

BONUS. 사용자 입력 처리

  • 사용자가 전화번호나 카드 번호 입력 시, 불필요한 문자(공백, 하이픈, etc.)는 시스템이 알아서 제거해야 한다.
  • 사용자에게 엄격한 형식을 강요하지 말 것

오늘 배운 것

내일 할 일

참고자료

results matching ""

    No results matching ""