Professionalism

최완식·2023년 6월 13일
0

Clean Coder

목록 보기
1/14
post-thumbnail

프로는 어떤 마음가짐을 가져야 하는가?

함부로 바라지 마라

  • Professionalism
    • 명예와 긍지
    • 책임과 의무

책임감을 가져라

  • 제대로 테스트하지 않고 물건을 보냈을 때 발생한 사건에 대해 말한다.
  • 제품이 완성됨을 확신하지 않고서 납품하여 큰 문제가 발생했다.
  • "제때 납품했다는 체면"을 위해 관리자는 이러한 결정을 했다.
  • 고객과 회사의 입장을 생각하지 않았다.
  • 책임감을 가졌다면 테스트가 불확실하기 때문에 납품할 수 없다는 결정을 내렸을 것이다.
  • 물론 그 사이에서 언쟁이 있었겠지만, 보다 중요한 가치를 지킬 수 있었을 것이다.

무엇보다도 해를 끼치지 마라

기능에 해를 끼치지 마라

  • 오류를 만들지 마라.
  • 소프트웨어는 복잡하기 때문에 0으로 만들수는 없다는 것, 안다.
  • 불가능하다와 괜찮다는 다르다.
  • 불완전함에 책임을 져라.
  • 본인이 책임을 진다면 문제를 바라보는 관점이 달라질 것이다.
  • 어떻게 하면 에러를 줄일 수 있을까? (본인 책임이므로.)
  • 발생하는 에러에 대해 사과해라.
  • 그리고 같은 오류를 반복하지 마라.
  • 경력을 쌓으면서 오류를 만드는 비율을 0에 가깝게 만들어라.
  • 그게 프로다.

QA는 아무것도 찾지 못해야 한다.

  • 코드의 결함이 있다는 것을 안 상태로 QA에 코드를 보내는 것은 프로답지 못하다.
  • 결함이 있는 코드 == 확신을 갖지 못하는 코드
  • QA를 오류를 찾는 용도로 사용하지 마라.
  • 비용 측면에서도 손해, 회사 입장에서도 손해, 소프트웨어 입장에서도 손해.
  • QA에서 문제가 발생할 때마다. 분함을 느껴야 하는 것이 당연하다.

제대로 작동하는지 알아야 한다.

그러기 위해서 테스트가 중요하다.

  • 테스트하는데 시간이 너무 오래걸려요!
    • 그러니까 자동화해야 한다.
  • 그럼 어느정도를 단위 테스트로 만들어야 하나요?
    • 모조리 다 해라. 100% 커버리지를 강력히 요구 한다.
  • 어떤 코드는 테스트하기 어려운데요?
    • 그건 너가 테스트하기 어렵게 설계해서 그렇다.
    • 테스트 코드를 먼저 작성하고 로직을 짜라. 이게 TDD

구조에 해를 끼치지 마라

  • 구조가 좋아야 코드가 유연해진다.
  • 구조를 유연하게 만들지 못하면 수익 모델까지 취약해진다.
  • 변경을 할때 터무니없는 비용을 치르지 않고 변경할 수 있어야 한다.
  • 이러지 못한 프로젝트가 많다.
  • 그런 경우 관리자들은 속도를 빠르게 하고자 개발자들을 더 고용한다.
  • 이는 구조에 오히려 악영향을 미친다.
  • 실제로 조금 바꿔보고 바꾸기 쉬운지 판단해봐라.
  • 그럼 코드는 언제 바꿔야 할까?
    • 매일 바꿔라! 가만히 있는 것이 더 위험하다.
  • 하지만 무서운걸요..
    • 그래서 테스트가 있어야 한다.

직업 윤리

  • 자신의 경력은 자신이 책임져야 한다.
  • 자기 경력을 회사에 맡기는 개발자에게 재난이 있을 것이다.
  • 일과 시간을 제외하고 하루에 3시간을 확보해라.
  • 주 60-80시간을 사용해라.

전산 분야 지식을 익혀라

  • 급격히 발전해서, 오래된 아이디어는 쓸모 없지 않나요?
    • 일단 급격히 발전하는 것은 맞다.
    • 하지만 뒷부분을 틀렸다. 오히려 더 중요할 수도 있다.
  • 디자인 패턴
  • 설계 원칙 (SOLID)
  • 방법론 (XP, Scrum, etc.)
  • 원칙 (TDD, CI, etc.)
  • 도구 (UML, etc.)

끊임없이 배우기

  • 새 언어를 배우지 않는 프로그래머에게 재난이 있을 것이다.
  • 책, 기사, 블로그, 트윗을 읽어라.
  • 컨퍼런스에 가라.
  • 모임에 참가하라.
  • 스터디 그룹에 들어가라.
  • 낯선 것을 배워라.

연습

  • 다루는 툴의 숙련도를 높여라.
  • 간단한 문제 (알고리즘)을 풀어라.
  • 잊지 싫은 기술에 대해 꾸준히 노력해서 잊지 않게 만들자.

함께 일하기

  • 함께 일하는 것은 배움에 도움이 된다.
  • 짝 프로그래밍도 해봐라.
  • 함께 할수록 많이 배운다.

멘토링

  • 배우기 가장 좋은 방법은 가르치는 것이다.
  • 머릿속에 중요한 내용을 각인 시키는 가장 좋은 방법은 이야기 하는 것이다.
  • 그렇기에 가장 큰 이득을 보는 것은 선생님이다.
  • 또한 프로라면 후배들을 멘토링하는 책임도 있다. 떠돌게 되서는 안된다.

업무지식을 익혀라

  • 자신이 맡은 도메인에 대한 이해가 필요하다.
  • 회계라면 회계, 지도라면 지도.
  • 따져보지도 않고 그저 스펙에 맞게 코딩하는 것은 최악이다.

회사와 고객에 동질감을 가져라

  • 회사의 문제가 자신의 문제다.
  • 회사의 입장에서 문제를 해결하는 것이 프로다.

겸손

  • 자신의 능력에 확신을 갖되, 내가 실패할 수도 있다는 것을 알아라.
  • 그리고 실패했다면 가장 먼저 웃어라. 기꺼이 받아들여라.
  • 다른 사람의 실수에도 망신을 주지 말아라. 언젠가 그 자리에 내가 있을수도 있다.

Reference

profile
Goal, Plan, Execute.

0개의 댓글