업계에서 일한 시간이 하나둘씩 쌓이다 보니 나의 앞길을 어떻게 꾸려나가야 할지도 고민이지만, 업계 후배들에게 어떤 식으로 나의 고민과 경험을 전달해야 할지, 어떤 식으로 일을 하는 것이 개인과 업의 성장을 돕는 것일지 고민하는 시간이 많아지고 있다. 그러한 고민을 하는 사람들이 많아서일까 길벗에서 관련 책을 시리즈로 내고 있다. 

 스태프 엔지니어에 대한 책이 새로 나와서 읽어봐야지 하던 차에 길벗 리뷰어 프로그램이 있어 신청해서 출판사로 부터 책을 받아 읽게 되었다. (이 시리즈에서 처음으로 내돈내산이 아닌 책이다.)

 

 나는 해외에서 개발자로 8년정도 근무한 경험이 있는데, 내가 근무했던 회사들에도 스태프 엔지니어라는 직함은 최근 생겼다. 함께 일했던 친구들도 이제는 꽤 많이 스태프 엔지니어라는 직함을 달고 있다. 보통 Senior Engineer 이후 Principal Engineer로 가는 트랙이었는데, 몇년전부터 Staff Engineer라는 직함을 단 친구들이 생겼다. Principal은 왠지 약간의 학술적, 연구적 느낌이 드는 편인데, Staff는 약간 Tech Leader 성격이 느껴지는 명칭이다.

 정확한 업계의 명칭과 역할에 대한 깔끔한 공감대가 없다 보니 스태프엔지니어란 무엇이며, 어떤 역할을 해야하고, 그 역할을 수행하기 위해 어떤 것을 고려해야 하는지부터 이 책은 시작한다. 이어 스태프 엔지니어라는 직책을 얻기 위한 방법과 심지어 이직까지 소개한다. 이후 14인의 현직 스태프 엔지니어 인터뷰를 통해 앞에서 다룬 내용들이 현실에서는 어떻게 이루어지는지를 공유해주고 있다.

 책을 읽으면서 이 책의 저자는 전형적인 이과 타입이라는 생각이 들었다. :)  각 챕터들이 도입부가 있는데, 도입부에서 다루고자 하는 내용의 요약이 모두 들어 있다. 이후 본론에서는 세부 항목을 상세히 다룬다. (차례에서 이 깊이까지 목차가 정리된 것이 아니라서 좀 아쉽다. 한단계더 깊이 들어간 차례가 있으면 한번 읽고난 후 차례를 보면서 다시 생각해 보는데 편했을 것 같다.) 예를 들어 "엔지니어링 전략의 작성(p.70)" 부분을 보면 이 단락의 구조가 다음과 같이 이루어진다는 것을 알 수 있다.

  • 엔지니어링 전략의 작성
    • 언제 그리고 왜 필요한가(p.71)
    • 설계 문서 5개 작성하기(p.72)
    • 설계 문서 5개로 전략 수립하기(p.74)
    • 전략 5개로 비전 수립하기(p.76)

따라서 이 책을 한번 빠르게 읽으면서 저자의 의도를 이해했다면 각 챕터별 중간 제목을 읽어가면서 나름의 생각으로 저자의 주장에 찬성/반박하면서 읽는 것도 재미있게 이 책을 즐길 수 있는 방법중 하나일 것 같다. 나는 몇몇 챕터를 읽는 동안 저자의 주장에 동조하기 어려워서 '그럼 너라면 **** 이런 경우 어떻게 하는게 맞는 것 같냐?'라는 질문을 던지면서 저자의 반박을 생각하면서 읽었는데, 재미있었다. 

  개발자가 년차가 높아지면 기술 관리자(Engineering Manager) 또는 팀 리더(Team Technical Leader) 의 새로운 역할을 맡게 될 수 밖에 없다. 이건 내가 겪은 바에 따르면 우리나라를 비롯하여 서구권도 마찬가지이다. 하지만 '반백의 개발자'라는 로망이 있을 수 밖에 없는 엔지니어의 습성은 늘 관리자 트랙에 대해 잘못된 오해를 불러 일으킬 수 밖에 없다. 스태프 엔지니어의 R&R은 이를 극복하여 이 책의 부제처럼 '관리트랙을 넘어선 기술 리더십'을 만들어 가기 위한 업계의 고민과 그에 대한 해결방안으로 보인다. 이 책은 그 고민들의 갈피를 잡아줄 내용들로 구성되어 있다. 사실 이런 책들은 다른 기술 서적처럼 구체적인 답들을 제공해 준다라기 보다는 업계의 동료들이 나와 비슷하게 이런 고민을 하고 있고, 나와 비슷하게 이런 방식으로 해결하고자 하고 있구나 하는 공감대를 제공해 주는 게 가장 큰 가치라 생각한다. 

 이 책에서 가장 마음에 와닿았고 도움이 된 부분은 챕터 2 '스태프 엔지니어로 활동하기' 부분이었다.  전체 9가지의 세부 챕터로 이루어 지는데, 기술 리더십을 가지려면 어떻게 해야 하는지에 대한 다방면의 접근 방식이었다. 특히 현업 개발에 치이고 있을 때 기술 리더로써 좀 더 중요한 일에 집중하면서, 팀 전체의 기술 품질을 향상시키고, 지휘권을 가진 상위 상사(임원이나 상위 매니저)들과 협력하기 위해 그의 리더십을 따르면서, 구성원이 여유를 가질 수 있는 공간을 마련해 주기 위한 네트워크를 형성하는 방법.. 각각이 현업에 있는 시니어들에게 다시금 자신의 역할과 자신에게 기대되는 수행 능력을 되짚어준다고나 할까? 2.6 챕터의 '절대 틀리지 않는 방법' 같은 경우도 무척이나 실용적인 방법을 되짚어 준다.

 

시니어 기술 리더가 되려면  기술과 아키텍처에 대해 깊이 이해하고 있어야 한다. 또한 본인의 기술적 믿음에 대해서도 실용주의와 불가지론을 적용해 계속해서 스스로에 대한 의구심을 계속 가지면서 기술 및 아키텍쳐에 대한 이해와 같은 수준으로 발전시켜야 한다. (p.52)


To become a senior technical leader, you must build a deep perspective on technology and architecture. To operate as such a leader, you must then develop an equally deep pragmatism and agnosticism to technical religion to remain skeptical of yourself. (https://staffeng.com/guides/learn-to-never-be-wrong)

 

  번역은 무난한 편이었다. 살짝 아쉬운 부분이 군데군데 있긴 한데, 번역이 잘못되어 있다기 보다는 이런 기술 에세이를 번역할 때의 어려움과 번역자의 고민이 느껴졌다. 서구권 개발/업무 문화를 기반으로 쓰여진 내용일 경우 이를 배경 맥락이 없는 국내 독자들에게 전달하려다 보니 우리 글로는 조금 어색한 부분들도 있지 않았나 생각했다. 앞에서 인용한 문구의 경우도 기술과 아키텍쳐에 대한 이해와 같은 수준으로 발전시킨다기 보다는 "본인이 가질 수 있는 기술적인 신념(종교)에 대해 실용주의적 관점과 아닐 수도 있다는 불가지론적 관점을 동등하게 가져야 한다. (사실 본인이 가진 기술적 신념을 맞다고 보고 그 효력을 어떻게 얻어낼 것인지를 더 고민하는 실용주의 관점과, 그것이 본질적으로 틀릴 수도 있다고 바라보는 불가지론적 관점을 가지고 기술과 아키텍쳐를 바라보아야 한다.)" 가 좀 더 적절한 해석이 아닐까? (뒤에 이어진 문장은 'This can feel like a paradox, but it's the line you'll need to walk every day.'인데, '결국 상반되는 pragmatism과 agnosticism 두가지 관점이 매일 일상속에서 겪어야 할 여정이다'라는 번역을 떠올렸다.)

 

이 책에서 눈에 들어온 문장들 몇개를 정리해본다.

  • 자신의 네트워크가 자신에 대한 솔직한 피드백을 얻는 가장 중요한 방법(p.124) : 인맥의 정의를 제대로 설명했다고 본다. 이해 당사자들은 제대로 전달해 주지 못하는 솔직한 피드백을 줄 수 있는 사람. 그 피드백으로 자신의 성장을 조정할 수 있는 사람이 제대로 된 인맥을 가지고 있다고 생각.
  • 임원과  의사소통할 때는 대부분 계획, 상태 보고, 어긋난 일 해결 세가지 중 하나. (p.132)
  • SCQA형식: 현상황(Situation)-> 문제점(Complication)->의문점(Question)->해결책(Answer) (p.133)
  • 스태프 엔지니어가 된다는 것은 생각의 범위를 넓히는 것.... 협업으로 전체 팀의 기술 및 소셜 스킬을 발전시켜야 한다.(p.220)
  • 향후에는 어떤 모습일까, 어떤 문제를 해결해야 할까, 어떤 목표를 이룰 수 있을까? (p.268)

 

이 책의 내용을 잘 소화하려면 주석에 달린 링크 글도 찾아가 읽어보는 것이 좋겠다. 틈나는대로 구글 번역기와 함께 링크들을 읽었는데, 나는 특히 40년 경력에 대한 글(https://lethain.com/forty-year-career/)이 너무 좋았다. Junior>Senior>Staff로 이어지는 여정 속에서 각 단계별로 중요한 기준점들이 다를 수 있는데, 이 링크글에서는 나름의 깨달음을 얻었다고 할까? 이런 주옥같은 글들이 각주에 많이 소개되어 있다.

40년의 경력은 단순히 한 방향의 잣대로 이루어지지 않는다. : 출처 https://lethain.com/forty-year-career/

 

 

✔ 원문 초안은 웹으로 공개되어 있다.: https://staffeng.com/guides/

✔  책 읽으면서  잘못 인쇄된 부분도 찾아 보고했다; 66쪽 각주 오류. 13번 각주는 https://lethain.com/productivity-in-the-age-of-hypergrowth 이다. 다음 인쇄본에 반영된다고 한다.

 

반응형

 현재 모바일 플랫폼은 안드로이드와 IOS로 양분되어 있다. 전세계 모바일 플랫폼에서  대략 70%의 점유율을 차지하고 있는 안드로이드. (글로벌 70%, 우리나라: 74%, 미국 40%, 일본 34%, 유럽 68%, 2021년 3월 기준)

 안드로이드용 프로그램을 작성하는 방법은 크게 네이티브와 웹/웹앱으로 구분된다. 네이티브는 다시 자바 또는 코틀린으로 개발하는 방법과 Dart를 이용한 플러터(하이브리드)로 나눌 수 있다. 예전 안드로이드 출시 초기에 자바로 개발했었는데, 요즘 대세는 젯브레인이 개발한 코틀린인 것 같아서 기존 지식 리마인드 차원에서 '이것이 안드로이드다 with Kotlin'책을 골랐다.

3판까지 나온다는 것은....!

이것이...다 시리즈

한빛미디어에서 출간하고 있는 초보자 입문서 시리즈인 '이것이...다' 중 안드로이드 개발에 관련된 유일한 책이다. '이것이 안드로이드다'는 정말 초보자를 위한 책이다. 실제 모바일 앱, 특히 안드로이드 개발을 처음 시작하는 사람들에게는 큰 도움이 될 수 있다. 다만, 기존 개발 경험이 있는 사람들은 조금 지루할 수 있다. 

크게 3개 부분으로 나뉘는데, 코틀린을 이해하고, 안드로이드를 이해한 다음, 이를 기반으로 실제 시나리오대로 앱을 만들어보는 과정으로 구성되어 있다.

1~3장까지는 안드로이드/코틀린 개발 환경을 구축하고, 코틀린 문법에  대해 간략히 소개한다. 기존 개발 경험이 있으면 상당히 지루할 수도 있지만, 이 책의 주 대상층인 입문자들에게는 쉽게 설명하려고 노력한 것 같다. 다만 3장에서 코틀린 문법을 설명하는데, 기존 안드로이드 개발 경험이 있거나 다른 언어로 무언가를 개발해본 경험이 있는 개발자라면 코틀린이라는 언어 자체에 대한 설명이 부족하다는 느낌을 받을 수 있다. 입문서이다 보니 깊이면에서는 조금 양보한 느낌이다. 개략적인 설명과 약간의 코드에서 그친 느낌이었다.

4장과 5장은 안드로이드 앱의 일반적인 구조를 설명한다. 기존 안드로이드 앱 개발자라면 쉽게 읽으면서 넘길 수 있는 부분이다.

6장부터 13장까지는 파일을 읽고 쓰고, sqlite 데이터베이스를 다루고, 카메라로 사진을 찍어 갤러리에 이미지 파일을 저장하고, 구글 지도와 HTTP API를 호출하는 방법을 통해 서울 공공 도서관 앱을 만들어 보고, 구글 파이어베이스 서비스와 연동하는 방법으로 이루어진다. 

 

이 책의 장점과 나의 공부법

무엇보다 초보자를 대상으로 한 입문서이다. IDE 설치부터 실제적인 기능을 이용한 앱 개발까지 차근차근 매우 자세히 설명하고 있다. 따라서 책 뒷표지에서 이야기하는 것처럼 만들고 싶은 앱이 있다거나, 앱 개발자다 되고 싶다라고 하면 기본 지식과 전체적인 관점을 얻는데는 유익한 책이다.

이 책은 가급적 처음부터 차례대로 읽는 것이 좋을 것 같은데, 6장부터는 관심있는 기능만 골라 읽어가는 것도 좋아 보인다. 기존 개발자는 1장과 2장은 가볍게 읽어볼 수 있는 수준이다. 3장은 Kotlin에 대한 깊이 있는 설명은 조금 부족했는데, 그 부분에서는 안드로이드 개발자 문서를 검색해 가면서 보완했다. 

내 경우에는 1,2장을 읽고, 3장 코틀린에 대한 문법적 이해를 갖춘 다음, 4장~5장, 6장~13장을 두 부분을 병행해서 읽었다.

3판이 나올 정도로 정돈된 책 구성이 가장 큰 장점이다. 특히 서울 공공 도서관 앱은 국내 저자가 적은 책의 장점이다. 번역서의 경우 우리가 바로 활용할 수 있는 API나 앱 방식인가에 대해 회의적일 수 있는데, 저자가 우리나라분이다 보니 우리 현실로 예제를 만들어 준 부분이 좋았다.

 

 

이 책의 단점

3판이긴 한데, 내용 업데이트가 부족하였다. 표지에서는 최신 버전 완벽 대응이라고 했는데, 과거 이벤트가 마치 미래처럼 적힌 부분이 있었다. 예를 들자면 42쪽 밑에서 두번째 문단에서 "2021년 9월 기준으로 코틀린 릴리즈에서 완전히 제거될 예정입니다."라고 적혀있는데,  3판은 22년 1월에 출간되었다. 따라서 "제거될 예정"이 아니라 '제거되었다'로 변경되었어야 한다. 책 첫 부분에서 이런 부분들이 눈에 들어오다 보니 책의 이전판이 인기가 좋아서 3판까지 나온 것인지, 아니면 기술의 업데이트를 반영한 것인가? 하는 의문이 들었다.

또 책 설명이 애매한 부분이 있어서 git 리포지토리를 찾아본 적이 있는데 책에 소개된 소스코드와 조금 다른 부분도 있었다.경험이 있는 개발자 독자라면 대충 맥락을 이해하고 저자의 의도와 설명을 이해할 수 있을텐데, 초보자들은 하나하나씩 비교하면서 읽다보니 혼동할 수 있겠다라는 생각도 들었다. 예를 들어 2장 소스코드에서 88쪽 코드와  https://github.com/javafa/thisiskotlin/blob/master/SayHello/app/src/main/java/com/example/sayhello/MainActivity.kt 의 코드에서 var binding 선언 부분이 살짝 다르다.

 

 

이 책.. 코틀린으로 안드로이드 앱을 개발하고싶다는 초보 개발자 내지 학생들에게 권한다. 

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

반응형

+ Recent posts