진로 탐색 log/특강 기록

[특강 정리] 좋은 개발자란?

조녁 2021. 8. 21. 00:38
반응형

 

 

 

 

안녕하세요~

27년차 진로탐색꾼 조녁입니다!! 요즘 정말 하루가 어떻게 가는 줄 모르겠습니다...

 

정말 좋은 양질의 컨텐츠를 통해 잘 성장하고 있는데, 그 와중에 들었던 특강 중 "라이엇 게임즈 유석문 CTO"님께서 좋은 개발자란 어떤 것인 지 특강 해주신 내용이 너무 인상적이어서 남깁니다!!

 

바쁘신 분들을 위해 한줄 요약하면 TDD 할 줄 모르는 사람은 뽑지않습니다. 라고 하셨습니다 ㅎㅎ 

 

1.개발자 ???

 

Q. 여러분은 왜 프로그래머가 되려고 하시나요?

→ 여러분의 즐거움이 있다면 화장실이든 어디든 개발할 수 있다. 그러나 여러분을 소진하고 있다면 쉬어가야 한다.

 

1.1 개발자 ??? or ?????? (개발놈..)

상황 : 3~5년 경력 Java 경력 기술면접, stack 구현 조차 못하며 핑계를 댄다.

즉, 개발자를 뽑으려고 했을 때 개발놈(?)이 너무 많다. 왜? 

 

1.2 개발(놈) Begins - 업무 할당

상황 : (주니어로 입사해서 과제를 받음) 이 일을 언제까지 끝낼 수 있겠나?

아마 이렇게 수행할 것이다. 구글링 → 복붙 → 되는 것처럼 보일때까지 삽질

 

1.3 개발(놈)의 탄생 주역

  • 기술적 조언 없이 <시간> 관리만 하는 "나쁜 상사"
  • 개발자의 발전을 고려하지 않는 "탐욕스러운 회사"
  • 내가 할려는일에 관심이 없고 변화가 싫은 "비협조적인 동료"

⇒ 위의 세가지는 "통제할 수 없는 외부요인"이다. 그렇다면 우리는 무엇을 할 수 있을까?

 

1.4 개발자의 필수능력

  1. 깔끔한 코드 작성능력
  2. 사람이 이해하기 쉬우면 → 변경이 용이하면 → 유지보수 비용이 낮은 코드
  3. 적절한 논리력
  4. 원리 탐색 능력 → 제약조건을 고려한 해법 → 단순한 디자인

 

1.5 깔끔한 코드 작성법

  1. Acceptance Test Driven Development(ATDD) : 고객의 요구사항 충족
  2. Test Driven Development (TDD) : 만든 테스트를 만족하는 코드를 생산
  3. 작성법
    1. 사용하는 코드"만" 만들기(Caller Create) - dead code 미련없이 지우기 , 나중에 다시보면 dead code인 지 모를 수 있다. 만약 아깝다면 버전 관리로 다시 받으면 된다.
    2. 리팩토링(Refactoring) - 내가 코드를 바꿔도 외부에 드러나는 속성 변화가 없어야한다. e.g) 일상에서도, 카톡보낼 때 우리는 내용을 적고 한번쯤 확인한다.
    3. 코드 읽기(Code Review) - merge 하기전 누군가 봐주고 조언해주는 것도, 다른 사람들의 코드를 보면서 실력 늘리는 것도 중요하다.
    4. e.g) 소설을 쓴다해도 다른 사람들의 소설을 읽어보듯이, 코드도 다른 사람들의 좋은/나쁜 코드를 보면서 배울 수 있다.

 

1.6 적절한 논리력

  • 알고리즘과 데이터 구조(Don't Reinvent The Wheel)
  • 단순한 디자인(Simple Design)
  • 진화적 디자인(Evolutionary Design)
  • 협업(Cooperative Design , Design Review)
  • 기술 벤치마킹(Benchmarking)

 

1.7 실천법

지금까지 들은 건 "운동하면 건강해져요" 같은 이야기, 그럼 어떻게 실천하지?

  • 꾸준한 연습(Daily Practice) = (동기부여 요소 찾자) e.g 몸값 올리는 시간
  • 멀리가고 싶다면 함께 가라. - 마음맞는 사람들과 함께 하라.
  • 현재 필요한 만큼만 하라. - 선언 미리해두지 마라.
  • 간단하게 하라.

 

 

2. 좋은 개발자 ???

 

2.1 좋은 OO 개발자???

  • 도메인은 다양하므로 "시간 변동성"이 크다.
  • 그러나! "좋은" 개발자의 요건(공유, 협업)은 시간 변동성이 없다.

 

2.2 공유하는 매우 현실적인 이유

  1. 주변이 똑똑해져야 내가 편함
    1. 사고를 수습하는 일이 줄어듬
    2. 중요한 일을 할 여유를 가질수 있음
  2. 좋은 평판을 얻을 수 있음
  3. 주변의 덕을 볼 확률이 올라감 : 경력이직 시, 오퍼가 온다.

 

2.3 공유 대상

  • 무엇이든! , 실패한 것일수록 다른 사람들의 시행착오를 줄여줄 수 있다. 전혀 창피할 것이 아니라, 내가 그 시간을 투자해서 알게된 것이다.
  • 새로운 기술은 내가 써보고 공유해야한다. (장단점 정도는 알아야 한다)
  • 잘난척 No, 때론 재밌는 것도 O.K

 

2.4 협업

  • 쉽지않은 것은 분명하다. "고슴도치도 제 새끼는 함함하다."
  • 사내 상황 : 기획자 , 개발자 , QA 각각 자신의 산출물에 대한 비판을 싫어한다.

 

2.5 협업의 필수요소 : 자아존중감

본성은 바꿀 수 없지만, 외부의 자극에 반응하는 방식은 바꿀 수 있다.

  1. 자신이 존중 받을 가치가 있다고 믿음
  2. 있는 그대로의 자신을 인정함
  3. 타인의 부정적 견해에 크게 영향 받지 않음

 

 

3. 좋은 개발자 !!!

 

 

<영역별 적용점 적어보기>

공유, 협업 : "함께 자라기" 책 8월달에 읽고 독후감쓰기.

논리력 : 알고리즘 공부 계획 세워보기

좋은 코드 작성 능력 : "파이썬 클린코드" , 함께 공부할 친구들 구하기.

피드백 : 하루,한주, 한달 단위로 회고하기.

실천력 : 부캠 매일 공부한 것 정리하기.

도메인 지식: 논문 읽기

 

 

"연습이 완벽을 만든다!" (Practice makes perfect!)

 

→ 김연아는 몇번을 연습했을까를 상상해보고 , 조용히 키보드 앞에 앉아야겠다.

반응형