[개발자로 살아남기]
제목 : [개발자로 살아남기] 초판 1쇄 발행 : 2022년 01월 01일 지은이 : 박종천 출판사 : 골든래빗 ![]() |
제목이 조금은 자극적이지만, 그래도 내용이 궁금해서 구매하게 되었다.
게다가 저자분이 스타크래프트의 한글패치를 만드신 박종천님이라고하여 더 관심을 가지게 되었다.
개발자로서 30년을 지낸 고수 선배님의 10년 x 3 단위의 커리어패스를 제안하는 내용이 매우 인상깊었다.
책 내용이 나에게는 개인적으로 배울점이 많은 내용이어서 기록하고 싶은 내용들을 적어본다.
아래 기록한 내용의 모든 저작권은 저자와 출판사 그리고 원출처의 저작자에게 있음을 밝힌다. 일부 이미지들은 책 내용 혹은 원출처를 바탕으로 일부 재구성한 것도 있다.
---------------------------------------------------------------------------------
- 소프트웨어는 과학, 기술, 엔지니어링, 수학이 잘 융합된 STEM(Science, Technology, Engineering, Mathematics)의 결정체
- 한 개발자가 여러 프로그래밍 언어를 사용할 줄 알아야 하는 폴리글랏(polyglot) 프로그래밍 시대
- 소프트웨어를 개발하면서 왜, 어떻게, 무엇을 누가, 언제까지 출시해야 하는지를 종합적으로 고려해야 함
- 특정 언어나 도구와 사랑에 빠지면 안된다. 사랑에 빠지면 최적의 언어와 도구를 선택하지 못한다. 현업에 바쁘더라도 6개월 주기로 새로운 기술과 도구를 확인하고 공부하는 기간을 갖자
- 스택오버플로 2020년 개발자 리서치 결과에 따르면 Go 언어는 배우고 싶은 언어 4위, 미국에서 연봉이 높은 언어 2위에 올랐음. 오케스트레이션 시스템인 쿠버네티스, 컨테이너 시스템이 도커, 리뉴얼한 드롭박스에 사용됨
- TIOBE와 깃허브에서 발표하는 프로그래밍 언어 순위(흐름)을 참고하면 좋다.
<폴리글랏 프로그래밍 시대>
- 한 개발자가 여러 프로그래밍 언어를 사용할 줄 알아야 하는 시대
- 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)>
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/
"본 포스팅의 목적은 감명 깊게 읽은 책을 개인적으로 기록하고 다른이들에게 추천하기 위함입니다. 책의 본문 내용을 직접 기록한 경우 해당 부분을 눈에 띄게 표시하였으며, 저작권에 문제가 될 경우 바로 삭제하겠습니다."
'항해 > 독서' 카테고리의 다른 글
[Quantum Computing: An Applied Approach] (0) | 2022.04.04 |
---|---|
[Building Machine Learning Powered Applications - 머신러닝 파워드 애플리케이션] (0) | 2022.03.28 |
[장면들] (0) | 2022.03.01 |
[빛의 양자컴퓨터] (0) | 2022.03.01 |
[오은영의 화해] (0) | 2022.02.28 |