본문 바로가기

잡학다식

상위 1% 엔지니어의 7가지 간단한 습관

728x90
반응형

엘리트 코더가 다른 코더보다 뛰어난 능력을 발휘하는 방법

1. 코더가 아닌 엔지니어가 될 것 (Be an engineer, not a coder)

  • 엔지니어링은 단순히 코드를 작성하는 것이 아니라 문제를 해결하는 데 초점이 맞춰져 있습니다.
  • 최고의 엔지니어는 코드를 단순한 도구로 간주하며, 사용자를 위한 솔루션 설계에 집중합니다.
  • 코드를 작성하는 즐거움이 있지만, 목적 없는 코드는 의미가 없습니다. 코딩은 사람들에게 가치를 제공하는 창의적인 솔루션을 만들어 내는 과정입니다.
  • 창의성은 제약 조건 속에서 더욱 빛납니다. 해결해야 할 명확한 문제라는 제약이 추가되면 엔지니어는 솔루션을 탐색하고 구현하는 데 자유로울 수 있습니다.
반응형

2. 컴퓨터가 아닌 인간을 위한 코드 (Code for the human, not the computer)

"바보라도 컴퓨터가 이해할 수 있는 코드를 작성할 수 있습니다. 훌륭한 프로그래머는 인간이 이해할 수 있는 코드를 작성합니다." - 마틴 파울러

  • 코드는 컴퓨터뿐만 아니라 인간(동료 개발자, 사용자)을 위한 것입니다.
  • 유지보수 및 확장 가능성을 염두에 둔 코드는 팀과 사용자 모두에게 가치가 있습니다.
  • 고객의 요구를 충족하지 못하는 코드는 프로덕션 단계로 넘어가지 못합니다.

3. 코드 자체에서 벗어나기 (Detach from the code itself)

  • 뛰어난 엔지니어는 코드 자체에 집착하지 않고, 목표 달성을 위해 필요하다면 90% 완성된 코드도 삭제하고 새로 작성할 수 있습니다.
  • 피드백을 적극적으로 받아들이며, 코드는 개인적인 것이 아니라고 인식합니다.
  • "20년 후 당신의 코드 대부분은 기술 부채가 되거나, 더 이상 사용되지 않거나, 다시 작성될 가능성이 높다"는 점을 깨닫는 것이 중요합니다.

4. 일관된 표준 사용 (Use consistent standards)

  • 일관된 코딩 표준과 스타일은 코드의 가독성과 유지보수성을 높입니다.
  • Meta와 Google 같은 대규모 회사는 스타일 가이드를 통해 확장 가능하고 유지 관리가 쉬운 코드를 만듭니다.
  • 팀을 위해 Linter를 설정하고 포맷팅을 자동화하는 것은 장기적으로 매우 유용합니다.

5. 간단한 코드를 작성 (Write simple code)

  • 복잡하게 작성했더라도 결과적으로 읽고 이해하기 쉬운 코드를 만드는 것이 중요합니다.
  • 깔끔하고 체계적이며 논리적인 코드 작성은 SOLID 원칙을 따름으로써 가능해집니다.
    • 단일 책임 원칙(Single Responsibility): 클래스는 하나의 책임만 가져야 합니다.
    • 개방-폐쇄 원칙(Open-Closed): 확장에는 열려 있고 수정에는 닫혀 있어야 합니다.
    • 리스코프 치환 원칙(Liskov Substitution): 하위 클래스는 상위 클래스의 역할을 대체할 수 있어야 합니다.
    • 인터페이스 분리 원칙(Interface Segregation): 거대한 인터페이스 대신 작고 명확한 인터페이스를 사용해야 합니다.
    • 의존성 역전 원칙(Dependency Inversion): 상위 모듈과 하위 모듈 모두 추상화에 의존해야 합니다.
  • 좋은 코드 작성을 위한 핵심은 명확하고 설명적인 이름을 짓는 것입니다.

6. 의외성을 허용하지 않음 (Don’t allow surprises)

  • 코드는 항상 예측 가능해야 하며, 이를 위해 적절한 테스트가 필수적입니다.
  • 테스트는 코드의 명확성과 예측 가능성을 높이고 자신감을 제공합니다.
  • 테스트 유형:
    • 단위 테스트(Unit Test): 개별 컴포넌트 및 함수 테스트
    • 통합 테스트(Integration Test): 여러 컴포넌트 간 상호작용 테스트
    • 엔드투엔드 테스트(E2E Test): 사용자 관점에서 전체 시스템 평가
  • 테스트는 간단해야 하며, 실패한 테스트를 통해 문제를 쉽게 파악할 수 있어야 합니다.

7. 자주 소통하기 (Communicate often)

  • 훌륭한 시스템은 팀의 협업과 소통에서 나옵니다.
  • 설계 검토, 피드백 요청, 코드 리뷰는 더 나은 결과물을 만드는 데 필수적입니다.
  • 간단한 방법으로 팀과 소통:
    • 중요한 풀 리퀘스트에 리뷰어 추가
    • 빠른 피드백을 위해 팀원에게 요청 보내기

8. 빠르게... 그리고 느리게 코딩하기 (Code fast… and slow)

  • 프로젝트는 빠르게 완료하지만, 코딩은 신중하게 접근합니다.
  • 초기 단계에서 시간을 투자하면 장기적으로 더 많은 시간을 절약할 수 있습니다.
  • 서두르다 장애물에 부딪히는 것보다 신중하게 코딩하여 효율성을 높입니다.

9. 맹목적으로 규칙을 따르지 말 것 (Don’t follow rules blindly)

  • 모든 규칙은 가이드라인일 뿐이며, 모든 상황에 적용되는 것은 아닙니다.
  • 규칙에서 벗어난 이유를 문서화하여 후속 작업을 돕는 것이 중요합니다.
728x90

최고의 엔지니어의 또 다른 특징

  • 한 가지 분야에 대한 깊은 도메인 지식을 보유합니다.
  • 자신과 자신의 전문성을 적절히 마케팅하여 팀과 조직 내에서 가치를 인정받습니다.

이러한 습관과 원칙을 바탕으로, 여러분도 상위 1% 엔지니어로 성장할 수 있습니다!

728x90
반응형