품목정보
발행일 | 2023년 05월 31일 |
---|---|
쪽수, 무게, 크기 | 376쪽 | 550g | 152*224*18mm |
ISBN13 | 9791189909529 |
ISBN10 | 1189909529 |
발행일 | 2023년 05월 31일 |
---|---|
쪽수, 무게, 크기 | 376쪽 | 550g | 152*224*18mm |
ISBN13 | 9791189909529 |
ISBN10 | 1189909529 |
1장 여정을 시작하며 〉 개발자로서의 첫 출발, 앞으로 어떤 길이 펼쳐질까 목표를 세우자 여정을 위한 지도 __초보자 __질풍노도의 성장 __신뢰할 수 있는 기여자 __운영의 바다 __능력자의 땅 전진, 앞으로! 2장 역량을 높이는 의식적 노력 〉 경쟁력을 갖춘 개발자가 되기 위해 스스로 해야 할 일 실전에 앞서 익혀야 할 자기주도 학습 방안 __본격적인 학습을 위한 몸풀기 __직접 부딪혀보며 배우자 __코드 동작을 이해하기 위해 다양한 실험을 해보자 __문서 읽는 습관은 몸에 배야 한다 __발표 영상을 찾아서 보자 __때로는 밋업과 컨퍼런스도 참여하자 __시니어 엔지니어의 업무를 체험하고 협업하자 __개인 프로젝트 활동에서도 배움을 얻을 수 있다 제대로 질문하자 __스스로 문제를 해결해보자 __제한 시간을 정하자 __자신이 시도한 방법을 공유하자 __동료를 방해하지 말자 __비동기식 멀티캐스팅 의사소통을 시도하자 __동기식 요청은 한 번에 보내자 성장의 장애물을 극복하자 __가면 증후군 __더닝 크루거 효과 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 3장 코드와 함께 춤을 〉 레거시 코드에 임하는 우리의 자세 소프트웨어 엔트로피는 늘어나게 마련이다 결코 피할 수 없는 기술 부채 __기술 부채를 상환하는 방법 코드 변경으로 인한 고통을 조금이라도 줄이려면 __레거시 코드 변경 알고리즘을 활용하자 __코드는 처음보다 더 깔끔하게 유지하자 __점진적으로 변경하자 __리팩터링은 실용적으로 진행하자 __IDE를 활용하자 __버전 제어 시스템의 권장 기법을 활용하자 소프트웨어 개발에서 빠지기 쉬운 함정을 최대한 피하려면 __되도록 검증된 기술을 사용하자 __제발 악동은 되지 말자 __업스트림 커밋 없이 포크만 하는 것은 금물이다 __코드 재작성에 대한 욕구를 견디자 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 4장 운영 환경을 고려한 코드 작성 〉 개발 환경과 프로덕션 환경은 엄연히 다르다 장애에 대비하기 위한 방어적 프로그래밍 방안 __null 값 사용은 피하자 __불변 변수를 사용하자 __타입 힌트와 정적 타입 검사를 사용하자 __입력값을 검사하자 __예외를 활용하자 __예외는 구체적으로 정의하자 __예외는 일찍 던지고 최대한 나중에 처리하자 __재시도는 현명하게 __시스템에 멱등성을 부여하자 __리소스를 해제하자 문제 원인을 찾기 위한 로깅 방안 __로그 레벨을 사용하자 __로그는 원자적으로 작성하자 __로그는 신속하게 기록하자 __민감한 데이터는 로그에 기록하지 말자 애플리케이션 동작 측정을 위한 지표 활용 방안 __표준 지표 라이브러리를 사용하자 __모든 것을 측정하자 오늘날 분산 환경에서 더욱 중요해진 추적 설정으로 런타임 동작을 손쉽게 조정하려면 __지나치게 창의적인 설정은 금물이다 __모든 설정을 로그에 기록하고 검증하자 __기본값을 제공하자 __관련된 설정을 그룹화하자 __설정도 코드처럼 테스트하자 __설정 파일은 깔끔하게 유지하자 __배포된 설정은 변경하지 말자 때로는 도구가 운영의 성패를 결정짓기도 한다 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 5장 피할 수 없는 코드 의존성의 관리 〉 복잡한 프로그램을 짜봐야 비로소 깨닫는 의존성의 진실 의존성 관리를 이해하기 위한 필수 개념 __시맨틱 버저닝 __이행적 의존성 현업이면 누구나 한 번은 겪는 의존성 지옥 __의존성 지옥에서 탈출하자 __의존성을 격리하자 __의존성은 신중하게 추가하자 __버전을 고정하자 __의존성의 범위를 좁히자 __순환 의존성에 주의하자 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 6장 테스트! 개발자의 든든한 지원군 〉 업무 부하를 낮추면서 시스템 동작도 검증하는 테스트 방안 테스트를 꼭 해야 할까 테스트의 유형과 기법 다양한 테스트 도구 __모킹 라이브러리 __테스트 프레임워크 __코드 품질 보증 도구 개발자 스스로 직접 테스트를 작성하자 __테스트는 깔끔하게 작성하자 __과도한 테스트는 삼가자 테스트 결정성: 항상 동일한 테스트 결과를 만들려면 __난수생성기에 적절한 시드값을 사용하자 __단위 테스트에서 원격 시스템을 호출해서는 안 된다 __클럭을 주입하자 __슬립과 타임아웃의 사용을 삼가자 __네트워크 소켓과 파일 핸들을 닫자 __0번 포트에 바인딩하자 __파일과 데이터베이스에 대해 고유한 경로를 생성하자 __이전 테스트의 상태를 격리하고 해제하자 __테스트의 실행 순서에 의존하지 말자 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 7장 올바로 주고받는 코드 리뷰 〉 원활한 팀 협업과 높은 코드 품질을 목표로 코드 리뷰는 왜 필요한가 코드 리뷰를 제대로 받는 방법 __코드 리뷰를 받을 때 준비해야 할 사항 __리뷰 초안이 있으면 위험을 낮출 수 있다 __테스트 실행을 위한 리뷰 제출은 금물이다 __코드 변경사항이 많을 때는 좀 더 면밀하게 __자신의 코드에 너무 집착하지 말자 __공감력을 갖되 무례함은 참지 말자 __주도적으로 행동하자 코드 리뷰를 제대로 해주는 방법 __리뷰 요청을 선별하자 __리뷰를 위한 시간을 마련하자 __코드 변경사항을 이해하자 __포괄적인 피드백을 제시하자 __좋은 점은 인정하자 __이슈, 제안, 사소한 흠결은 잘 구분하자 __대충대충 리뷰는 금물 __웹 기반 리뷰 도구에만 의존하지는 말자 __테스트 리뷰도 잊지 말자 __어떻게든 결론을 맺어야 한다 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 8장 고객 앞으로! 소프트웨어 전달 〉 마침내 프로덕션 환경에 안착시킬 소프트웨어의 종착지 소프트웨어 전달의 4가지 단계 효과적인 버전 제어를 위한 브랜칭 전략 빌드 단계 __패키지에 버전을 명시하자 __리소스는 각각 별도로 패키징하자 릴리스 단계 __릴리스를 남의 일로 여기지 말자 __패키지를 릴리스 리포지토리로 발행하자 __릴리스는 불변성을 갖게 하자 __자주 릴리스하자 __릴리스 일정은 투명하게 공유하자 __변경 로그와 릴리스 노트를 발행하자 배포 단계 __배포를 자동화하자 __배포는 원자적으로 수행하자 __애플리케이션을 독립적으로 배포하자 롤아웃 단계 __롤아웃을 모니터링하자 __기능 플래그를 활용하자 __서킷 브레이커를 이용해 코드를 보호하자 __서비스 버전은 병렬로 올리자 __다크 모드로 론칭하자 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 9장 긴급대응 온콜 업무 〉 언제 일어날지 모르는 장애에 대응하는 절차와 방안 긴급한 비상상황에 대응하는 온콜 업무 반드시 갖춰야 할 온콜 스킬 __항시 언제라도 대응할 준비를 갖추자 __주의를 늦추지 말고 집중하자 __업무 우선순위를 정하자 __명확하게 의사소통하자 __업무 진척사항을 추적하자 장애 처리의 5가지 단계 __선별 __조율 __완화 __해결 __후속 조치 지원 업무도 엄연한 온콜 업무다 영웅이 되려 하지는 말자 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 10장 견고한 소프트웨어를 위한 기술 설계 절차 〉 대규모 변경에 적합한 소프트웨어 설계와 문서화 기법 고깔형의 기술 설계 절차 올바른 기술 설계를 하려면 __문제를 정의하자 __해결 방법을 조사하자 __다양한 실험을 해보자 __충분한 시간을 투자하자 의사소통을 위한 설계 문서 작성 방안 __중요한 변경사항은 문서화해두자 __설계 문서를 작성하는 이유를 이해하자 __글쓰는 법을 배우자 __설계 문서는 최신 상태로 유지하자 설계 문서 템플릿의 기본 구조 __개요 __현재 상태와 컨텍스트 __변경해야 하는 이유 __요구사항 __고려할 수 있는 해결책 __채택하려는 해결책 __설계와 아키텍처 __테스트 계획 __롤아웃 계획 __미결 사항 __부록 설계 과정에서도 협업은 중요하다 __팀의 설계 리뷰 절차를 이해하자 __갑작스런 상황은 만들지 말자 __설계를 논의하며 브레인스토밍을 하자 __설계에 참여하자 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 11장 소프트웨어 수명주기를 고려한 진화하는 아키텍처 구현 〉 성장하고 발전하는 소프트웨어를 만들기 위한 핵심 원칙 복잡도를 이해하자 진화하는 아키텍처를 위한 설계 원칙 __YAGNI 원칙: 당장 필요치 않다면 구현하지 말 것 __최소 충격 원칙: 사용자를 놀래키지 말 것 __도메인 지식은 캡슐화돼야 한다 진화하는 API를 위한 설계 원칙 __API 크기는 작게 유지하자 __잘 정의한 서비스 API를 노출하자 __API 변경에는 호환성을 유지하자 __API의 버전을 관리하자 진화하는 데이터를 위한 설계 원칙 __데이터베이스를 격리하자 __스키마를 사용하자 __스키마 마이그레이션을 자동화하자 __스키마 호환성을 유지하자 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 12장 효율적인 협업을 위한 애자일 문화 〉 모두가 알지만 실천하기는 쉽지 않은 애자일 애자일 선언문 애자일 방법론 프레임워크 스크럼으로 하는 애자일 개발 방안 __사용자 스토리 __태스크 __스토리 포인트 __백로그 분류 __스프린트 계획 신속한 업무 공유를 위한 스탠드업 회의 진솔한 피드백이 오가야 하는 리뷰 재평가와 조정을 위한 회고 중장기 계획을 위한 로드맵 수립 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 13장 관리자, 팀장, 상사와 함께 일하기 〉 한마음 한뜻으로 공동의 목표를 향해 관리자들이 하는 일 성공적인 업무 수행과 평가를 위한 절차를 마련하자 __일대일 회의 __PPP 회의 __OKR __성과 평가 팀장이나 상사도 여러분의 관리가 필요하다 __팀장의 피드백이 적을 경우 적극 요청하자 __팀장도 여러분의 피드백을 원한다 __여러분의 목표에 대해 팀장과 허심탄회하게 논의하자 __다 시도해봤는데도 안 된다면 개발자의 필수 체크리스트 레벨업을 위한 읽을거리 14장 경력 관리에 대한 조언 〉 경력 관리는 빠를수록 좋다 시니어 엔지니어, 그리고 더 높은 곳을 향해 진로에 대한 조언 __T자형 인재가 되자 __개발자를 위한 다양한 프로그램에 참여하자 __승진을 원하다면 이렇게 하자 __이직은 신중하게 __다만 번아웃을 경계하라 마치며 |
개발자로서 역량을 갖추기 위해 필요한 것은 무엇일까? 어떻게 커리어를 만들어나가서 성장해나갈 수 있을까?
많은 개발자들이 마음속으로 생각했던 질문이 아닐까 싶습니다. 이런 궁금증을 가졌던 분들이라면 앞으로 개발자로서 역량을 갖추기 위한 좋은 가이드가 되주는 책입니다. 역량을 높이기 위해서 어떻게 행동해야 되는지, 실무를 하면서 레거시와 테스트, 장애대응 등 다양한 업무에 대해서 좋은 지침과 내용을 담고 있습니다. 끝으로 각 장마다 개발자의 필수 체크리스트와 레벨업을 위한 읽을거리가 있다. 체크리스트는 당연한 얘기처럼 보이지만 꼭 지켜야 될 기본적인 것들이 적혀 있다. 다시한번 되새기면 좋은 것 같다.
레벨업을 위한 읽을 거리는 다른 좋은 책들을 추천하고 있는데, 개발자라면 꼭 한 번 읽으면 좋은 책들을 추천하고 있어, 시니어로 발돋움하기 위한 분들은 추가적으로 읽어보면 좋을 것 같습니다. 개발자라면 꼭 한 번 읽어봐야 될 책입니다.
YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다
서평단이 된 것도 좋았는데, 서평단을 축하하는 엽서로 감동을 받았습니다!
서평단 활동을 하면서 이렇게 감동스러운 축하는 처음이었습니다. 이런 정성이라면 책 내용도 좋으리라 생각했는데, 역시는 역시였습니다. 손편지부터 알아봤습니다. ㅎㅎㅎ
학교에서는 절대 가르쳐주지 않는 다른 스킬을 배울 수 있었습니다.
책을 읽다보니 신입부터 능력자(?)가 될때까지의 모든 시기별 필요한 스킬, 태도 등등 꼼꼼히 정리되어 있어서 여러 책을 찾기 보다 이 책을 파면(?) 여러 면에서 도움이 될 것 같았습니다. 몇 가지를 정리해보면, 자가진단, 각 시기별 필요한 지식 및 태도, 능력자가 되는 데 필요한 로드맵과 활동 그리고 도움이 될만한 책도 소개되어 있었습니다.
우선, 다양하게 자신의 상태를 점검할 수 있는 부분이 있어서 책을 통해 스스로에게 질문을 던질 수 있었습니다.
저는 전문적인 개발자가 아니지만 꼭 개발자가 아니어도 어떤 일을 함에 있어서 필요한 자신의 상황을 점검해볼 수 있어서 좋았습니다. (개발자라면 더욱 도움이 되겠죠?) 그런 자가 진단 또는 자가 점검을 통해서 어떤 지식과 태도가 보완되어야할지를 체크해 볼 수 있었고, 더불어 어떤 활동을 하면 좋을 지 각 활동별 특징을 잘 소개해놓아서 앞으로 활동을 선택하느 데 큰 도움이 될 것 같습니다. 그렇게 활동하다보면 진짜 전문가가 되는 데 지름길을 찾을 수 있겠죠? 개발자가 밝힌 여러 시기 또는 단계를 통해서 제대로 커리어 로드맵도 세울 수 있을 것 같았습니다.
일상생활을 하다보면 자기가 처한 상황과 관련된 것들이 눈에 더 많이 띄듯이 저도 제가 선택하고자 하는 것에 대한 이유를 찾고 있었나봅니다.
책을 보는데, '진학하는 것은 여러분의 선택이다'라는 말이 눈이 확 띄었습니다. 저도 늦은 감이 있지만 내년에는 대학원 진학을 생각중인데, 늦은 진학에 대한 부담과 진학에 대한 이유를 찾고 있었던 것 같습니다. 이 책을 읽으면서 '진학은 선택'이라고 했지만 저에게는 '필수'라는 생각을 굳히게 되었습니다. 다양한 활동을 했지만 바탕없이 활동하는 것에 물음표가 달리는 시점이기도 했었거든요.
그리고, 책속의 책처럼 도움이 될만한 책도 추천해주셔서 바로 구매했습니다!
인공지능, chatGPT 같은 이슈들이 대두되면서 나름 깊이 파보고 공부했지만 결론은 '사람'이었고 '인문학'이었던 것 같습니다. 그 중에서도 특별히 '좋은 질문'에 대한 생각은 AI, chatGPT 이전부터 관심이 있었는데, 관련된 책을 추천해두셨더라고요. 그래서 바로 구매했답니다. 개인적으로 책을 잘 선택한다고 생각했는데 역시 전문가들이 추천해주시는 책들은 다르더라고요.
[책만]출판사 책을 처음 서평단으로 만났지만 [책만]출판사 책은 이제 즐겨찾기 해두고 싶다는 생각이 들었습니다. 개발자가 아니지만 곧 개발에 참여할 목표를 가진 사람으로써 두고 두고 볼 그리고 추천할 책이었습니다. 최고였습니다!
*** YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다 ***
온보딩이라는 단어가 어색하신가요?
예전에는 없었던 단어인데, 요즘은 어색하지 않은 단어가 되었습니다.
보통 알고 있는 의미는 새로운 환경 즉 회사에 들어가면서 그 회사에 문화/기술/프로세스를 읽히는 기간을 말하는데요. 조금더 사전적인 의미가 궁금해서 찾아보았습니다.
<사전적 정의 정의>
영어로 '배에 탄다'는 뜻으로 신규 직원이 조직에 수월히 적응할 수 있도록 업무에 필요한 지식이나 기술 등을 안내·교육하는 과정을 뜻한다.
출처 : https://terms.naver.com/entry.naver?docId=6210722&cid=43667&categoryId=43667
그러면 이책은 신규 직원을 대상으로 한다고 생각할수 있습니다.
하지만 그렇게 생각하면, 이책에 대한 오해라고 생각합니다.
"책 표지의 상단의 내용을 옮겨보자면, 신입부터 시니어, 팀장을 거처 CTO까지 IT조직에서 제대로 일하고 성장하는 법" 이라고 되어 있는데, 저의 느낌도 동일합니다.
이책의 대상은 "개발자를 대상으로 하지만, 개발과 연관된 모든 분들이라고 지칭하고 싶습니다."
<책의 구성>
총 14장으로 구성되어 있습니다.
해당 Chapter를 저 나름대로 재구성을 해보았습니다.
아래 내용을 구성한 부분을 보면, 개발하는 관점에서 중요한 부분이 잘 구성되고 언급되어 지고 있습니다.
<개인적으로 구성한 것이라, 참고만 부탁드립니다>
이미지가 전체 사이즈가 볼수 없어서, 첨부된 이미지 링크 : https://image.yes24.com/blogimage/blog/e/n/enetrypm/EuWADnlo.jpg
위 그림에서도 잘 나타나듯이, SW개발에 필요한 거의 모든 프로세스에 대한 내용이 담겨져 있는것을 확인할수 있습니다. 또한 "운영시 온콜에 대한 대응", "경력관리에 대한 조언" 부분은 매우 흥미로운 주제입니다.
위에 목차를 살펴보면, 신입때만 알고 있으면 끝나는 그러한 부분이 하나도 없습니다.
예를 들어 "4장 운영환경을 고려한 코드 작성" 이라는 부분을 생각해보면, 경력 1년차, 5년차, 10년차 또는 그 이상의 경력, 팀장직급을 가진 분들도 지속적으로 변화하는 환경에 대응하고 그 당시에는 최선이였지만 현시점에 는 맞지 않은 구성이 될수도 있고 해당 소스가 계속 유지되고 사용되어지는 것보다 새롭게 구성하는 아키텍처를 지원하는 코드로 구성될수도 있습니다.
"그래서 이책의 대상자가 특정 온보딩 대상자가 아닌, 모든 경력대상자라고 생각하는 부분입니다." 시간이 흘러도 기준이 있어야 합니다.
원칙이 세워진 바탕에서 변화를 적용하는것이 맞다고 생각하고 그러한 원칙을 책에서 정의해주고 있습니다.
<Point>
Point.1)
책에 곳곳에 추가적으로 참고할 만한 서적(국내출간 책, 해외) 및 참고 링크 대한 정보가 있어서 좋았습니다. 조금 더 궁금하거나, 책에서는 다루지 않은 부분을 학습할때 좋은 가이드가 될 것 같은 생각이 들었습니다.
마지막에 정리표를 통해서 다시한번 Wrap-up할수 있는 가이드라인 제시되고 있습니다.
Point.2)
저자분의 실제경험 사례를 통해서, 좋았던 경험 뿐만이 아니라 실패했던 경험 공유들을 통해서 실제 일어나는 일이고, 우리도 모두 해당되는 현실적인 이야기가 실제 온보딩을 체험하는 느낌을 받을수 있습니다.
Point.3)
우리가 그냥 막연히 생각으로만 맴돌고 있는 것들이 있습니다. 이러한 것을 다른 누군가에게 정리해서 설명을 하기는 어렵습니다. 이러한 막막했던 것들이 구체적으로 정리되어지는 느낌을 받으실수 있습니다.
Point.4)
책에서 언급되어지는 원리 및 방법들이 모두 정답일수는 없지만, Best Practice는 모두 해당된다고 생각됩니다. 책에서 나와있는 한줄이 어떤 개발자분들에게는 큰 빛이 되는 내용이 될수 있습니다. 답답한 시점에서 keyword를 찾고 이것이 실마리기 되어서 원하는 해결책을 얻을수 있습니다.
Point.5)
기술적인 요소들도 매우 오래된 기술이 아니고, 지금 시점에서 보편적으로 사용되어 지고, 최신의 기술들에 대한 부분도 많이 있습니다.
Point.6)
특정 언어에 한정되어서 설명되어지지 않고, 다양한 언어에 대해서 포괄적인 설명되는 부분도 좋은 부분입니다.
Point.7)
이책의 번역이 매우 자연스럽고, 기술적인 용어에 대해서도 쉽게 설명되어 있어서 번역서라는 느낌이 들지 않는 부분도 기억나는 부분입니다.
YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다