본문 바로가기
항해/독서

[개발자로 살아남기]

by ggoboogi_house 2022. 3. 27.
반응형

[개발자로 살아남기]

제목 : [개발자로 살아남기]
초판 1쇄 발행 :  2022년 01월 01일
지은이 : 박종천
출판사 : 골든래빗



 

  제목이 조금은 자극적이지만, 그래도 내용이 궁금해서 구매하게 되었다.

게다가 저자분이 스타크래프트의 한글패치를 만드신 박종천님이라고하여 더 관심을 가지게 되었다.

개발자로서 30년을 지낸 고수 선배님의 10년 x 3 단위의 커리어패스를 제안하는 내용이 매우 인상깊었다.

 

책 내용이 나에게는 개인적으로 배울점이 많은 내용이어서 기록하고 싶은 내용들을 적어본다.

아래 기록한 내용의 모든 저작권은 저자와 출판사 그리고 원출처의 저작자에게 있음을 밝힌다. 일부 이미지들은 책 내용 혹은 원출처를 바탕으로 일부 재구성한 것도 있다.

---------------------------------------------------------------------------------


- 소프트웨어는 과학, 기술, 엔지니어링, 수학이 잘 융합된 STEM(Science, Technology, Engineering, Mathematics)의 결정체
- 한 개발자가 여러 프로그래밍 언어를 사용할 줄 알아야 하는 폴리글랏(polyglot) 프로그래밍 시대
- 소프트웨어를 개발하면서 왜, 어떻게, 무엇을 누가, 언제까지 출시해야 하는지를 종합적으로 고려해야 함
- 특정 언어나 도구와 사랑에 빠지면 안된다. 사랑에 빠지면 최적의 언어와 도구를 선택하지 못한다. 현업에 바쁘더라도 6개월 주기로 새로운 기술과 도구를 확인하고 공부하는 기간을 갖자
- 스택오버플로 2020년 개발자 리서치 결과에 따르면 Go 언어는 배우고 싶은 언어 4위, 미국에서 연봉이 높은 언어 2위에 올랐음. 오케스트레이션 시스템인 쿠버네티스, 컨테이너 시스템이 도커, 리뉴얼한 드롭박스에 사용됨
- TIOBE와 깃허브에서 발표하는 프로그래밍 언어 순위(흐름)을 참고하면 좋다.

출처 : https://insights.stackoverflow.com/survey/2021 내용 재구성

 

<폴리글랏 프로그래밍 시대>
- 한 개발자가 여러 프로그래밍 언어를 사용할 줄 알아야 하는 시대
- IT 산업에서 10년은 너무나 유구한 시간
   - 2016년 자바는 2위였으나 2021년 5위
   - C#, PHP도 밀렸고, TYPESCRIPT와 Go, 코틀린이 부상
- 세상이 빨리 변하므로 개발자는 유행보다는 기본 지식을 쌓는데 투자해야함
- 프로그래밍 언어는 유행을 따르는 도구일 뿐, 빠르게 새로운 걸 터득하는 능력과 기반 지식이 중요
- 그 중 ‘영어’는 개발 지식을 습득하는 지식이므로 중요! 그 다음은 수학과 물리
- 자료구조, 알고리즘, 운영체제, 하드웨어 공부
- 개발자는 평생 공부하는 직업

- 아이폰 출현 이후 사용자 인터페이스 뿐만 아니라 사용자 경험(User Experience, UX)까지 챙기는 시대가 되었다. 한발 더 나아가 고객 경험(Customer Experience)도 고려하는 시대가 되었음.

<고객이 원하는 제품을 디자인 하는 방법론>
- 경쟁 제품 분석 – 단순히 동작을 정리하는 건 의미가 없음, 그렇게 설계한 이유를 밝혀내고 분석하는 것
- 고객 여정 – 제품 기획과 개발 단계에서 고객 여정을 설정하고 미리 시뮬레이션 하며 각 과정을 숫자로 정의되어야 함
  ex) ‘페이스북 광고에 1만 건을 노출시켜, 신규 고객 1000명이 우리 웹사이트에 들어오면, 계정 생성은 500명이고, 제품을 확인하는 사용자는 400명이고, 구매하는 사용자는 100명이다’ 와 같이...
- A/B 테스트
  새로운 기능을 추가하거나 바꾸고 싶을 때 전체 사용자 중 일부에게는 기존 기능을, 나머지에게는 새 기능을 제공하여 그 결과를 비교하는 방법
  최소기능제품(Minimum Viable Product, MVP) 시대에 적합. 최소한의 기능을 좋은 품질로 만들어서 빠르게 시장에 내고 계속 시장 반응을 보면서 업데이트하는 개발 방법.
  제품 기획자가 한 달을 끙끙대며 최대한 사용자의 생각을 예측하는 것보다 그 시간에 기능을 개발해서 일부 사용자들에게 배포하고 반응을 살피는 것이 더 확실한 방법임

<고객이 원하는 제품을 디자인 하는 방법론>
- 데이터 주도 개발
  사람의 인사이트도 중요하지만 실제 사용자의 행동을 데이터로 모아서 분석해야 최고의 선택을 할 수 있음
- 피터 드러커 – “측정할 수 없으면 관리할 수 없고, 관리할 수 없으면 개선할 수도 없다"
- 도그푸딩(Dogfooding) – ‘내가 만든 개밥을 스스로 먹어라(‘Eat your own dog food’)’라는 말에서 유래
  본인이 만든 제품을 직접 써보라
  저자 사례 - <디아블로3> 개발 완료 후 출시 전 회의에서 마이크 모하임 대표의 질문 ‘여기서 이 게임을 끝까지 다 해보고 재밌다고 생각하는 사람 손 들어보세요‘ -> 회의장 침묵 -> ‘여기 있는 모든 디렉터가 엔딩을 보고 재밌다고 생각이 들면 그때 출시하겠습니다‘ -> 출시 잠정 연기 후 몇 개월 후 출시 및 대성공
  모두가 사용자가 되어야 좋은 제품을 만들 수 있다.

 

- 기본적으로 비용(리소스/인력), 시간(출시일), 제품 범위(기능) 세 가지를 관리하는 것
- 기업 입장에서는 기능을 모조리 넣으면서, 최대한 출시일을 앞당기고, 인력을 최소한으로 쓰고 싶어함
  => 불가능한 이야기
- 시간과 인력은 늘 부족하지만 만들고 싶은 것은 무한, 그래서 균형이 필요

- 매니지먼트 5가지 소프트 스킬(soft skill)
- 소통, 협업, 긍정적인 자세, 프로의식, 리더십
- 리더라면 특히 소통과 리더십을 갖춰야 함
- 소통에서는 투명성(transparency), 리더십에서는 인사이트가 중요 

- 시간을 아끼는 최고의 방법은 낭비를 없애는 것
- 시간을 잡아먹은 주요 요인
  필요 없는 코드
  개발 과정에서 기다림(다음 과정이 준비되지 않았기 때문에)
  불명확한 요구사항
  내부 정치
  느린 내부 소통
- 해결책 : 계획을 세워서 명확한 요구사항을 만들고, 관리자가 큰 틀에서 목표와 비전을 가지고 정리해 내부 소통을 개선해서 내부 정치를 사라지게 하면 됨. 소통이 원활해지면 투명성이 높아지므로 엉뚱한 정치가 안 먹히게 됨

- 중요한 일을 해야지 급한 일의 늪에 빠져서는 안됨
- 자신이 삶을 주도하고 시간을 주도하면서 프로액티브(proactive)하게 살아야 함

- 테크니컬 리드는 끊임없는 고민으로 일을 성공시키는 능력을 키워 앞으로 전진하는 역량을 개발해야 함
- 기술, 업계 제품에 대한 공부를 꾸준히 해야 함
- 새로운 사업을 하면 새로운 제품을 만들게 되어 있음. 테크니컬 리드는 거기에 필요한 기술과 해결책을 찾아내야 함 -> 모르는 것을 아는 것으로 바꾸는 능력이 테크니컬 리드에게 가장 중요

 

<조엘 테스트(Joel’s test)>

01. 소스 코드 관리 시스템을 사용하고 있습니까?
02. 한 방에 빌드를 만들어낼 수 있습니까?
03. 일일 빌드를 하고 있습니까?
04. 버그 추적 시스템을 운영하고 있습니까?
05. 코드를 새로 작성하기 전에 버그를 수정합니까?
06. 일정을 업데이트 하고 있습니까?
07. 명세서를 작성하고 있습니까?
08. 조용한 작업 환경에서 일하고 있습니까?
09. 경제적인 범위 내에서 최고 성능의 도구를 사용하고 있습니까?
10. 테스터를 별도로 두고 있습니까?
11. 프로그래머 채용 인터뷰 때 코딩 테스트를 합니까?

12. 무작위 사용 편의성 테스트를 수행하고 있습니까?

 

- 회사는 직원이 필요한 리소스를 공급하고 계속 격려해주어야 한다

- 성과도 중요하지만 성장도 중요하다. 성과와 성장이 연결되지 않으면, 현재의 성과는 지속될 수 없다.
- 지금 성장해야 미래의 성과도 보장이 된다. 자연스럽게 이 둘이 연결해야 한다.

- 직원은 회사에서 의미 있는 일을 했을 때, 가장 행복하고 만족감을 느낀다.
- 무엇인가를 해냈을 때, 업무 자존감이 높아질 때, 직원은 행복을 느낀다

- 여러분이 훌륭한 관리자가 되고 싶다면, 문제 있는 직원을 만나라
- 반대로 훌륭한 직원이 되고 싶다면, 문제 있는 관리자와 일해야 성장한다
- 다른 사람의 약점은 자신의 감정을 키울 기회이다

<조직 문화에 변화주기>
- “변화를 하겠다“는 말을 하지 않아야 한다
- 변화는 천천히 조금씩 안보이게 시도하는 것이 중요
 -‘변화를 해야지‘라고 생각을 하지만 변화를 말하는 순간 움츠러든다

- 습관을 바꿀 때는 작은 것부터 시작해야...
 -작은 습관부터 건드려서 아예 없애야 새로운 습관을 들일 수 있다

 

- 시간 관리는 결국 시간을 쓰는 프로세스를 바꾸는 것
- 목표와 계획을 세우고 실천한 뒤 측정하고 반복하면서 최적화해야 함
- 한 조사에 따르면 전 세계 인구의 10% 정도만이 뚜렷한 목표를 가지고 살고, 그 중의 10%만이 계획을 세우고, 그 중 10%만이 실천한다고 함

- 정말 하고 싶은 일이 있다면 명확한 목표를 세우고, 달성에 드는 시간을 쓸 계획을 세우자

- 시간 관리는 회사 뿐만 아니라 인생의 숙제!

---------------------------------------------------------------------------------

 저자분을 직접 뵌 적은 없지만, 책을 읽는 내내 친한 형, 선배가 살아가며 삶으로 터득한 귀한 경험을 조곤조곤 이야기해주는 것 같았다. 혹시나 만나뵈면 감사함을 전하고 싶다.

 이 책을 읽으며 삶을 잠시 돌아볼 수 있는 시간이 되었던 것 같다. 좋은 질문이 좋은 답을 가져온다고 하는데, 
     나는 어떤 개발자가 되고 싶은가?
     나는 왜 일하는가?
     내 삶의 목표는 무엇인가? 

     ....

등등 내 자신에게 삶을 돌아보는 질문을 해볼 수 있는 시간이 되었던 것 같다.

 

<Reference>

- https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=285013226

- https://insights.stackoverflow.com/survey/2021

- https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/

 

"본 포스팅의 목적은 감명 깊게 읽은 책을 개인적으로 기록하고 다른이들에게 추천하기 위함입니다. 책의 본문 내용을 직접 기록한 경우 해당 부분을 눈에 띄게 표시하였으며, 저작권에 문제가 될 경우 바로 삭제하겠습니다."

반응형