알라딘

헤더배너
상품평점 help

분류국내저자 > 컴퓨터/인터넷
국내저자 > 번역

이름:박재호

최근작
2025년 4월 <모던 소프트웨어 엔지니어링>

박재호

포항공과대학교 컴퓨터공학과 학부와 대학원을 졸업했다. 임베디드 시스템 개발, 기업용 백업 소프트웨어 개발, 방송국 콘텐츠 수신제한 시스템 개발과 운영 지원, 클라우드에서 동작하는 서비스 개발에 이르기까지 다양한 실무 경험을 토대로 고성능 고가용성 시스템을 설계하고 있다. 코스닥 상장사인 엑셈 CTO로 인공지능과 스마트팩토리 관련 개발을 총괄했으며, 클라우드용 모니터링 시스템을 위한 아키텍처 설계도 주도했다. 지금은 레인보우브레인에서 CTO로 생성형 AI 제품 개발에 힘쓰고 있다. 『클린 코드, 이제는 파이썬이다』, 『마이크로서비스 도입, 이렇게 한다』, 『Clean Code 클린 코드』, 『피플웨어』 등을 번역하고, 『LLM을 활용한 실전 AI 애플리케이션 개발』 등을 감수하는 등 번역, 감수, 집필한 책이 40여 권을 넘는다. 각종 기술 소식을 다루는 블로그 ‘컴퓨터 vs 책’과 개발자를 위한 유튜브 ‘채널 박재호’(youtube.com/c/박재호dev)를 운영하며, 개발자들을 위한 각종 교육과 세미나도 지속적으로 진행하고 있다.  

대표작
모두보기
저자의 말

<모던 소프트웨어 엔지니어링> - 2025년 4월  더보기

이 책을 번역하기로 결정하고 처음 읽었을 때 살짝 걱정이 들었다. 소프트웨어 공학과 관련해 기존에 출간된 숱한 서적들보다는 확실하게 실무적인 내용으로 무장하고 있지만, 뭔가 머리 아픈 개발 과정의 문제점을 화끈하게 해소해 줄 만한 강력한 한 방이 약해 보였기 때문이다. 나 또한, 이 책이 사전에 빈틈없이 정해진 규율과 포괄적인 방법론을 설명하고 그에 맞춰 코드 작성 기법을 소개했다면 좋았겠다고 생각했음을 솔직하게 고백하겠다. 하지만 출판사에 원고를 넘기기 전에 퇴고를 위해 다시 한번 읽어 나가자 차츰 이 책의 진면모가 보이기 시작했다. 특히 3부에서 소개하는 훌륭한 소프트웨어 설계 원칙들이 앞쪽에서 공들여 깔아놓은 복선과 어떻게 연결되는지가 눈에 들어오면서, 1부와 2부에서 설명된 다양한 개발 관련 기술과 소프트웨어 설계 원칙의 상호 연관관계가 무척 흥미롭게 다가왔다. 현대적인 소프트웨어 공학이 직면한 가장 큰 문제는 완벽한 이론도, 훌륭한 도구도, 현업에서 검증된 개발 방법론도 아니다. 어떻게 보면 기존 프로덕션 중심의 공학에서 설계 중심의 공학으로 넘어가는 과정 중에 여전히 길을 잃고 방황하는 현실 속에서 비롯된 오해와 충돌이 아닐까 싶다. 이 책에서는 이를 해소하기 위해 과학적인 방식으로 가설을 수립하고 실험하고 여기서 얻은 결과를 토대로 점진적으로 역량을 높여가는 과정인 '학습(learning)'을 강조한다. 또한 우리가 직면한 다양한 문제와 이 문제를 풀기 위한 해법의 '복잡성(complexity)'을 관리하기 위한 전문가가 되어야 한다고 제안한다. 반복, 피드백, 점진주의, 실험, 경험주의라는 철학을 이해해서 학습의 전문가로 올라서며, 모듈성, 응집성, 관심사 분리, 추상화, 느슨한 결합도를 학습 관점에서 제대로 이해해 복잡성을 관리하는 전문가로 업그레이드한다면, 이 책에서 주장하는 소프트웨어 공학을 실천할 만반의 준비가 갖춰진 셈이다. 이 책은 누구나 실수할 수 있고, 상황은 항상 변화하며, 해법 사이에서 트레이드오프와 긴장감이 감돈다는 사실을 인정하고 들어간다. 앞서 이 책에서 뭔가 화끈한 내용이 펼쳐지지 않았다는 약간의 아쉬움은 바로 여기서 기인한다. 1986년 프레드릭 브룩스가 발표한 「No Silver Bullet - Essence and Accidents of Software Engineering」 논문에서 언급되었듯이 소프트웨어 개발에 대한 본질을 이야기하자면, 소프트웨어 개발에는 획기적인 해결책은 존재하지 않기에 은총알, 즉 어떤 단일 도구나 단일 방법론도 소프트웨어 개발 과정에서 필연적으로 등장하는 복잡함으로부터 개발자를 구원하지 못한다. 그렇다면 만병통치약인 은총알을 기대하지 못하는 상황에서 소프트웨어 개발의 복잡함과 난해함을 풀어내기 위해 우리는 무엇을 할 수 있을까? 한쪽 편에는 레거시가, 다른 한쪽 편에는 신기술이 포위하는 상황에서 진퇴양난에 빠진 개발자들의 공학적인 이해를 돕기 위해, 이 책은 수십 년 동안 살아남아 검증된 가장 핵심적인 아이디어에 집중한다. 즉 즐겁게 기획하고, 즐겁게 개발하고 즐겁게 사용하기 위해 요구사항 정의부터 설계와 개발을 거쳐 배포에 이르기까지, 모든 소프트웨어 개발에 공통적으로 적용되어야 마땅한 최적화 아이디어를 골라내고 이를 현실에서 제대로 활용하기 위해 고려해야 하는 사안을 다양한 소프트웨어 공학의 개념이나 방법론과 연결해 설명한다. 아키텍처 수립과 설계 단계뿐만 아니라 테스트와 구현 단계까지 전방위로 저자의 경험을 바탕으로 핵심적인 아이디어를 집중적으로 파고든다. 한 번쯤 소프트웨어 아키텍처와 설계 책을 읽어봤다면 방법론이나 실천 방안에 대해서는 이미 익숙할 텐데, 이 책은 여기에 다시 한번 의미를 부여함으로써 정적인 소프트웨어 공학 이론을 동적인 소프트웨어 공학 실천 방안으로 뒤바꿔 놓는다. 테스트 가능성과 배포 관점에서 모듈성을 정리하며, DDD(설계 주도 개발)와 TDD(테스트 주도 개발) 관점에서 응집성과 관심사 분리에 의미를 부여하며, 조직적이고 문화적인 문제와 기술이나 설계 문제 사이의 트레이드오프를 고려해 정보 은닉과 추상화 수준을 선택하는 방안을 제시하고, 마이크로서비스 관점에서 결합도의 어려움을 관심사 분리와 연계해 생각할 거리를 제공한다. 기존에 설계와 코드 수준에서 이런 설계 원칙을 접해본 적이 있는 독자라면, 이 책을 통해 한 단계 더 높은 공학적인 측면에서 이런 설계 원칙이 실제로 현실에서 의미하는 바가 무엇이며 어떻게 포용해야 할지를 이해하게 될 것이다. 요즘과 같이 하루가 다르게 변화하는 세상에서는, 처음부터 1분 1초도 어긋나지 않는 주도면밀한 계획을 수립하고 매번 중간 결과물이 제대로 나왔는지 철두철미하게 검증함으로써 최종 완성품을 만들어 나가는 방식으로는 성공을 담보하지 못한다. 그 반대로 소프트웨어 개발을 (애자일 방법론에서 흔히 언급되듯이) 작은 단계로 나눠 반복하면서 실험을 통해 피드백을 수집하고 학습 역량을 강화하면서 시스템에 대한 이해도를 높이는 방법으로 돌다리를 두드려 가면서 안전하고 신중하게 시스템을 확장해 나가는 방법이 우리의 성공 가능성을 더욱 높여준다. 타성에 젖어서 매일 똑같은 방법으로 프로그램을 만들고 몇 달 뒤에 후회하는 대신 당면한 문제를 빠르고 정확하게 풀어내고 이를 토대로 성장하기 위해서는 무엇이 중요할까? 이 책을 처음부터 끝까지 읽고 나서 다시 한번 자문자답해 보기를 바란다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자