2024-01-27 에 대전에서 열린 "K-DevCon" 기록입니다.
강연 들으면서 기록하느라 다소 이상한 내용이 있을 수 있습니다.
Session 1) Coding test
- 못들음..
Session 2) Testing
- 테스트 피라미드
- unit test: 빠르고 비용이 적음
- integration test: 느리고 비용이 큼
- 테스트 트로피
- e2e test: 20
- integration test: 60
- unit test: 20
- 정도의 비중으로 가져가는 것
- msa 구조의 유행으로 unit test 보다는 microservice 들의 integration 의 중요성이 늘어남
- 테스트 대역
- 테스트 하고자 하는 부분의 종속성을 가진 부분에 대해서는 대역 (스턴트맨 등) 을 두어서 테스트 과정에서의 종속성을 제거하는 것
- Dummy: 가짜 데이터?
- Stub: 종속성을 가진 함수 호출에 대해 “미리 정해진”, “일관된” 답변을 응답하는 놈
- Fake: Stub 이랑 비슷하지만 일관된 답변이 아닌 실제 구현본의 shortcut? 을 이용해 유사하게 동작하게 하는 것
- Mock (모의 객체): 예상된 입력에 대해 정해진 답변을 제공? Stub 이랑 뭔차이 인지는 모르겠음
- Mock 이 실제 구현과 비슷해지면 프로덕션 환경과 비슷해져서 유지보수가 어려워진다
- 그래서 내가 핸들링하지 못하는, SMTP, 결제, 알람 모듈 등 써드파티를 사용할 때 이용하면 좋다는 듯
- 테스트 코드도 코드이기 때문에 유지보수가 필요하고, 따라서 유지보수의 필요성이 적어지게 작성하는 것이 좋다
- 깨지기 쉬운 테스트를 지양해라
- 테스트 코드 간의 종속성이 너무 얽혀 있어서 A 를 테스트하기 위한 테스트코드가 변경되었을 때 B 테스트가 실패하는 경우
- Tip1) 공개 API 를 활용해 테스트 진행
- 상태를 테스트해라? 함수의 구현보다는 함수의 입출력 상태에 기반해서 테스트 코드 작성?
- Fixure / Setup / Teardown
- Fixture: 일관된 테스트를 진행하기 위한 환경
- Setup: 테스트하기 위한 데이터들을 설정
- Teardown: 다음 테스트를 진행하기 위해 Setup 에서 설정한 데이터를 다시 원복
- JSON 을 활용해서 테스트 데이터를 정의해 놓자
- 테스트 제목을 잘 지어서 어떤 테스트를 하는 코드인지 한번에 파악 가능하도록 해라
- BDD Pattern
- DCI
- Describe: 누가
- Context: 어떤 상황에서
- It: 어떻게 작동
- DCI
- 테스트 코드를 디버깅해야 하는 상황은 피해라
- 조건, 반복문을 피해라
- 논리를 넣지 말고 하드코딩을 활용해라
- 특수 케이스를 잘 잡아라
- 엣지 케이스
- 코너 케이스: 특수한 조건들이 겹쳐서 발생하는 이슈
- 순수 함수 활용
- 동일한 입력에 대한 동일한 출력을 반환하는 함수
- 를 활용하라
- 변할 수 있는 값 (뭐 현재시간 등) 은 함수 내에 포함하지 않고 입력을 받도록 해라
Session 3: 링크드인 활용하기
- 시작하기
- 프로필 업데이트
- 인맥 늘리기
- 인맥의 글 들에 추천 / 좋아요 누르기
- 인맥들의 글들을 짧은 글과 함께 repost 하여 내 관심사를 퍼트리기
- 적극적인 PR 을 위해서는 프로필 노출 항목 을 전체 공개로 설정하는 것이 좋음
- 인맥 관리하기
- 1촌의 수를 늘리는 것이 좋음
- 1촌의 주변 인물들에게 1촌 추천으로 우선 노출되기 때문
- 작성한 글들도 1촌들에게 우선적으로 노출되어 퍼져나가기 때문
- 1촌은 페이스북 팔로우와는 달리, 질 좋은 인맥만을 선별하여 connect 하기 위한 개념
- 따라서 1촌 신청/수락은 3만번 정도로 횟수가 제한 되어 있고, 500명 정도의 1촌을 유지하는 것이 권장됨
- 누군가에게 1촌 신청할때나, 혹은 그 분이 수락했을 시에 간단한 감사인사를 남기는 것이 좋음
- 1촌의 수를 늘리는 것이 좋음
- 퍼스널 브랜딩 전략
- 정체성
- 나는 어떠한 사람인가?
- 방향성
- 그 정체성과 관련있는 활동을 하였는가?
- 꾸준한 활동
- 이러한 활동을 얼마나 오랫동안 지속해 왔는가?
- 정체성
- 한줄프로필 (헤드라인) 작성법
- 직무전문성 - 정체성을 드러낼 수 있는 최대 5개 정도의 키워드 작성
- 어떻게 적어야 할 지 모르겠다면, 동종 업계의 인원을 검색해서 키워드 참고하기
- 현재의 직무 외에도 미래에는 어떤 것을 해보고 싶다 등의 미래 지향적인 키워드 들을 넣어놓는 것도 좋음
- 간단프로필 작성법
- 포트폴리오 + 간단 소개
- 혹은, 커버레터 (직무 전문성을 나타내는 간단한 자기소개 문구) 를 넣어도 좋음
- 업무 분야 및 역할
- 관심 분야
- 경력 및 학력 작성법
- 회사 간략 소개
- 나의 역할 / 업무
- 주요 기술
- 최신순으로 나열, 그리고 경력 내의 직책이 여러개일 경우 중요도 순대로
- 보유 기술
- 직무를 대표하는 기술이 먼저 보이게 작성하는 것이 좋음
- 기술 평가 혹은 동료에게 추천 기능 활용
- 모든 항목을 되도록이면 영어로 작성 (국내에서도 키워드 검색 등에서 영문을 많이 활용)
- 깔끔한 프로필 사진, Full name 기재
- 글 올리기
- 최근 글들을 보면서 트랜드 및 작성법 파악
Session 4: 연봉협상
- 연봉 협상과 통보?
- 통보: 평가 후 “일방적으로 통보”
- 협의: 평가 후 “제시 후 협의”
- 정성적 / 정량적 평가?
- 인사 평가 제도를 숙지?
- 셀프 리뷰
- 그간의 실적을 회고
- 실적들을 수치화
- 추가적인 자기개발 등의 열정 어필?
- 협상에 성공하기
- 준비가 부족
- 스스로에 대한 평가를 철저히 하지 못함
- 어차피 안될 것 같으니까 지래짐작하여 포기
- 통보를 받았을 때 그냥 accept 하지 말자 -> 이때부터가 협상의 시작이다
- 기준점 수치화 필요
- 이런식으로
- 첫 제안 금액 (최선)
- 만족 금액 (차선)
- 결렬 금액 (최악)
- 이러한 수치를 정해두지 않으면 협상 내내 휘둘리다가 별 소득 없이 끝난다
- 그리고 이러한 기준점에 대한 데이터에 기반한 근거가 있어야 한다
- 정당한, 객관적인 이유
- 또한 이러한 기준점에 대한 제스처도 생각을 해야 한다
- 이런식으로
- 감정 컨트롤을 해야 한다
- 싸우러 가는 것이 아니다 -> 이 협상에 나온 사람도 결정권자가 아닌 중개인의 입장으로 온 것이다
- 설득력이 없는 개인 사정 등의 근거를 대지 말것
- 다른 회사랑 비교하지 말 것 -> 회사마다 업무와 사정이 다르기 때문
- 까내려도 문제의 본질 (희망 연봉의 간격을 줄이는 것) 을 잊지 말고 감정에 휘둘리지 말어라
- 공통의 적 만들기? 협상자와의 공통의 적을 생각해 내서 서로를 악으로 만드는 것이 아닌 제 3의 악에 대응하는 식
- 연봉과 성과급을 혼동하지 마라
- 연봉은 미래의 가치이고
- 성과급은 과거의 가치이다
- 따라서 협상 중에 과거의 실적만을 어필할 것이 아니고 이것을 기준으로 미래에는 어떠한 가치를 회사에 안겨줄 것인지를 어필할 것이다
- 자신감이 반이다
- 침묵 전략: 먼저 제시하지 마라
- 얼마 받고 싶냐고 물어보면 얼마 생각하셨냐고 역질문 해보기
- 시간 끌기: 모호한 워딩? 으로 질질 끌기?
- 내 이야기는 줄이고 사측의 상황을 들으면서 상황 파악
- 듣다가 나중에 다시 얘기하자고 미루기 등
- 준비가 부족
- 결정권자도 통보한 연봉에 상향 버퍼가 있다
- 판례를 만들기 싫어서 안된다라고 하면, 대신 보너스로 달라는 식 혹은 복지 향상 등의 협상사례