본문 바로가기
Book

커리어 스킬

by Soono991 2023. 3. 26.
 

커리어 스킬 | 존 손메즈 - 교보문고

커리어 스킬 | 프로그래머가 되고 싶나요? 프로그래머로 성공하고 싶나요?전 세계 많은 사람이 같은 고민을 하고, 같은 질문을 던졌다. 이에 대한 대답을 모은 이 책은 출간 즉시 아마존 베스트

product.kyobobook.co.kr

 

챕터

  • 소프트웨어 개발자로 입문하기
    • 이 책의 활용법
    • 입문하기
    • 당신이 배워야 하는 기술
    • 기술을 발전시키는 방법
    • 프로그래밍 언어 고르기
    • 첫 번째 프로그래밍 언어 배우기
    • 대학 진학하기
    • 코딩 부트 캠프
    • 독학
  • 일자리 구하기
    • 인턴십
    • 경력 없이 일자리 구하기
    • 일자리를 구하는 방법
    • 이력서 만들기
    • 면접 절차
    • 연봉과 협상
    • 퇴사하는 법
    • 소프트웨어 개발자로 전향하기
    • 타 기술직에서 개발직으로 옮겨오기
    • 계약직 vs. 정규직
    • 헤드헌팅 업계의 작동 방식
  • 소프트웨어 개발에 대해 알아야 할 것
    • 프로그래밍 언어 개요
    • 웹 개발이란 무엇인가?
    • 모바일 개발
    • 백엔드 개발
    • 비디오 게임 개발
    • DBA와 데브옵스
    • 소프트웨어 개발 방법론
    • 테스트와 QA 기초
    • 테스트 주도 개발과 단위 테스트
    • 소스 제어
    • 지속적 통합
    • 디버깅
    • 코드 유지 보수
    • 직업과 직함
    • 업무 유형
  • 개발자로 일하기
    • 동료 대하기
    • 상사 대하기
    • QA 대하기
    • 일과 삶의 균형
    • 팀에서 일하기
    • 설득하기
    • 적절한 복장 갖추기
    • 좋은 평가 받기
    • 편견에 대처하기
    • 좋은 리더 되기
    • 연봉 인상과 승진
    • 기술 분야에 종사하는 여성
  • 경력 발전시키기
    • 좋은 평판 쌓기
    • 인맥과 커뮤니티
    • 최신 기술 따라잡기
    • 제너럴리스트 vs. 스페셜리스트
    • 강연과 콘퍼런스
    • 블로그 만들기
    • 프리랜서와 창업
    • 진로
    • 고용의 안정성과 보장
    • 교육과 자격증
    • 사이드 프로젝트
    • 추천 도서
    • 마치며

 

기억에 남는 문장

더보기

이 책의 활용법

이 책에 적힌 내용을 실행하지 않는 사람에게 이 책은 아무 도움이 되지 않는다.

-p035

 

입문하기

소프트웨어 개발은 언제나 해결할 문제를 이해하는 지점에서 시작한다.

-p043
어떤 유형의 소프트웨어 개발자가 되고 싶은지 구체적인 목표를 세워라.

목표는 구체적일수록 좋다.

어떤 소프트웨어 개발자가 되고 싶은지 가능한 한 구체적인 목표를 세울수록 모든 것이 더 쉬워진다.
그래야 무엇을 배워야 할지, 계획의 단계별로 어떤 일을 해야 할지 명확히 알 수 있다.

-p048
계획을 세워둔다는 점이 중요하다.
언제든 상황에 맞게 계획을 조정해도 된다.
하지만 애초에 계획 없이 시작하면 아무 방향으로나 목적 없이 떠다니느라 답답한 상황만 이어지다가 결국 포기할 가능성이 크다.

-p051

 

당신이 배워야 하는 기술

한 가지 프로그래밍 언어를 꼼꼼히 배우는 데 집중하라.
진짜 자신감을 느끼는 언어가 적어도 하나는 있어야 한다.

-p054

 

기술을 발전시키는 방법

경험을 통해 배우는 방법이 원래 어디에든 잘 맞다.
특히 기술을 익힐 때는 이 방법이 두말할 것 없이 최고다.
책을 읽거나 튜토리얼 동영상을 보는 것만으로 기술을 배운다는 건 어불성설이다.
특정 기술이나 프로그래밍 언어, 도구로 무엇을 할 수 있는지 정도는 이해할 수 있지만 실제 그 기술을 써서 문제를 해결해 본 경험이 없다면 해당 기술에 대한 이해가 표면적인 수준에 그칠 수밖에 없다.

기술을 제대로 활용할 능력을 얻으려면 책에서 배운 지식으로는 부족하다.
프로그래밍 언어까지는 어떻게 알 수 있을지도 모른다.
하지만 문법을 읽어보는 것만으로 소스 제어 사용법을 정말 알 수 있을까?

그저 안다고 착각한 것뿐이다.

책을 읽는 데서 멈추지 않는 것이 핵심이다.
이 책을 읽는 단계는 여기서 언급한 내용을 피상적으로 배우는 단계다.
하지만 어느 시점이 되면 읽은 내용을 경험을 통해 숙지할 수 있도록 책을 내려놓고 실습하는 시간을 가져야 한다.
(적어도 기술을 그렇게 배워야 한다.)

-p070
지식이 부족한 부분을 확인해 두어서 나중에 그 기술을 배워야 할 때 어디를 봐야 할지 알게 한다는 뜻이다. 당신이 “아, X로 그걸 할 수 있는지 몰랐어요!”라는 말 대신 “X로 그걸 할 수 있는 건 알고 있어요. 방법은 잘 모르지만, 방법은 나중에 배우면 되죠.”라는 말을 할 수 있게 만드는 게 내 목표다.
목공을 배우려는 사람이 전동 공구나 라우터가 있다는 걸 모른다고 상상해 보라.
이러한 도구의 사용법까지는 몰라도 된다.
하지만 도구의 존재조차 모른다면 매우 불리하게 시작하는 거라고 볼 수 있다.

-p073
기술 발전에 도움이 될 마지막 방법은 그 기술을 이미 잘 알고 있는 전문가가 쓴 글을 열심히 읽는 것이다.

때로는 전문가의 의견을 듣는 것만으로 혼자서는 얻기 어려운 깊은 통찰을 얻는다.

-p075
특히 발전이 정체되고 있다고 느낄 때 조심해야 한다.
확실한 계획과 명확한 목표를 따라가는 한 기술은 분명 발전할 것이다.
꾸준히 해나가는 데 의의가 있으니 그저 끈기 있게 정진하라.

-p076

 

프로그래밍 언어 고르기

어떤 언어를 배우느냐는 진짜 생각만큼 중요하지 않다.

많은 프로그래밍 언어가 알고 보면 근본적으로 매우 비슷하다는 점이다.

-p078

 

첫 번째 프로그래밍 언어 배우기

기본 문법과 사용법을 알면 모든 언어의 프로그래밍 기본을 깨우치게 된다.

자신이 무엇을 공부하는지, 배운 내용이 어떻게 적용되는지 항상 이해하도록 노력하라.

-p090
기존 코드를 한 줄씩 살펴보면서 각 줄과 문장이 그 코드에서 어떤 역할을 하는지 정확히 파악하라.
(이유까지는 모르더라도 어떤 작업이 진행되고 있는지는 알아내라.)

-p092

 

코딩 부트 캠프

시간은 돈이다.
(그리고 돈은 시간이다.)
돈을 버는 데 시간을 투자하라.
번 돈은 더 많은 돈을 버는 데 써라.
그리고 벌어들인 순수익은 시간을 되사는 데 써라.

-p112

 

독학

무슨 일이든 혼자 힘으로 하려면 반드시 계획이 있어야 한다.

무엇을 공부할지 계획을 세워라.
얼마의 기간을 들일지, 목표로 하는 수준에 이르기까지 구체적으로 어떤 단계를 거칠지도 계획하라.
처음부터 계획이 완벽할 필요는 없다.
실행하는 도중에 수정해도 괜찮다.
시간을 들여서 고민해 보고 현실적인 학습 계획을 세우는 게 핵심이다.

일정을 미리 정해두고 마치 거기에 목숨이 걸린 것처럼 지켜라.

일정을 지키지 않는 사람은 거의 실패한다.

-p131
소프트웨어 개발자 한 명 정도는 알고 지내는 게 좋다.
질문이 생길 때 물어보거나 꼭 필요할 때 도움을 청할 수 있는 사람 말이다.

자신이 다른 사람의 멘토가 될 수 있을지도 고민해 보라.
특정 주제를 깊이 있게 이해하는 데 다른 사람을 가르치는 것보다 더 좋은 방법은 없다.
게다가 자신이 받은 도움을 다른 사람에게 베풀면 기분도 좋다.

-p132 ~ p133

 

인턴십

인턴십은 조직에서 학생이나 신입으로 입사하는 사람에게 임시로 제공하는 일자리를 가리킨다.
무급일 수도, 유급일 수도 있다.
다른 일자리와 달리 인턴 자리에 지원한 사람에게는 업무 경험을 요구하지 않는다.
그래서 입문자에게는 정말 좋은 기회다.
경험이 없으면 일자리를 구하기 어렵고 일자리가 없으면 경험을 쌓기 어렵다.
이 유명한 딜레마를 아는가?
-p138

경력 없이 일자리 구하기

소프트웨어 개발자라면 블로그가 있어야 한다.
개발자로서의 경력이 많든 적든 상관없다.
자신이 배운 내용을 공유하고 자신이 주력하기로 한 소프트웨어 개발 분야에 대한 글을 써라.

-p149
다른 사람이 어떻게 생각하는지는 알 바 아니다.

-p153
내 성공에 다른 무엇보다 도움이 된 것은 바로 끈기 있는 태도였다.
경험이 부족하다면 진취적인 태도로 이를 보충해야 한다.

-p159

 

이력서 만들기

이력서는 지원자가 어떤 사람인지 지원한 회사에 어떤 도움이 될지 빠르고 효과적으로 전달해야 한다.

-p180
궁극적으로 자신이 어떤 기술을 갖추었고 어떤 분야가 전문인지, 그 기술로 과거에 어떤 훌륭한 결과를 냈는지, 그리고 지원하는 자리에서 그 기술을 어떻게 활용할지 아주 명확하게 보여주어야 한다.

-p181
이력서의 초점을 자신이 무엇을 원하느냐가 아니라 자신이 어떤 가치를 제공하느냐에 맞춰라.

-p182

 

퇴사하는 법

한 자리에 필요 이상으로 오래 머물렀다는 사실, 이제 떠날 때가 되었다는 사실은 어떻게 알 수 있을까?
가장 알아채기 좋은 지표는 발전 여부다.
그 자리에서 새로운 도전의 기회를 기대할 수 없고 소프트웨어 개발자로서 (그리고 한 인간으로서) 성장할 여지 또한 없다는 느낌이 든다면 이직하라는 신호로 생각하라.

하지만 불편하다는 느낌이 없으면 성장은 불가능하다.
성장의 기회를 충분히 제공하는 일자리가 많은 만큼 어떤 도전이나 성장도 기대할 수 없는 일자리도 많다.

성장하지 않으면 죽어가고 있는 것이다.
성장해야 한다.

자신의 근무 환경이 유해하다고 느낀다면 언젠가 변할 거라는 헛된 기대를 버리고 하루빨리 탈출하라.

끊임없이 정신적으로 학대하는 근무 환경은 절대 용납하지 마라.

-p224
퇴사할 때는 언제나 깔끔하게 마무리하고 떠나라.

-p230
자신이 떠난 뒤에 업무가 엉망이 되지 않아야 본인에게 득이 된다.
퇴사한 후에 자기가 하던 업무에 문제가 생겨야 자신의 가치를 증명할 수 있다는 못난 생각을 하는 소프트웨어 개발자가 많다. 사실은 그 반대가 옳다.
좋은 리더는 새로운 직장을 구한 그 순간부터 후임을 교육한다.
자신이 퇴사한 후에도 모든 일이 순조롭게 진행되도록 팀, 회사, 업무 절차, 기반 시설 등을 잘 만들어두어야 그 사람의 진가가 증명된다는 걸 아는 사람이 좋은 리더다.

퇴사 후에도 팀이 제대로 기능할 수 있도록 문서화 작업을 최대한 많이 해두고 자신이 알고 있는 지식도 가능한 한 많이 회사에 남기고 가라.

-p231

 

소프트웨어 개발자로 전향하기

다른 분야에서 소프트웨어 개발 분야로 전향한 이들의 큰 강점은 소프트웨어 개발 분야에서 찾아보기 어려운 대인 관계 기술과 소프트 스킬을 갖추고 있다는 것이다.

-p234

 

웹 개발이란 무엇인가

좋든 싫든 소프트웨어 개발자라면 웹 개발의 기본이라도 알아야 한다.
사실 오늘날 소프트웨어 개발자 대부분은 웹 개발자다.

웹 개발자가 될 생각이 없더라도 웹 개발, 웹의 작동 방식과 주요 기술의 유형 정도는 알아둬야 한다는 뜻이다.

-p286

 

백엔드 개발

자신이 작업 중인 가장 일반적인 기술 스택에 관한 폭넓은 지식을 갖추기 위해 노력하라.
단, 그중 깊이 있는 지식을 갖출 핵심 분야를 한두 개 골라야 한다.

기술 스택 전반에 대해 일반적인 지식을 갖추되 일부 영역에 대해 전문성을 갖는 게 현명하다.

-p312

 

디버깅

코드 베이스에서 문제의 근원을 찾아서 그 문제를 일으킬 만한 요인을 가려내고, 여러 가설을 시험해 보는 과정을 통해 뿌리가 되는 진정한 원인을 찾고 그 원인을 제거한 후, 다시는 그 문제가 일어나지 않도록 하는 것이 디버깅이다.

-p397
100퍼센트 재현할 수 없는 문제는 디버깅할 수 없다.
재현할 수 없는 문제는 디버깅하는 게 의미가 없다.
재현할 수 없는 문제는 디버깅할 수 없을 뿐 아니라 고친다 해도 고쳤는지 확인할 수도 없다.
그러므로 디버깅하기 전에 버그부터 재현하라.

-p399
“문제를 고칠 때는 자신이 한 해우이가 어떻게 그 문제를 고쳤는지 이해해야 한다.”
그 문제가 왜 고쳐졌는지 이해하지 못하면 아직 문제를 다 고친 게 아니다.

문제를 고쳤다면 거기서 멈추지 말고 조금 더 나아가라.
애초에 문제를 일으킨 원인이 정확히 무엇이었는지, 어떻게 고친 것인지 제대로 이해하라.

무엇이 망가졌고 왜 어떻게 고쳤는지 이해해야 할 뿐 아니라 고쳤다는 걸 확인하는 절차도 반드시 거쳐야 한다.

-p404 ~ p405

 

업무 유형

면접에서 가장 중요하게 생각하는 질문도 지원자가 최신 기술을 익히기 위해 어떤 노력을 하느냐다.

어려운 문제를 만날 때마다 그때그때 필요한 내용을 배울 줄 알아야 한다.

꾸준히 학습하지 않으면서 좋은 소프트웨어 개발자가 된다는 건 어불성설이다.
그러므로 공부하자.

-p430
자신이 만드는 시스템의 요구 사항을 잘 이해해야만 좋은 개발자가 될 수 있다.
이 말은 고객이나 이해 당사자와 대화하고 해결할 도메인 지식을 갖추고 문제를 이해할 수 있어야 한다는 뜻이다.

-p433

 

동료 대하기

다른 이를 기꺼이 도와주고 지원하는 태도를 견지하라.

-p440
본인이 할 일만 신경 써라.
자신이 해야 할 일을 하고 자신의 생산성을 최대한으로 높이는 데 집중하라.
다른 사람이 무엇을 해야 하고 하지 말아야 할지에 대해 고민하지 마라.

그냥 조용히 자기 할 일을 최선을 다해서 하라.

-p444

 

팀에서 일하기

주변 사람을 더욱 훌륭하게 만들어서 팀 전체의 능력을 신장시키는 개발자야말로 진정 훌륭한 개발자다.
누구나 데려가고 싶어 하는 좋은 개발자가 되고 싶다면 팀 전체의 기량과 실적까지 신경 쓸 능력을 갖춰라.
자신이 직접적으로 통제하지 않는 영역까지도 책임지는 자세가 필요하다.

-p488

 

연봉 인상과 승진

교육에 투자하는 건 솔선수범하는 삶을 사는 좋은 방법 중 하나다.
마지막으로 책을 읽은 게 언제인가?

매일 기술과 관련된 책을 읽어라.

그냥 책만 읽지 말고 온라인 강의도 들어라.
시작만 하지 말고 끝까지 들어라.
세미나, 콘퍼런스, 라이브 훈련 수업에 참석하라.

더 많은 돈을 벌기 위해 약간의 돈을 투자하는 걸 두려워 마라.

-p546 ~ p547

 

블로그 만들기

외부적인 효과를 제외하고 본인이 발전하는 데 도움이 된다는 점만으로도 블로그를 운영할 가치가 있다.
글쓰기는 소통 능력을 키우는 아주 좋은 방법이다.
꾸준히 글을 쓰면 다른 사람이 이해할 수 있는 방식으로 자신의 생각을 정리하는 방법을 배울 수 있다.
글쓰기를 많이 하면 할수록 의사소통 능력이 전반적으로 발전한다.
블로그는 자신의 경력과 발전을 기록하는 데 도움이 될 뿐 아니라 자신이 과거에 쓴 문제 해결 방법을 확인해 볼 수 있는 참고 자료도 된다.

소프트웨어 개발자라면 블로그를 운영해야 한다.

-p629

 

추천 도서

아직 독서가 습관이 되지 않았다면 꼭 습관으로 만들길 바란다.

꼭 좋은 책을 선별해서 읽어라.
다른 이들이 크게 추천하는 책을 평소에 찾아서 다음에 읽을 책 목록을 늘 채워두어라.

마지막으로 배운 것을 실천하라.
행하지 않는 지식은 아무 가치가 없다.
책을 읽는 데 그치지 말고 읽은 내용을 실행에 옮겨라.
배운 내용을 자신의 삶에서 어떻게 실천할지 고민하라.

-p723

 

'Book' 카테고리의 다른 글

IT 엔지니어를 위한 네트워크 입문  (0) 2023.04.08
그림으로 배우는 HTTP & Network Basic  (0) 2023.04.08
운영체제  (0) 2023.03.25
일상 속 사물이 알려주는 웹 API 디자인  (0) 2023.03.23
소프트웨어 장인  (0) 2023.03.22

댓글