다시, 소프트웨어 엔지니어 (AI 시대에도 결코 대체되지 않을 개발자의 기본 역량과 생존법)

다시, 소프트웨어 엔지니어 (AI 시대에도 결코 대체되지 않을 개발자의 기본 역량과 생존법)

$30.00
Description
AI에도 흔들리지 않을 개발자의 조건과 기본 역량
유능한 소프트웨어 엔지니어가 되려면 무엇을 알아야 할까? 대학이나 부트캠프에서는 알고리듬 기초와 코딩 방법을 가르칠지 모르지만, 전문가로 성장하기 위한 필수 주제를 다루는 경우는 거의 없다. 이 책은 소프트웨어 엔지니어로서 성공과 성장에 필요한 실용적인 지식과 기술을 알려준다.
저자인 네서니얼 슈타와 댄 베가는 소프트웨어 엔지니어에게 정말 중요한 역량을 기를 수 있도록 길잡이가 되어 준다. 핵심을 짚는 조언부터 주제별 깊이 있는 해설까지, 실무에 도움이 되는 내용을 폭넓게 풀어낸다.

| 이 책에서 다루는 내용 |
ㆍ 소프트웨어 엔지니어링의 올바른 의미, 그리고 소프트 스킬의 중요성
ㆍ 소프트웨어 아키텍처와 아키텍처 결정 요인의 기초
ㆍ 널리 쓰이고 검증된 기법을 활용한 코드 기반 분석과 리팩토링
ㆍ 테스트의 중요성과 효과적인 테스트 구현 방법
ㆍ 소프트웨어를 안정적으로 반복해서 전개하는 방법
ㆍ 문제에 적합한 해결책이나 도구를 평가하고 선택하는 방법

| 이 책의 대상 독자 |
- 새로 일을 시작한 소프트웨어 엔지니어: ‘그저 코딩하는 사람’을 넘어 진짜 소프트웨어 엔지니어가 되려면 무엇이 필요한지, 그리고 경력을 발전시키려면 무엇을 갖춰야 하는지 큰 그림으로 보여준다.
- 경력 엔지니어: 이 책에서 다루는 핵심 역량은 큰 도움이 되며, 특히 더 높은 역할과 더 큰 책임을 맡고 싶다면 더욱 그렇다. 탄탄한 역량은 더 많은 책임과 승진의 기회를 여는 열쇠가 된다.
저자

네서니얼슈타

(NathanielSchutta)
쏘트웍스에서클라우드분야에집중하는아키텍트다.『프레젠테이션교과서』를공동집필했고,『ThinkingArchitecturally』와『ResponsibleMicroservices』를집필했다.
미네소타대학교에서겸임교수로강의도하며,세계여러컨퍼런스에서꾸준히발표해온경험많은연사이기도하다.

목차

1장프로그래머에서이제는엔지니어로
다양한명칭으로불리는엔지니어
기초의중요성
소프트웨어엔지니어가되는다양한경로
교육받은지식과알아야할지식
게으른프로그래머정신의수용
새로운시각의가치
성급한해결책제시의위험성
소프트웨어의황금률적용
정리
직접실천해보자
더읽을거리

2장코드문해력=실무기본능력
기존코드작업의어려움
인지편향
낯선코드접근법
소프트웨어고고학
효과적인코드이해전략
__IDE기능활용
__테스트에서얻는통찰력
완성의길,연습
정리
직접실천해보자
더읽을거리

3장사람을위한코드작성법
바퀴재발명금지
좋은코드란
간결함의가치
__컴퓨터과학의제0법칙
__상용구코드주의
__상속보다는구성
__짧은메서드지향
독자를위한코드작성
코드주석의문제
테스트를문서로사용
멋부린코드금지
코드리뷰
형식적코드리뷰금지
비판받을용기
신뢰구축
새로운언어학습
정리
직접실천해보자
더읽을거리

4장소통을돕는적정모델링
소프트웨어모델링의정의와이유
필요한다이어그램의종류
__컨텍스트다이어그램
__컴포넌트다이어그램
__클래스다이어그램
__순차다이어그램
__전개다이어그램
__데이터모델
__기타다이어그램
모델링모범사례
__단순하게유지하라
__독자를파악하라
__조심해서색상을선택하라
__표준과템플릿을수립하라
도구
정리
직접실천해보자
더읽을거리

5장자동테스트:좋은소프트웨어를만드는최고의습관
자동테스트의이점
__문서역할을하는테스트
__유지보수성향상
__자신감상승
__일관성과반복가능성
자동테스트유형
__단위테스트
__통합테스트
__종단간테스트
__테스트유형별비중
__테스트하지말아야할것
코드실행률
테스트작성
__시작방법
__단정문
__단위테스트작성
__모의객체
__통합테스트작성
__종단간테스트작성
정리
직접실천해보자
더읽을거리

6장낯선시스템에빨리친숙해지기
낯선코드기반이해
__출발점,큰그림
__실행흐름파악
__점진적인정신모델구축
샘플프로세스
안전한수정
__안전한리팩터링
__스카우트규칙
__되돌릴수있는작은변경
정리
직접실천해보자
더읽을거리

7장엔지니어라면꼭알아야할UI설계기초
모두를위한디자인
__사용성
__접근성
__국제화와지역화
사용자파악
__2차사용자
__개발자는사용자가아니다
__문화의영향
사용성극대화
디자인원칙
__대비
__반복
__정렬
__근접성
디자인원칙적용
올바른것을명확하게만들기
좋은오류메시지의중요성
파괴적인작업
정리
직접실천해보자
더읽을거리

8장다양한데이터기술을적절하게사용하는방법
자료형과형식의이해
__정형데이터와비정형데이터
__일반적인데이터형식
__기타특수사항
효과적인데이터저장
__데이터베이스유형과사용사례
__데이터영속성및관리
__데이터베이스연결과트랜잭션
__일관성모델및캐시전략
__데이터증가대책
데이터질의와성능관리
__효율적인질의문작성법
__도구및모범사례
데이터이전과변환
__데이터이동기초
__스키마변경처리
정리
직접실천해보자
더읽을거리

9장소프트웨어아키텍처:복잡하고중요한결정
아키텍처란무엇인가
득실관계
아키텍처와설계
품질속성
__품질속성식별
__이해관계자합의
아키텍처방식
애자일아키텍트
적합도함수
아키텍처다이어그램
아키텍처결정기록
정리
직접실천해보자
더읽을거리

10장운영환경:코드가살아야하는낯선환경
복잡한운영환경
__예측불가능한사용자
“내컴퓨터에서는되는데요”
운영준비된코드구축
__성능최적화
__환경별설정구성
__오류처리와로그
__보안필수사항
전개파이프라인
__전개환경
__버전관리전략
__전개자동화
__전개전략
__지속적통합과지속적전개
운영시스템모니터링과유지보수
__모니터링
__시스템유지보수
정리
직접실천해보자
더읽을거리

11장생산성강화:효율적으로일하기
개발환경최적화
__개발도구를익혀라
__나만의광선검제작
__명령행의힘
__키보드단축키의힘을키워라
전략적자동화
생산성있는습관의끝없는추구
__공동학습
__개인지식관리
정리
직접실천해보자
더읽을거리

12장즐겁게배우며앞서가는엔지니어되기
벼락치기의한계
기술습득
학습습관
AI활용학습
기회상실공포
시간투자전략
혁신실천
아키텍처브리핑
여유를실천하자
정리
직접실천해보자
더읽을거리

13장기술세계의소프트스킬
협력적소통
__소통수단
__옮겨말하기
__청중을파악하라
영향력행사
__가치이해와표현
__전략적영향력행사
__이해관계자관리
시간관리
__제작자의일정
__집중력유지
정리
직접실천해보자
더읽을거리

14장성공적인경력계획과관리
진로계획
__열정발견
__어떤길이있는지살펴보기
__목표에서되짚어계획세우기
__의도적인역량습득
__생애주기별진로선택
진로의과정
__성취를축하하고기록하라
__가면증후군극복
__전문가커뮤니티구축
__전문가관계구축
__성공적인면접
__일과삶의균형
정리
직접실천해보자
더읽을거리

15장AI로무장한소프트웨어엔지니어
AI란정말무엇인가
__AI용어해설
__AI의능력과한계이해하기
짝프로그래머로서의AI
__독립형챗봇조수
__IDE인라인어시스턴트
__에이전트형AIIDE환경
프롬프트엔지니어링기초
__프롬프트엔지니어링이란
__핵심프롬프트엔지니어링기법
__고급프롬프트엔지니어링기법
AI가소프트웨어엔지니어링을바꾸는방법
__AI가내일자리를빼앗을까
__바이브코드리뷰
__전력승수로서의AI:코드작성에서문제해결로
정리
직접실천해보자
더읽을거리

출판사 서평

|이책의구성|
1장부터3장까지는첫번째파트로서성공적인소프트웨어엔지니어가갖춰야할‘핵심역량’을다룬다.
ㆍ1장‘프로그래머에서이제는엔지니어로’소프트웨어엔지니어가되는여러길을살펴보고,기초역량의중요성을강조한다.
ㆍ2장‘코드문해력=실무기본능력’소프트웨어엔지니어가코드를쓰는시간보다읽는시간이더많다는점을다룬다.낯선코드를헤쳐나가는전략도함께제시한다.
ㆍ3장‘사람을위한코드작성법’읽기쉽고유지보수하기좋은코드를작성하는것이왜중요한지다룬다.결국컴퓨터보다개발자를위해코드를써야하는이유를보여준다.

두번째파트로서4장부터6장까지는소프트웨어엔지니어가프로젝트중에만나게될여러기술실천사항에대해알아본다.
ㆍ4장‘소통을돕는적정모델링’많은프로젝트에서봤거나앞으로보게될,상자와선으로그린다이어그램,곧소프트웨어모델링이소프트웨어엔지니어사이의중요한소통수단이라는점을설명한다.
ㆍ5장‘자동테스트:좋은소프트웨어를만드는최고의습관’자동화된테스트가코드품질과개발자의자신감에어떤도움을주는지다룬다.
ㆍ6장‘낯선시스템에빨리친숙해지기’기존코드에서효과적으로일하는전략을강조한다.새팀에합류하든,레거시시스템을유지보수하든,이런역량은어떤코드에서도자신있게기여하도록도와준다.

7장부터10장까지4개장에이르는세번째파트에서는소프트웨어를설계하고개발할때마주치는세부적인문제를살펴본다.
ㆍ7장‘엔지니어라면꼭알아야할UI설계기초’사용자인터페이스설계분야를개괄한다.사용자를이해하고설계원칙을적용해야소프트웨어가실제사용자요구를제대로충족할수있는이유를설명한다.
ㆍ8장‘다양한데이터기술을적절하게사용하는방법’거의모든소프트웨어애플리케이션이어떤식으로든다루게되는데이터작업을다룬다.애플리케이션의데이터와관련해판단을내릴때알아야할핵심역량을설명한다.
ㆍ9장‘소프트웨어아키텍처:복잡하고중요한결정’소프트웨어아키텍처의복잡성을살펴보며,모든소프트웨어프로젝트에들어있는아키텍처상의득실을이해할실마리를제공한다.
ㆍ10장‘운영환경:코드가살아야하는낯선환경’코드를운영환경에올리는일을다룬다.실제사용자와실제운영환경의예측하기어려운특성을설명하고,운영에대비된코드를만드는전략을정리한다.

마지막네번째파트에서는소프트웨어엔지니어의경력계발과관리,직업으로서성장하기위한실천방안에대해살펴보고이책을마무리한다.
ㆍ11장‘생산성강화:효율적으로일하기’다시일상적인업무로돌아와,자신만의도구모음을갖추는중요성을다룬다.
ㆍ12장‘즐겁게배우며앞서가는엔지니어되기’지속적인학습의중요성을다룬다.끊임없이변하는분야를따라가기위한전략도제시한다.
ㆍ13장‘기술세계의소프트스킬’경력에서소프트스킬이왜중요한지를다룬다.협업적소통,영향력,이해관계자관리를설명한다.
ㆍ14장‘성공적인경력계획과관리’소프트웨어엔지니어경력을계획하고경로를찾아걷는데초점을맞춘다.열정을찾는법,경력경로를탐색하는법,역량을의식적으로쌓는법을설명한다.아울러직업적인맥을만들고,면접을잘치르고,일과삶의균형을세우는방법도다룬다.
ㆍ15장‘AI로무장한소프트웨어엔지니어’오늘날소프트웨어분야에서가장큰변화를일으키는주제중하나인AI를다룬다.

[추천사이어서]
네이트와댄은오랜경험을놀라운통찰로잘갈무리해,숙련된개발자와초보개발자모두에게큰도움이될내용을담아냈다.-크리스크레이머(쏘트웍스수석AI엔지니어)

이런책이지금처럼절실한때는없었다.AI가취업시장에불러일으킨혼란과원격근무방식으로인해전통적인도제식멘토링이무너져내린오늘날,이와같은어려움을경력초반의개발자가헤쳐나가야하는이시기에이책은성장과적응과성과를내는데필요한지혜와방향을제시한다.
-크리스토퍼저드/저드솔루션스대표

이책에서댄과네이트는여러해정규교육을받아도좀처럼닿기어려운핵심을직접짚어준다.
수십년에걸친두저자의경험이책곳곳에배어있고,현업개발자가알아야할것과피해야할것을세심하게골라담았다.
-벤캇수브라마니암박사/수상경력의저자,애자일디벨로퍼설립자

놀랍게도현대의소프트웨어엔지니어링이실제로무엇을아우르는지전체적으로보여주는책은지금까지없었다.돌이켜보면꽤큰공백이었는데,이책은그빈자리를메우며실무자관점에서소프트웨어엔지니어링의여러모습을탁월하게정리해준다.오라일리Fundamentals시리즈의다른책들과마찬가지로,신입엔지니어와경력엔지니어모두에게아직접해보지못했거나미처존재조차몰랐던영역을채워주는귀중한길잡이다.강력히추천한다.
-닐포드/소트웍스디스팅귀시드엔지니어

각분야에서일하는사람이라면누구나자기가무엇을모르는지조차모르는‘무지에대한무지’라는불확실성과마주한다.무슨일이일어날지모를때사람은어떻게준비해야할까?지도조차없이낯선땅을어떻게건너야할까?
소프트웨어엔지니어링을향해나아가는길,곧‘프로그래머’에서‘엔지니어’로의식적으로옮겨가는일도오랫동안비슷한딜레마를안겨왔다.쏟아지는유행어의파도속에서방향을잡아야하고,끊임없이바뀌는환경의거친물결을헤쳐나가야하며,여기에일터에서커지는AI의영향력까지마주해야한다.그래서이여정은이제막시작한사람에게도,오래일한베테랑에게도버겁게느껴진다.
하지만걱정할필요는없다.네이트와댄이바로그런지도를만들어뒀기때문이다.이책은사고방식을엔지니어의관점으로바꾸는데필요한기초를차근차근보여준다.특정기술을다루는책이아니다.오늘날처럼거칠게흔들리는현업환경에서살아남는데그치지않고제대로성장하게해줄역량을다룬다.
-라주간디/소프트웨어장인,기술애호가,교육자,『헤드퍼스트소프트웨어아키텍처』,『헤드퍼스트깃』,『자바스크립트넥스트』저자

[옮긴이의말]
“(AI시대가되어)코드는값싸졌지만,소프트웨어는그렇지않습니다.”
저자들은한국어판출간에부쳐특별서문을보내오면서,이책과시대를관통하는촌철살인과도같은문구를전해왔습니다(14쪽의한국어판특별서문을먼저읽어보세요.그리고시간이없으면12장‘즐겁게배우며앞서가는엔지니어되기’라도꼭읽어보기바랍니다).
아무도안읽는옮긴이서문이겠지만,첫문장은눈에띌가능성이높아서저자의말을빌려저또한가장전하고싶은말로이글을시작해봤습니다.이제들어가는말을해보겠습니다.
“개발자는기능인인가요?전문가인가요?”
이질문이어렵다면다음질문은어떨까요?
“AI는개발자를위협하는기술인가요?개발자의손에들린마법의지팡이인가요?”
AI가마법의지팡이라고생각하신다면,이책은선물입니다.
이책은소프트웨어엔지니어링의기본기라는과감한주제를다룹니다.저를아는분이라면제가‘소프트웨어엔지니어링’책을번역했다는소식에의아해할것입니다.남들이보기에그간저는마치소프트웨어엔지니어링과대척점에서있는것처럼행동했기때문입니다.
오랫동안소프트웨어엔지니어링분야에서는개발을정형화하려는편이었고,공학을기계가아닌사람에게적용하려했습니다.그리고대부분의소프트웨어엔지니어링학풍은개발자를전문가로인정하지않으며,무엇보다코드는컴퓨터가수행할명령의집합으로서최종산출물일뿐이라는주장들이보편적이었습니다.저자들이이책의곳곳에서코드를인간이읽을문서또는진실의원천이라고부르는것과정반대의견해였던것입니다.
그사이인터넷과모바일혁명이이어지면서우리업계는폭발적으로성장했고,소프트웨어가세상을삼키는시대에들어섰습니다.그리고학계가아닌산업계에서새로운개발규범이정립되었습니다.그리고증명했습니다.지금여러빅테크와스타트업에서고품질의소프트웨어를빠르게만들어내고있습니다.
이제우리는이와같은것들을소프트웨어엔지니어링이라고부르고있습니다.예전과달리새로운소프트웨어엔지니어링은개발을사람의활동으로보고이활동을돕는환경에공학을적용하고있습니다(제가여기서‘소프트웨어공학’이라는표현을쓰지않는이유는너무학문적인것으로들리기때문입니다).
지난2024년에소프트웨어공학분야에서널리받아들여지는지식을총망라한‘소프트웨어공학지식체계(SWEBOK)’가10년만에개정되었습니다.이번네번째버전에서애자일과데브옵스와AI가받아들여졌습니다.실무가이론을주도한다던로버트L.글래스의말이또증명되었습니다.
많은분이이책을읽으면좋겠습니다.제가이책을읽고번역하는동안느꼈던기쁨을많은동료개발자가같이느끼기바라기때문입니다.
특히저와함께일했던컬리의프로덕트조직동료들이꼭읽었으면좋겠습니다.제가CTO로잠깐있으면서큰도움을드리지못하고떠난것이늘미안했는데제생각과동일한생각을가진분들이이처럼고마운책을써주셔서대신글로도움을드릴수있게되었습니다.
제모태와같은한국스프링사용자모임에게도이책을권합니다.저자두분은스프링을만든피보탈출신이고,책의많은부분이스프링이면의철학과깊이관련되었다고생각합니다.그래서이책의내용이스프링을어떻게사용하면좋을지알려준다고믿습니다.스프링은좋은개발을지원하려고만들어진프레임워크이기때문입니다.
하고싶은말은많지만모두책에담겨있으니이만줄이겠습니다.
-박성철