오랜만에 시니어 레벨 엔지니어를 위한 경력 관리 책이 나왔다.  그렇다! 이 책은 엔지니어를 위한 책이다. 보통 일정 연차와 직급이 되면 조직 관리자/경영자의 트랙을 타게 되는데, 이 책은 기술 중심 엔지니어로 조직내에서 살아남기 위하여 어떤 관점과 역할을 수행해야 하는가를 이야기한다.

예전에 대형 인터넷 서비스 업체를 중심으로 개발자 커리어 로드맵을 듀얼 트랙으로 가져가기 위한 시도를 했는데, 정착이 안된 것 같다. 우리보다 IT의 역사가 긴 서구권에서도 마찬가지인 모양이다. Sr.Engineer 다음은 보통 Principal Engineer라는 직급을 두고 관리직으로의 커리어 발전을 시켰는데, 최근 직보 라인을 없애고, 기술 리더십을 강화하는 Staff Engineer라는 직급을 두는 곳이 많아졌다.

이 책은 크게 3부분으로 나뉜다. 1부에서는 스태프 엔지니어라는 새로운 직급에 대해 알아본다. 이 과정은 매우 중요하다고 생각한다. 책 전반에서 다루는 내용을 정리하기 위해서는 이 역할의 정의와 그에 기대되는 결과에 대한 동의를 구할 수 있기 때문이다. 그리고 굳이 새로운 직급을 만든 배경을 다른다.

2부에서는 스태프 엔지니어가 업무를 수행함에 있어 가장 중요한 프로젝트의 시작과 끝, 그 과정에서 리더로서 챙겨야할 것들을 다룬다. 재미있는 점은 프로젝트의 진행이 원활하지 않을 때 어떤 상황인지에 따라 다양한 방식으로 프로젝트를 중단하는 방법도 한 챕터로 다루고 있다.잘 진행되지 않는 프로젝트도 어떻게든 마무리 짓는 것이 리더의 몫이다.

3부에서는 스태프엔지니어로서 선한 영향력을 확대하는 방법을 다루는데, 다양한 교육방식이나 간접 영향력을 행사하는 사례들을 공유해 주어 현업에서 고민해보고 시도해볼 수 있는 방안을 제공해 준다.

이 책은 시니어 레벨로 진입하는 엔지니어들이 그 다음 단계로 올라가기 전에 읽으면 좋을 내용이다. 어떤 방식으로 더 성장하면서 성숙한 엔지니어가 될 것인가, 회사에 어떤 식으로 기여해야 시니어 개발자 이상의 기술 리더가 될 것인가라는 묵직한 주제에 대해 선배 개발자들의 고민을 공유하고 정리한 책이다. (본인의 에너지와 삶의 질에 대해서도 질문을 던진다.)

번역은 전반적으로 매끄러웠다. 한가지 아쉽다면 "만약"이라는 단어가 너무 많이 사용되는 듯 했다. 이 리뷰를 읽으시는 분이라면 만약이라는 단어가 눈에 더 띌지 모르겠다. 책 내용 전반은 잘 번역되어 매끄럽게 전달되었다.

우리나라도 이제 개발 업력들이 쌓여가고 있는데, 선배 개발자들의 고민을 정리한 책들이 한권정도 나와주었으면 좋겠다.

 

 

 

 

더보기

스태프엔지니어: 기술 전문 리더십

 

직함은 권위를 자동으로 부여해주고, 역량 수준을 대변해 주므로, 그것을 증명하는데 사용할 시간과 에너지를 아껴줌.

 

올바른 결정은 맥락에 기반을 둠. 그래서 때에 따라 다를 수 있고, 특정기술 장단점 이외에도 지엽적인 세부사항까지 꼼꼼히 알아야 올바르게 결정 가능

조직 전체 관점 또는 제3자 관점에서 가장 좋은 결정을 내릴 수 있는 의사결정자 필요.

높은 퀄리티의 엔지니어링으로 프로젝트를 제시간 내에 완료하는 것

 

개인이 직접 경험할 수 있는 경험의 양은 한정. 코드와 설계를 리뷰하면서 아키텍쳐 모범 살{를 제공하고, 좀 더 빠르고 쉽게 일할 수 있는 도구를 만들어 영향력을 행사

 

그간 쌓아온 경력과 경험에서 나오는 실력과 직감이 필요.

모든 문제를 효과적으로 해결해야 한다. 문제 해결이 가장 중요

기술전문가로서 조직이 올바른 기술 방향을 설정하고 있는지 확인 필요

본인의분야를 명확히하고, 그 안에서 영향력을 행사하여 성과를 내야 한다.

여러분이 조직의 성공을 위해 해야 할 일은 무엇인가?

 

 

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

 

 

 

반응형

요즘은 게임을 만들려면 게임엔진을 활용하는 것이 일반적이다. 그중에서도 양대산맥은 유니티와 언리얼이다. 특히 유니티는 유연한 라이선스 모델과 풍부한 리소스 덕분에 캐주얼 게임이나 인디게임 등에서 많이 채택하여 사용되고 있다.  하지만 유니티가 워낙 많은 기능을 제공하다 보니 초반에 유니티를 배워볼까 하는 사람들에게는 어떤 책을 선택할까도 또 하나의 고민거리가 되곤 한다. 지인을 통해 추천받았던 유니티 도서들 중 하나가 Retr0님의 유니티 에센스 책이었는데, 이번에 개정판이 나와서 한번 살펴보면서 그동안의 지식을 업데이트해보았다. 참고로 나는 게임 개발자는 아니다.

전과수준으로 두꺼운 유니티.. 에센스면 정수만 뽑은건데..&nbsp;

첫 느낌...두껍다.

1070쪽의 두꺼운 분량이다. 두께가 주는 첫인상을 무시할 수는 없다. "아... 이 정도를 봐야 유니티의 개념을 익힐 수 있단 말이지"하는 생각이 절로 든다. 다행히 500쪽 정도로 2권이 분철되어 있어서 그래도 가볍게 들고 다니면서 볼 수 있었다. 분철된 도서는 처음이었는데, 사용경험이 생각보다 괜찮았다. 앞으로도 두꺼운 책은 분철된 형태로 구매하게 될 것 같다. 회사 다니면서 이 책의 내용을 전부 해보면서 읽었는데 대략 2주 정도 소요되었다.

 

4가지 게임 만들기

이 책의 흐름은 4개의 게임을 만들어보면서 유니티를 익히는 것이다.  4개의 게임을 잘 선택했다고 본다. 첫 번째로 만드는 <닷지>를 통해 유니티 인터페이스와 기본적인 에셋을 추가하고 스크립트를 적용하면서 MonoBehaviour,에 대한 개념을 익힌다. Unity의 좌표 시스템을 통해  캐릭터를 움직이고, Collider를 적용하면서 캐릭터의 충돌 감지 개념을 익힌다. 이 모든 것을 컴포넌트 기반으로 쌓아 올려서 게임을 만들 수 있구나 하는 생각을 하면서 게임을 따라 만들어 보았다.

두 번째로 만드는 게임은 <유니런>이라는 2차원 플랫폼 게임이다. 닷지를 통해 기본적인 내용을 익힌 상태에서 애니메이션 클립과 유한 상태 머신을 이용하는 방법을 배울 수 있는 좋은 예제였다. 여기까지가 1권의 내용이다.

2권에서는 좀비 서바이버라는 탑다운 슈팅 게임(마치 플레이어를 내려보는 관점에서 슈팅 게임)을 만들고 이를 네트워크 게임 플레이가 가능하도록 확장하는 내용으로 이루어져 있다.  유니티가 제공하는 인공지능 컴포넌트를 이용하여 좀비가 돌아다니면서 플레이어를 쫓아다니는 기능을 만든다거나, C# 인터페이스를 통해 코드의 재사용성을 높이기 위한 방법, 3D 모델에 레이어 개념을 적용하여 효과적인 애니메이션 효과를 얻는 방법, 포톤 엔진을 이용하여 다중 플레이어 게임을 만드는 방법(로비 기반)까지 설명하고 있다. 

예제를 통해 유니티 기초부터 활용까지 훑어볼 수 있게 설명했다는 점에서 저자가 고민을 많이 했다고 느껴졌다. 기능을 펼쳐놓고 이것저것의 기능을 설명하는 것이 아니라 백지상태에서 조금씩 기능을 추가로 사용하면서 익혔는데, 그 과정에서 4개의 게임이 만들어지도록 함으로써 흥미가 떨어지지 않고 끝까지 편하게 읽을 수 있었다.

 

친절한 설명

이 책의 독자가 누구일까? 나는 프로그래밍이 완전히 익숙하지 않은 유니티 게임 개발자가 되고 싶은 사람들을 위한 첫 책을 찾는 사람이라 생각한다. 책이 두꺼운 이유는 저자가 너무너무 상세하게 각 개발 과정을 설명하고 있다. 예를 들어 코드 설명도 초기 구조 설명 -> 각 부분별로 기능을 추가하면서 수정되는 내용 설명 -> 최종 완성된 전체 코드를 설명한다. 즉 깃헙으로 제공되는 기본 코드 골격에 이런 기능을 추가할 것이야 하면서 설명하고, 각 기능을 붙이면서 코드 한줄한줄 의도와 동작 방식을 설명한다. 그리고 그렇게 부분 부분 수정한 다음 완성된 전체 코드는 이런 모습이야 라고 보여줌으로써 초보자들의 실수를 막아준다. 예제대로 하다 보면 실수로(?) 뭔가를 빼먹었을 경우 여러 단계에서 쉽게 확인하여 수정할 수 있었다.

유니티를 사용하여 게임을 만드는 것 이외에도 C#의 기본적인 언어 특성을 설명하는데 꽤 많은 공을 들인 책이다. 하지만 언어 자체를 집중적으로 다루었다기보다는 게임 제작에 필요한 수준으로 설명하고 있다. 어느 정도 개발경험이 있는 독자라면 이런 부분은 다른 프로그래밍 서적과 유사하기 때문에 쉽게 진도를 나갈 수 있다. 예컨대 변수, 함수, 메서드, 제어문, 배열, 상속, 인터페이스, 풀링, 싱글톤, 람다식 등을 소개한 부분은 금방 넘길 수 있을 것이다. 초심자의 경우 개념을 익히는 수준에서 잘 설명되어 있다.

나의 경우 1권을 통해 유니티 개념을 살펴보고 2개의 예제 게임을 직접 만들어 보는데 3일,  2권을 통해 네트워킹까지 해보는데 4일 정도 소요되었다. 주로 주말에 집중해서 읽고 실제로 해보면 금방 저자가 전달하고자 하는 의도를 이해할 수 있었다.

 

나의 실수

책 읽으면서 한 가지 실수한 것이 있는데, 소스코드가 깃헙으로 공유되고 있다는 사실을 알고 있었다. 그런데 개정판 리포지토리가 이전 버전과 다른 것을 몰랐다. 저자분의 리포지토리를 구글링을 통해  방문했을 때 이전 버전이 맨 처음 노출되어서 이를 클론 하여 실습을 진행하였다. 그랬더니 가끔씩 책 내용에는 Asset 폴더에 있다는데 아무리 찾아봐도 없는 경우가 발생했다. 예컨대 Zombie 스크립트도 없어서 직접 작성하였다. 그 과정에서 ZombieData라는 객체를 사용하는 코드가 있는데 (750쪽) 이와 관련된 코드가 깃헙에 제공되는 코드가 없어서 결국 책 색인 부분에서 찾아서 774쪽에 나온 ZombieData 스크립트의 완성 버전을 입력하여 원하는 기능을 완성하였다.  오타를 발견한 줄 알고 출판사에 알려줘야지 하고 메모해 두었는데, 개정판 리포지토리가 따로 있는 것을 알고 방문했더니 떡하니 있는 게 아닌가.. 

저자분이 이전판 리포지토리에서 개정판 리포지토리를 안내하도록 README.md 파일을 수정해주면 나와 같은 실수를 겪는 독자가 없을 것이다.

 

 

요약

이 책을 한번 읽었다고 해서 자신이 원하는 게임을 쓱쓱 만들 수는 없을 것이다. 하지만 기본 개념들을 익히고, 자신이 원하는 게임을 만들고자 할 때 어떤 부분을 좀 더 봐야 하겠구나라는 방향타를 얻기에는 정말 좋은 책인 것 같다.

 

이 책을 다음 세 문장으로 소개하고 싶다.

  • 유니티에 대한 친절한 설명. 입문자용으로 매우 적합. 너무너무 친절한(기존 개발자에게는 지루할 정도의) 설명
  • c#이나 다른 언어에 익숙하다면 코드 부분은 정말 손쉽게 넘어간다.
  • 게임을 만들면서 개념을 익힐 수 있도록 잘 설계된 책.

 

 

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

 

반응형

+ Recent posts