
다시, 소프트웨어 엔지니어
AI 시대에도 결코 대체되지 않을 개발자의 기본 역량과 생존법
네서니얼 슈타, 댄 베가 지음 | 박성철 옮김
468쪽 | 30,000원 | 2026년 5월 29일 출간 | 185*240*23 | ISBN 9791124309070 (93000)
판매처 | [교보문고] [YES24] [알라딘] [영풍문고] + 전국 교보/영풍문고 매장
전자책 판매처 | [교보문고] [YES24] [알라딘] [리디북스] | 2026년 6월 출간 예정
✔ 원서명: Fundamentals of Software Engineering: From Coder To Engineer
✔ 정오표: https://www.onlybook.co.kr/entry/software-engineer-errata (아직 등록된 정오사항이 없습니다)
✔ 본문에 삽입된 컬러 이미지 확인: https://www.onlybook.co.kr/entry/software-engineer-image
📌 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의 발전 속에서 소프트웨어 엔지니어의 역할에 대한 생각을 읽을 수 있다.
AI를 따로 다루는 15장이 있기는 하지만, 소프트웨어 개발 수명 주기 전반에 AI의 영향이 넓게 퍼져 있기 때문에 책 전체에서 AI 이야기가 계속 등장한다.
추천의 글
코드를 읽는 능력이 쓰는 능력만큼 중요하다는 것, 테스트가 문서이기도 하다는 것, 그리고 기술보다 소통이 프로젝트의 성패를 가른다는 것 등, 이 책은 예전에 내가 개발자로서 그 깨달음에 이르기까지 겪었던 수년간의 시행착오를 단 한 권으로 압축해 놓았다. 대학에서 학생들의 코드를 보고, 현업에서 주니어 개발자들과 함께 일하면서 늘 느꼈던 “이것을 먼저 알았더라면”이라는 아쉬움, 이 책은 바로 그 답을 제공해준다. 프로그래밍 언어의 문법을 막 익힌 단계에서 진정한 소프트웨어 엔지니어로 나아가고자 하는 모든 개발자에게 필독을 권한다.
- 이민석 / 국민대학교 소프트웨어융합대학 교수, 전 이노베이션 아카데미 학장
생성형 AI의 등장으로 우리가 알고 있던 소프트웨어 개발 방식이 달라진다고 한다. 혹은 여전히 코드를 작성하는 과정만이 소프트웨어 엔지니어링의 전부라고 생각하는 이들도 적지 않다. AI 에이전트의 도움으로 코드 작성의 방법과 중요성은 줄어들고 있다. 하지만 소프트웨어 개발의 본질은 변하지 않고 있다! 즉 해결하려는 비즈니스 문제(도메인)를 이해하고, 기존 코드와 이전 개발자의 관점을 파악하며, 적절한 추상화 그리고 아키텍처를 설계하는 능력 말이다.
이 책은 스프트웨어 생명 주기를 따라서 개발자가 경험하고 각 단계에서 이해해야 할 것들을 알려주고 있다. 또한 소프트웨어 엔지니어로서의 커리어 패스를 설계할 수 있는 내용도 담고 있다.
이 책은 주니어 엔지니어에게는 경험치를 올려줄 수 있는 로드맵이 되고, 시니어 엔지니어에게는 자신의 개발 방식과 경력을 다시 점검할 수 있는 체크리스트들이 된다.
이 책과 함께 여러분의 소프트웨어 엔지니어 역량을 키워보기 바란다.
- 김병부 / 라인 플러스, 『스프링 부트로 개발하는 MSA 컴포넌트』 저자
대부분의 소프트웨어 개발이 조직 단위로 움직이는 현대의 개발 환경을 고려할 때, 기획부터 유지보수까지 개발의 전 수명 주기를 체계적으로 이해하고 엔지니어링 원칙을 적용할 수 있는 거시적인 관점이야말로 엔지니어에게 요구되는 능력이자 뛰어난 엔지니어를 구분하는 기준이라 할 수 있습니다.
이 책은 소프트웨어 엔지니어가 갖추어야 할 3가지 역량, 즉 기술적 역량(Hard Skills), 소프트 스킬(Soft Skills), 그리고 태도 및 성장 가능성(Mindset)에 대해 균형감 있게 이야기 하고 있으며, 초보 개발자에게는 엔지니어링 역량을 향상시키기 위한 이정표를 제시하고 지식을 새로 업그레이드해야 하는 고참 엔지니어에게는 매너리즘을 벗어나기 위한 통찰을 제공하고 있습니다.
빠르게 변화하는 새로운 기술 스택의 홍수 속에서 소프트웨어 개발의 기본기와 지속적인 성장을 고민하는 엔지니어, 그리고 현대적인 소프트웨어 공학을 이해하고자 하는 모든 이에게 이 책은 선택이 아닌 필수입니다.
- 김영기 / 삼성전자 네트워크 사업부 SE 그룹, 『모던 데이터 아키텍처 설계와 구현』 역자
제가 처음 개발자로 일을 시작할 때는 도시전설처럼 타고난 천재 엔지니어들이 궁금했었습니다. 30년이 지난 지금은 주어진 환경에서 완성형으로 성장하는 진짜 '소프트웨어 엔지니어' 이야기가 더 흥미롭습니다.
이 책은 실패하면서 성장한 선배들이 경험하고 쌓아놓은 이야기 보따리입니다. 제가 지난 10년동안 소프트웨어 교육 개발자로 살아오면서 일을 시작하는 후배들에게 지식을 설명하고, 경험을 공유하고, 성장할 방법을 알려주던 대부분의 내용이 이 책에 담겨있습니다. 이 책을 다 읽는다고 갑자기 ‘진짜’ 소프트웨어 엔지니어가 되지는 않겠지만, 더 성장하기 위해서 고민이 있을 때마다 읽는다면 길을 찾도록 도와줄 것입니다. 미리 실패하지 않도록 정답을 알려주는 과외 교재보다는 책장에 두고 여러 번 다시 읽는 책으로 추천합니다. 그리고 언젠가 책에 없는 자신의 이야기를 들려주면 좋겠습니다.
- 김정 / 코드스쿼드 대표 + 소프트웨어-교육 개발자
이 책은 그저 ‘코드를 작성하는 법’을 알려주기 위한 책이 아니다. “프로그래머 신입이 진정한 소프트웨어 엔지니어로 성장”하기 위해 필요한 핵심 개념들을 매우 간결하게 정리한 책이다. 유지보수 가능한 코드 작성, 테스트, 아키텍처, 데이터, 배포, 협업과 커뮤니케이션까지, 실무에서 언젠가는 마주치고야 마는 영역을 폭넓게 다룬다. 특히 경력 2~5년 차 개발자가 자신의 경험을 체계화하고 시야를 넓히기에 좋은 길잡이 역할을 하리라 확신한다. 각 장마다 소프트웨어 엔지니어링의 핵심적인 개념의 설명을 한 후, 말미에는 더 깊게 공부할 수 있는 추천 도서들로 학습의 방향을 잡아준다.
아마도 AI 에이전트 코딩시대에 꼭 필요한 지식을 습득하기 위한 가장 압축적이고 현대적인 소프트웨어 엔지니어링 입문서로 추천할 수 있는 책이라 생각한다.
- 김종원 / 엔씨소프트 PI 전략팀 TD
AI가 코드를 더 많이, 더 빠르게 만들어내는 시대에도 마지막 판단과 그 결과에 대한 책임은 결국 사람에게 남는다. 그 책임을 감당하려면 코드를 읽고, 시스템을 모델링하고, 테스트와 운영을 설계하는 기초가 더 단단해야 한다.
이 책은 교육 기관에서 잘 다루지 않는 그 기초를 한 권에 정리해, 프로그래머에서 엔지니어로 옮겨가는 길을 알려준다. 또한 현장에서 차이를 만드는 영역들을 두루 짚고, 책의 거의 모든 장에서 AI가 그 일을 어떻게 바꾸는지 함께 살핀다. 경력 초반의 엔지니어에게는 출발점을, 일정 시간 일해 온 엔지니어에게는 자신이 어느 자리에 서 있는지 점검할 기회를 제공한다. AI 시대에 더 무거워지는 전문성이 무엇인지 진지하게 묻는 분이라면 이 책을 곁에 두기 바란다.
- 박용권 / 당근마켓, 엔지니어링 매니저
“AI가 촉발시킨, 최대의 위기와도 같은 시대에 개발자들은 과연 무엇을 준비해야 할까요?” 요즘 이런 질문을 많이 받습니다. 그만큼 지금의 개발자들이 느끼는 위기감은 정말 크다고 할수 있습니다. 물론 AI가 더 고도화된다면, 코드는 모두 AI가 만들게 될 거라고 생각합니다. 그럼 개발자들은 앞으로 어떤 일을 해야 할까요?
저는 이 책에 대다수의 답이 들어있다고 생각합니다. 우리는 코드를 생산하는 일을 멈추고 그 외에 다른 많은 일들, 즉 설계, 모델링, 사용자 인터페이스 설계 등 우리가 소프트웨어를 만들면서, 해왔던 많은 일들을 지금처럼 해야 합니다. “난 이걸 거의 10년 가까이 걸려서 배워왔던 것 같은데, 어떻게 정수만을 뽑아서 한 권의 책으로 만들었을까”라는 생각을 하며 이 책을 읽었습니다.
우리 AI를 위기라고 절망하기 보다는 한번 우리가 가장 기본이라고 했던 일들에 한번 몰입해보는 건 어떨까요? 거기서 우리의 일을 지금 시대에 맞게 다시 정의하는 시간을 가져보는 걸 추천드립니다. 그 시간을 함께해줄 가장 좋은 가이드로 이 책을 추천합니다.
- 양수열 / 크라우드웍스 CTO, 한국인 최초의 자바 챔피언
예전에는 운이 좋으면 좋은 사수가 곁에서 소프트웨어 개발이라는 넓은 세계의 지도를 조금씩 보여주었습니다. 낯선 코드베이스를 어떻게 읽는지, 운영 환경에서는 왜 예상하지 못한 문제가 생기는지, 내가 만든 기능이 사용자에게 어떤 경험으로 전달되는지, 좋은 개발자는 어떤 관점으로 일해야 하는지를 옆에서 배울 수 있었습니다. 하지만 AI 도구가 빠르게 확산되고, 팀의 구조와 일하는 방식이 바뀌면서 주니어 개발자가 예전처럼 곁에서 차근차근 배울 기회를 얻기 어려운 경우가 많아졌습니다.
이 책은 그런 시대의 개발자에게 좋은 길잡이가 되어줄 수 있습니다. 특정 기술 하나를 깊게 파는 책이라기보다, 개발자가 일을 오래 해나가며 반드시 마주치게 되는 기본기를 넓게 보여주는 책입니다. 특히 인상적이었던 부분은 이 책이 개발자의 일을 코드 안쪽에만 가두지 않는다는 점입니다. 개발자가 결국 프로덕트를 만드는 사람이라는 사실을 다시 일깨워주거나(7장), 운영 환경을 배포 이후의 절차로 미뤄두지 말고 코드를 작성하는 순간부터 성능, 보안, 오류 처리, 로그, 설정, 모니터링을 함께 생각해야 함을 이야기합니다(10장), AI를 공포나 낙관의 대상이 아니라 개발자의 역량을 증폭하는 도구임을 강조하고, 코드 생성이 쉬워질수록 더 중요해지는 것은 코드를 읽고, 검토하고, 테스트하고, 운영 가능한 시스템으로 책임지는 능력임을 상기시켜줍니다(15장).
개발자로 성장한다는 것은 어느 날 갑자기 시니어라는 이름표를 다는 일이 아닙니다. 모르는 것을 인정하고, 낯선 시스템 앞에서 물러서지 않으며, 내가 작성한 코드가 다른 사람과 사용자와 운영 환경에 어떤 영향을 주는지 생각하는 습관을 쌓아가는 일입니다. 그 길을 혼자 걷고 있다고 느끼는 개발자에게, 이 책은 예전의 좋은 사수처럼 곁에서 차근차근 시야를 넓혀주는 안내자가 되어줄 것입니다.
- 이동욱 / 인프랩 CTO, 『스프링 부트와 AWS로 혼자 구현하는 웹 서비스』 저자
얼핏 보면 코드 읽기, 모델링, 자동화 테스트, 배포 전략 같은 주제들은 AI가 다 대신해줄 듯한, 구시대의 유물처럼 보이기도 한다. 하지만 막상 실무에서 AI 코딩 에이전트와 함께 일해 보면, 선배 개발자들이 오랜 경험을 통해 체득해 온 바로 그 지식들이 가장 결정적인 순간에 필요해진다는 사실을 곧 깨닫게 된다. AI에게 무엇을, 어떻게, 어떤 제약 아래에서 만들라고 말할 수 있는 능력, 그리고 그 결과물을 비판적으로 검증할 수 있는 안목, 그런 것들은 결국 소프트웨어 엔지니어링의 기본기에서 나온다.
이 책은 AI 시대를 맞이한 개발자에게 진정으로 필요한 가장 필수적인 지식이 무엇인지를 정확히, 그리고 친절하게 보여주는 안내서다.
- 이일민 / 이프릴 대표, 『토비의 스프링』 저자
요즘 부쩍 소프트웨어 개발자의 전문성이란 무엇인지에 대한 질문을 자주 받지만, 대답을 자신있게 하기란 좀처럼 쉽지 않았다. 일하는 방식이 급변하고 있고, 정보는 넘쳐나면서도 어떤 지식은 이제 몰라도 된다는 이야기도 많이 들리는 시기이기 때문이다.
이 책은 소프트웨어 엔지니어가 결정하고 책임져야 할 영역의 지도를 그려주면서 그 질문에 대한 근본적이고 알찬 답변을 담고 있다. 실무의 지형을 생생하게 담은 이 지도는 경력의 초입에 있는 분들에게는 목적지와 방향을 안내하고, 베테랑들에게는 지나온 길을 돌아보면서 경력 여정을 정비하는 데에도 큰 도움을 줄 것이다.
- 정상혁 / IT 서비스 회사 개발조직 리더
AI 덕분에 코드 한 줄 없이 앱을 만드는 시대가 됐다. 그러나 기본 없이 막연히 AI에 맡긴 코드는 금세 재활용이 불가능한 일회용이 되고 토큰 지출 비용만 쌓인다. 엔지니어링의 힘은 결국 소프트웨어 엔지니어가 사용자와 환경이라는 기본을 이해하고, 그 산출물로서 지속 가능한 코드가 얹어져야만 발휘될 수 있다. 코드를 제대로 알려면, 단순한 한 줄이 아닌 프로젝트 전체 맥락과 핵심 뼈대를 바라볼 수 있어야 한다. 아울러 사람이 읽기 좋은 코드가 무엇인지를 알아야만, AI도 잘 읽는 코드가 되며 결국 개인의 경쟁력까지 높이는 막강한 무기가 된다.
이 책은 바로 그처럼 “사람이 제대로 알 수 있는 코드”를 유머와 위트 있는 문장으로 풀어낸다. 저자의 평소 입담이 생생하게 느껴진다. 빠른 변화에 휩쓸리기 전에, 기본을 단단히 다지고 싶은 개발자라면 꼭 읽어보길 권한다.
- 지두현 / 현대오토에버 SW개발센터장 상무
최근 코딩 에이전트가 빠르게 발전하면서 많은 사람이 새로운 도구를 어떻게 활용할지 고민하고 있습니다. 하지만 새로운 패러다임을 적용할 때일수록 도구 자체보다 먼저 보아야 할 것은 소프트웨어 엔지니어링이라는 일의 본질입니다.
이 책은 코드 작성, 테스트, 운영, 학습, 협업, AI 활용까지 소프트웨어 엔지니어가 마주하는 여러 측면을 균형 있게 나누어 보여줍니다. 그래서 처음 소프트웨어 엔지니어링을 배우는 사람에게는 넓은 지도를 제공하고, 코딩 에이전트와 일하는 법을 찾는 사람에게는 무엇을 기준으로 도구를 받아들여야 하는지 힌트를 줍니다. 빠르게 변하는 시대일수록 다시 기본으로 돌아가야 한다는 점에서, 이 책은 오늘날 AI 시대를 버텨내고 살아가야 하는 모든 소프트웨어 엔지니어에게 꼭 필요한 책입니다.
- 허정준 / Plaad 공동창업자, 『LLM을 활용한 실전 AI 애플리케이션 개발』 저자
네이트와 댄은 오랜 경험을 놀라운 통찰로 잘 갈무리해, 숙련된 개발자와 초보 개발자 모두 에게 큰 도움이 될 내용을 담아냈다.
- 크리스 크레이머 / 쏘트웍스 수석 AI 엔지니어
이런 책이 지금처럼 절실한 때는 없었다. AI가 취업 시장에 불러 일으킨 혼란과 원격 근무 방식으로 인해 전통적인 도제식 멘토링이 무너져 내린 오늘날, 이와 같은 어려움을 경력 초반의 개발자가 헤쳐 나가야 하는 이 시기에 이 책은 성장과 적응과 성과를 내는 데 필요한 지혜와 방향을 제시한다.
- 크리스토퍼 저드 / 저드 솔루션스 대표
이 책에서 댄과 네이트는 여러 해 정규 교육을 받아도 좀처럼 닿기 어려운 핵심을 직접 짚어 준다.
수십 년에 걸친 두 저자의 경험이 책 곳곳에 배어 있고, 현업 개발자가 알아야 할 것과 피해야 할 것을 세심하게 골라 담았다.
- 벤캇 수브라마니암 박사 / 수상 경력의 저자, 애자일 디벨로퍼 설립자
놀랍게도 현대의 소프트웨어 엔지니어링이 실제로 무엇을 아우르는지 전체적으로 보여 주는 책은 지금까지 없었다. 돌이켜 보면 꽤 큰 공백이었는데, 이 책은 그 빈자리를 메우며 실무자 관점에서 소프트웨어 엔지니어링의 여러 모습을 탁월하게 정리해 준다. 오라일리 Fundamentals 시리즈의 다른 책들과 마찬가지로, 신입 엔지니어와 경력 엔지니어 모두에게 아직 접해보지 못했거나 미처 존재조차 몰랐던 영역을 채워주는 귀중한 길잡이다. 강력히 추천한다.
- 닐 포드 / 소트웍스 디스팅귀시드 엔지니어
각 분야에서 일하는 사람이라면 누구나 자기가 무엇을 모르는지조차 모르는 ‘무지에 대한 무지’라는 불확실성과 마주한다. 무슨 일이 일어날지 모를 때 사람은 어떻게 준비해야 할까? 지도조차 없이 낯선 땅을 어떻게 건너야 할까?
소프트웨어 엔지니어링을 향해 나아가는 길, 곧 ‘프로그래머’에서 ‘엔지니어’로 의식적으로 옮겨가는 일도 오랫동안 비슷한 딜레마를 안겨왔다. 쏟아지는 유행어의 파도 속에서 방향을 잡아야 하고, 끊임없이 바뀌는 환경의 거친 물결을 헤쳐나가야 하며, 여기에 일터에서 커지는 AI의 영향력까지 마주해야 한다. 그래서 이 여정은 이제 막 시작한 사람에게도, 오래 일한 베테랑에게도 버겁게 느껴진다.
하지만 걱정할 필요는 없다. 네이트와 댄이 바로 그런 지도를 만들어뒀기 때문이다. 이 책은 사고방식을 엔지니어의 관점으로 바꾸는 데 필요한 기초를 차근차근 보여준다. 특정 기술을 다루는 책이 아니다. 오늘날처럼 거칠게 흔들리는 현업 환경에서 살아남는 데 그치지 않고 제대로 성장하게 해줄 역량을 다룬다.
- 라주 간디 / 소프트웨어 장인, 기술 애호가, 교육자, 『헤드 퍼스트 소프트웨어 아키텍처』, 『헤드 퍼스트 깃』, 『자바스크립트 넥스트』 저자
지은이 네서니얼 슈타 Nathaniel Schutta
쏘트웍스에서 클라우드 분야에 집중하는 아키텍트다. 『프레젠테이션 교과서』를 공동 집필했고, 『Thinking Architecturally』와 『Responsible Microservices』를 집필했다. 미네소타 대학교에서 겸임교수로 강의도 하며, 세계 여러 컨퍼런스에서 꾸준히 발표해 온 경험 많은 연사이기도 하다.
지은이 댄 베가 Dan Vega
브로드컴(Broadcom)의 스프링 개발자 애드보킷이자 자바 챔피언으로, 20년 이상 소프트웨어 개발 경력을 쌓아왔다. 문제 해결에 큰 열정을 쏟으며, 블로거, 유튜버, 강의 제작자, 연사로 활발히 지식을 나눈다. 지속적인 학습을 바탕으로 동료 개발자들에게 영감을 준다.
한국의 독자 여러분께, 한국어판 출간에 부쳐
이 책을 읽고 꼭 한 가지만 얻어가야 한다면, 지금은 그 어느 때보다 기본기가 중요해졌다는 사실입니다. 어떤 사람들은 이제 기본기는 그다지 중요하지 않다고 주장하거나, 끝없이 코드를 생성해 내는 도구가 생겼으니 예전의 오래된 규범은 제쳐둬도 된다고도 이야기합니다. 하지만 저희 생각은 정반대입니다. 코드는 값싸졌지만, 소프트웨어는 그렇지 않습니다. 소프트웨어를 내구성있게, 쉽게 무너지지 않게, 유지보수 가능하게, 가치있게 만드는 원칙은 여전히 예전처럼 강력하게 적용됩니다. 오히려 더 많은 코드가 더 빠르게 만들어지는 지금, 소프트웨어 제작의 탄탄한 바탕은 여러분 모두의 성공에 꼭 필요합니다.
이 책을 출간한 뒤, 저희 두 사람은 이런 아이디어를 현재 우리가 처한 시점에 맞춰 재구성해 ‘AI 시대의 소프트웨어 엔지니어링 기본기’라는 주제로 여러 곳을 다니며 이야기할 기회를 얻었습니다. 이런 재구성 과정에서 저희의 확신은 더욱 깊어졌습니다. 팀으로 일하고, 코드를 읽고, 디버깅하는 능력의 중요성은 줄어들기는커녕 오히려 더 커졌습니다. AI 도구가 코드를 빠르게 생성할 수는 있어도, 그 코드를 이해하고 통합하고 운영하는 일은 여전히 사람의 몫입니다.
지금 우리 업계 전반에 큰 불안감이 감돌고 있다는 사실을 잘 알고 있습니다. 그런 심정을 충분히 이해합니다만, 불안을 조금은 누그러뜨릴 수 있는 다른 관점도 함께 전하고 싶습니다. 소프트웨어 엔지니어링의 기본기를 익히며, 주어진 도구를 적극적으로 받아들이고 활용할 의지가 있다면, 여러분은 앞으로도 충분히 잘해내실 수 있다고 저희는 믿습니다. 앞으로 상황이 어떻게 전개될지는 누구도 단정할 수 없습니다. 그래도 이런 생각들이 저희가 믿는 바이며, 바로 그런 마음을 담아 이 책을 썼습니다.
저희의 작업이 한국 독자께 닿도록 애써 주신 박성철 님께 깊이 감사드립니다. 이 책이 여러분께 좋은 길잡이가 되기를 바랍니다.
- 네이트 슈타, 댄 베가
옮긴이 박성철
소규모 소프트웨어 개발 스튜디오부터 대기업, 유니콘 스타트업까지 두루 거치며 개인 개발자에서 조직 리더, CTO, 회사 대표까지 여러 역할을 맡았다. 지금은 ‘스페이스 비전 AI’에서 새로운 퀘스트를 즐겁게 수행하고 있다. 취미였던 코딩을 업으로 삼아 여러 경험을 쌓는 복을 누렸지만, 신생 학문이자 산업인 소프트웨어 개발 영역에서 오해와 시행착오를 거듭하며 힘든 순간도 많이 겪었다. 그 과정에서 자연스럽게 ‘올바른 소프트웨어 개발’이라는 주제를 꾸준히 탐구했다.
최근에는 실무뿐 아니라 강연과 글을 통해 잘못된 소프트웨어 개발 인식을 바로잡고, 개발 현장을 더 낫게 바꾸는 일에 힘쓰고 있다.
“(AI 시대가 되어) 코드는 값싸졌지만, 소프트웨어는 그렇지 않습니다.”
저자들은 한국어판 출간에 부쳐 특별 서문을 보내오면서, 이 책과 시대를 관통하는 촌철살인과도 같은 문구를 전해왔습니다. 그리고 시간이 없으면 12장 ‘즐겁게 배우며 앞서가는 엔지니어 되기’라도 꼭 읽어보기 바랍니다.
아무도 안 읽는 옮긴이 서문이겠지만, 첫 문장은 눈에 띌 가능성이 높아서 저자의 말을 빌려 저 또한 가장 전하고 싶은 말로 이 글을 시작해봤습니다. 이제 들어가는 말을 해보겠습니다.
“개발자는 기능인인가요? 전문가인가요?”
이 질문이 어렵다면 다음 질문은 어떨까요?
“AI는 개발자를 위협하는 기술인가요? 개발자의 손에 들린 마법의 지팡이인가요?”
AI가 마법의 지팡이라고 생각하신다면, 이 책은 선물입니다.
이 책은 소프트웨어 엔지니어링의 기본기라는 과감한 주제를 다룹니다. 저를 아는 분이라면 제가 ‘소프트웨어 엔지니어링’ 책을 번역했다는 소식에 의아해할 것입니다. 남들이 보기에 그간 저는 마치 소프트웨어 엔지니어링과 대척점에 서 있는 것처럼 행동했기 때문입니다.
오랫동안 소프트웨어 엔지니어링 분야에서는 개발을 정형화하려는 편이었고, 공학을 기계가 아닌 사람에게 적용하려 했습니다. 그리고 대부분의 소프트웨어 엔지니어링 학풍은 개발자를 전문가로 인정하지 않으며, 무엇보다 코드는 컴퓨터가 수행할 명령의 집합으로서 최종 산출물일 뿐이라는 주장들이 보편적이었습니다. 저자들이 이 책의 곳곳에서 코드를 인간이 읽을 문서 또는 진실의 원천이라고 부르는 것과 정반대의 견해였던 것입니다.
그 사이 인터넷과 모바일 혁명이 이어지면서 우리 업계는 폭발적으로 성장했고, 소프트웨어가 세상을 삼키는 시대에 들어섰습니다. 그리고 학계가 아닌 산업계에서 새로운 개발 규범이 정립되었습니다. 그리고 증명했습니다. 지금 여러 빅테크와 스타트업에서 고품질의 소프트웨어를 빠르게 만들어내고 있습니다.
이제 우리는 이와 같은 것들을 소프트웨어 엔지니어링이라고 부르고 있습니다. 예전과 달리 새로운 소프트웨어 엔지니어링은 개발을 사람의 활동으로 보고 이 활동을 돕는 환경에 공학을 적용하고 있습니다(제가 여기서 ‘소프트웨어 공학’이라는 표현을 쓰지 않는 이유는 너무 학문적인 것으로 들리기 때문입니다).
지난 2024년에 소프트웨어 공학 분야에서 널리 받아들여지는 지식을 총망라한 ‘소프트웨어 공학 지식 체계(SWEBOK)’가 10년 만에 개정되었습니다. 이번 네 번째 버전에서 애자일과 데브옵스와 AI가 받아들여졌습니다. 실무가 이론을 주도한다던 로버트 L. 글래스의 말이 또 증명되었습니다.
많은 분이 이 책을 읽으면 좋겠습니다. 제가 이 책을 읽고 번역하는 동안 느꼈던 기쁨을 많은 동료 개발자가 같이 느끼기 바라기 때문입니다.
특히 저와 함께 일했던 컬리의 프로덕트 조직 동료들이 꼭 읽었으면 좋겠습니다. 제가 CTO로 잠깐 있으면서 큰 도움을 드리지 못하고 떠난 것이 늘 미안했는데 제 생각과 동일한 생각을 가진 분들이 이처럼 고마운 책을 써주셔서 대신 글로 도움을 드릴 수 있게 되었습니다.
제 모태와 같은 한국 스프링 사용자 모임에게도 이 책을 권합니다. 저자 두 분은 스프링을 만든 피보탈 출신이고, 책의 많은 부분이 스프링 이면의 철학과 깊이 관련되었다고 생각합니다. 그래서 이 책의 내용이 스프링을 어떻게 사용하면 좋을지 알려준다고 믿습니다. 스프링은 좋은 개발을 지원하려고 만들어진 프레임워크이기 때문입니다.
하고 싶은 말은 많지만 모두 책에 담겨 있으니 이만 줄이겠습니다.
- 박성철
차례
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 인라인 어시스턴트
__에이전트형 AI IDE 환경
프롬프트 엔지니어링 기초
__프롬프트 엔지니어링이란
__핵심 프롬프트 엔지니어링 기법
__고급 프롬프트 엔지니어링 기법
AI가 소프트웨어 엔지니어링을 바꾸는 방법
__AI가 내 일자리를 빼앗을까
__바이브 코드 리뷰
__전력승수로서의 AI: 코드 작성에서 문제 해결로
정리
직접 실천해 보자
더 읽을거리
한국어판 특별 부록 | AI 시대에 소프트웨어 엔지니어링의 기본이 더욱 중요해지는 이유
'+ 펴낸 책' 카테고리의 다른 글
| 모던 데이터 아키텍처 설계와 구현 (0) | 2026.05.08 |
|---|---|
| 애플, 파괴적 혁신의 시작 (0) | 2026.04.21 |
| 모던 자바 동시성 프로그래밍 (0) | 2026.02.20 |
| AI 프로젝트 100% 성공을 위한 체크리스트 17 (0) | 2026.01.21 |
| 모던 API 아키텍처 설계 전략 (1) | 2026.01.08 |
댓글