Be an engineer, not a coder

  • 엔지니어링은 문제를 해결하는 것
  •  해결해야 할 명확한 문제라는 ‘제약’을 추가하면 엔지니어는 자신이 적합하다고 생각하는 방식으로 솔루션을 탐색하고 만들 수 있는 자유를 누릴 수 있음
  • 최고의 엔지니어들은 제품 중심적이며, 무엇보다도 사람을 위한 문제 해결을 최우선으로 생각하며, 이는 다음 단계로 이어짐

Code for the human, not the computer

  • 코드는 컴퓨터뿐만 아니라 인간을 위한 것
  • 코드는 그 코드를 읽고, 유지 관리하고, 당신의 코드 위에 빌드하는 같은 팀 엔지니어를 위한 것

Detach from the code itself

  • 코드 자체에 집착하지 않음
  • 최종 결과물이 전반적으로 더 좋아질 수 있다면 90% 정도 완성된 코드라도 삭제하고 다시 시작하는 것을 두려워하지 않음
  • 피드백을 적극적으로 받아들임

Use consistent standards

  • 코드를 작성할 때 일관된 표준과 코딩 스타일을 고수할 것
  • 읽기 쉬운 코드가 된다.

Write simple code

  • 생성하기엔 복잡했을 수도 있지만, 결국엔 읽고 이해하기 쉬운 코드를 생성
  • 좋은 방법은 SOLID 원칙과 같은 원칙을 따르는 것.
    • Single Responsibility: 한 클래스는 하나의 책임만 가져야 함
    • Open-Closed: 소프트웨어 객체(클래스, 모듈 등)는 확장에는 개방적이지만 수정에는 폐쇄적이어야 예측 가능하고 유지 관리 가능한 코드를 만들 수 있음
    • Liskov Substitution: 하위 유형은 프로그램의 정확성에 영향을 주지 않으면서 기본 유형으로 대체할 수 있어야 함
    • Interface Segregation: 코드가 모든 것을 사용하지 않는 거대한 인터페이스에 종속되어서는 안 됨. 대신 패키지는 더 작은 특정 인터페이스를 포함하고 임포트할 수 있도록 허용해야 함
    • Dependency Inversion: 상위 레벨 모듈이 하위 레벨 모듈에 종속되어서는 안 되며, 둘 다 추상화에 종속되어 보다 유연하고 분리된 시스템 설계를 촉진해야 함

적어도 한 가지 분야에 대한 깊은 도메인 지식을 가짐.

자신을 자주 그리고 적절하게 마케팅함.

우리 조직은 지난 50일간 어떻게 일해왔나

참고