[IT] 알고리즘 인사이드 with 파이썬

2023. 11. 25. 13:10 | Posted by 꿈꾸는코난

< 알고리즘 인사이드 with 파이썬 > | 손혁제 지음 | 한빛미디어

 

많은 IT 기업에서 개발자 채용시 코딩 테스트를 시행하고 있다. 이 코딩 테스트는 단순히 개발 언어를 잘 알고 있느냐가 아니라 주어진 문제를 잘 이해하고 해결 과정을 최적화된 알고리즘으로 잘 구현할 수 있느냐를 테스트하는 과정이다. 따라서 코딩 테스트에는 다양한 자료고와 알고리즘과 기반 지식을 얼마나 알고 있는냐를 판단할 수 있도록 구성되어 있는 것 같다.

많은 개발자들이 개발 언어에 대한 스킬을 높이는데 관심이 많은 것 같다. 하지만 개발자의 핵심 역량은 도구로서의 개발언어가 아니라 주어진 문제를 제대로 파악하고 구현하는 알고리즘 역량이라고 생각한다. 이를 통해 개발자로서 해결해야 하는 문제를 좀 더 잘 이해하고, 더 잘 구현할 수 있는 능력이 생기게 되는 것 같다.

이 책은 다양한 알고리즘 문제를 제시하고 혼자서 풀어볼 수 있도록 되어 있다. 이를 위한 준비단계로써 파이선 문법과 정규표현식을 Part 1에서 설명한다. Part 2에서는 기본 자료구조와 기본 알고리즘을 설명하면서 알고리즘 문제를 풀기 위한 기본 지식을 갖추도록 한다. Part 3부터는 알고리즘 풀이를 위한 문제는 제시한다. 카테고리별로 재귀, 탐색, 공간, 순열 및 조합, 배열 등 다양한 알고리즘에 대한 문제를 포함하고 있다. 각 문제마다 문제에 대한 정의와 문제 해결 방법, 해결 코드가 제시되고, 특히 해결 코드는 단순히 코드만 보여주는 것이 아니라 코드에 대한 자세한 설명이 있어서 코드에 대한 이해를 한층 높일 수 있는 것 같다.

파이썬 개발자라면 이 책을 통해 다양한 알고리즘 문제를 풀고 이해하는데 많은 도움이 될 것 같다. 굳이 파이썬 개발자가 아니더라도 자신한테 익숙한 개발 언어를 이용하여 문제를 풀어볼 수도 있을 것 같다. 개발 언어만 달라질 뿐이지 핵심 알고리즘이 달라지는 것은 아니기 때문에 문제 풀이를 통해 충분히 이해할 수 있지 않을까 생각한다.

 


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

[IT] 사라진 개발자들

2023. 9. 24. 23:20 | Posted by 꿈꾸는코난

< 사라진 개발자들 > | 캐시 클라이먼 지음 | 이미령, 김태곤 지음 | 한빛미디어

 

흑백사진 한장으로 부터 출발한 이름없는 여성들에 대한 이야기이다. 이 책을 읽으면서 예전에 본 영화 히든피거스가 떠올랐다. NASA에서 극심한 여성 차별을 견디며 자신들만의 능력을 보여준 여성들의 이야기를 잘 보여준다. 이 책도 마찬가지다. 남성들만의 전유물로 여겨진 애니악의 역사에서 핵심적인 프로그래밍을 담당한 여성 수학자들의 모습을 볼 수 있다.

제 2차 세계대전 중 남성들이 전장에 나가면서 생긴 공백을 여성들이 채우기 시작한다. 그 중 한 영역으로 여성 수학자들을 동원하여 포탄의 궤도를 계산하는 역할을 맡기게 된다 . 애니악을 운용했던 6명의 여성 개발자도 전쟁이라는 특수한 상황속에서 남성들의 전유물이었던 컴퓨터를 운용하고 프로그래밍을 익히게 된다. 컴퓨터의 역사에서 애니악은 주요한 부분을 담당하지만 애니악 프로그램에 대해서는 접해본 적이 별로 없는 것 같다. 최초의 컴퓨터라는 호칭만 나오지 실제 애니악을 이용한 개발은 잘 드러나지 않았던 것 같다. 그 애니악의 개발 역사에서 여성 6명이 핵심 역할을 했다는 것이 알려지지 않았다는 것은 그만큼 컴퓨터의 역사가 남성들의 전유물로 여겨지고 있다는 것을 알 수 있다.

현재 여성 개발자가 많이 있지만 여전히 남성 개발자가 많은 비중을 차지하는 것 같다. 개발이라는 측면을 본다면 다른 공학과는 달리 여성이 능력을 발휘할 수 있는 분야라고 생각한다. 하지만 아직도 남성이 많다는 것은 여전히 여성들에 대한 진입 장벽이 존재한다는 것을 의미한다고 볼 수 있다.

이 책에서 소개되는 6명의 이야기를 전개하기 위해 저자는 관련된 인물을 일일이 인터뷰하고 방대한 분량의 참고문헌을 확인했다. 이러한 부분은 책 뒷쪽의 참고문헌을 보면 잘 드러난다. 또한 관련된 사진을 통해 그 당시의 모습을 잘 엿볼 수도 있다.

애니악의 역사에서 여태까지 모르고 있었던 숨겨진 여성 개발자를 접할 수 있어서 흥미로웠다. 그들의 열정을 보면서 나 자신을 반성하기도 헀고, 사회적인 편견과 무시를 받으면서도 성공으로 나아가는 모습을 보면서 희열을 느끼게 되었다. 근래 잘 알려지지 않은 여성들에 대한 이야기를 서술한 책을 몇권 보게 되는데 그런 이야기를 접할 때마다 나 자신도 여성을 바라보는 시각이 매번 바뀌는 것을 느끼게 된다.

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

'꿈꾸는 책들의 도시' 카테고리의 다른 글

[IT] 핸즈온 머신러닝  (1) 2023.10.27
[자기계발] 입 닥치기의 힘  (1) 2023.10.13
[인문] 만화로 보는 그리스 로마 신화 1~2  (1) 2023.09.24
[요리] 용BEER천가  (0) 2023.09.21
[문학] 반항인  (0) 2023.09.21

[IT] 파이썬 크래시 코스

2023. 8. 24. 17:25 | Posted by 꿈꾸는코난

< 파이썬 크래시 코스 > | 에릭 마테스 지음 | 한선용 옮김 | 한빛미디어

 

파이썬은 전 세계적으로 인기있는 프로그래밍 언어 중의 하나이다. 특히 개발을 처음 접하는 사람들이 가장 많이 선택하는 언어 중의 하나이며, 인공지능 관련 개발을 한다면 거의 대부분 파이썬 언어를 선택하고 있다. 시중에 파이쎤 관련된 책들이 많이 나와 있지만 대부분 기초에 관련된 부분을 언급하거나 아니면 실제 파이썬 언어를 잘 사용하는 사람들이 활용할 수 있는 응용 부분에 치중되어 있다. 즉 기본부터 활용까지 전반적으로 두루 살펴볼 수 있는 책은 그리 많지 않는 것 같다. 이런 측면에서 이 책은 기본편과 실습편으로 나누어져 있어 그 활용도가 높다고 볼 수 있다. 파이쎤을 처음 접하는 사람이라면 기본편부터 출발해서 실습편까지 쭉 이어서 학습할 수 있으며, 파이썬에 어느정도 익숙한 사람이라면 자신에게 필요한 부분을 선별해서 학습할 수도 있을 것 같다. 또한 중간 중간 연습문제가 포함되어 있어 자신이 학습하고 있는 부분에 대해 제대로 이해하고 있는지 확인도 가능하다.

기본편에서는 파이쎤 프로그래밍 언어에 대한 기본적인 개념을 익힐 수 있도록 한다. 기본적인 파이썬 개발 환경을 구성하는 것으로 시작해서 프로그래밍을 처음 시작할 때 항상 나오는 "Hello World"를 출력하는 프로그램을 작성한다. 이후 변수와 단순한 데이터 타입에 대해 설명하며, 파이썬에서 제공하는 유용한 데이터 타입 중의 하나인 리스트와 딕셔너리에 대해 상세히 설명한다. 또한 제어를 위한 if 문과 while 문, 그리고 함수에 대해 설명을 진행하며, 클래스와 파일 처리에 대한 설명을 함으로써 기본편이 마무리된다.

실습편에서는 실제 파이썬을 이용하여 게임을 만들어 나가는 예제를 설명한다. 외계인 침공이라는 게임 제작을 위해 필요한 불을 뿜는 우주선, 외계인, 점수 매기기 등을 설명한다. 데이터 시각화를 위해서는 데이터를 생성하고 데이터를 내려받고, API를 사용하는 방법을 보여준다.

전반적으로 코드에 대한 설명이 상세하게 되어 있어 초보자도 쉽게 차근차근 따라갈 수 있도록 되어 있다. 기본 개념에 대해서도 충실하게 되어 있을 뿐만 아니라 실습편에서도 이해하기 쉽게 설명되어 있어 중간에 좌절하지 않고 끝까지 해 나갈 수 있게 도와주는 것 같다.

이 책의 목표에 적혀 있는 대로 이 책은 파이썬으로 게임이나 데이터 시각화, 웹 애플리케이션 같은 프로그램을 가능한 한 빨리 만들어 보는 것이다. 따라서 프로그래밍 기본을 빠르게 배우고 싶은 사람, 문제를 해결하면서 새로운 컨셉을 이해했는지 확인하고 싶은 사람에 적합한 책이라고 생각한다. 또한 이 책을 통해 파이썬 언어에 대한 고급 기술을 익히고 다른 프로그래밍 언어를 배울 때 기본 개념을 좀 더 수월하게 익힐 수도 있을 것 같다.


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

'꿈꾸는 책들의 도시' 카테고리의 다른 글

[인문] 뉴욕, 기억의 도시  (1) 2023.08.30
[예술] 미학 스캔들  (0) 2023.08.25
[경제] 투자의 구원자들  (0) 2023.08.24
[인문] 나이가 든다는 착각  (0) 2023.08.24
[역사] 우리 역사 속 전염병  (0) 2023.08.12

[IT] 프로덕트 매니지먼트

2023. 7. 20. 15:47 | Posted by 꿈꾸는코난

< 프로덕트 매니지먼트 > | 김영욱 지음 | 한빛미디어

 

예전에는 프로젝트 관리에 관련된 역할을 언급하면 대부분 PM(Project Manager)을 떠올렸던것 같다. 하지만 어느 순간 PL(Project Leader), PO(Product Owner), PM(Proudct Manager) 등 다양하게 구분된 역할로 나뉘게 된 것 같다. 그리고 각각의 개념과 역할을 상세하게 설명하는 책이 출판되고 있다. 하지만 각각의 역할만 떠올려보면 대충 이해가 가는 것 같으면서도 다른 역할과 동시에 생각하면 여전히 서로 혼동되는 것도 사실인 것 같다. 이 책은 프로덕트 매니저에 대한 전반적인 것을 소개하고 있으면서도 다른 혼동하기 쉬운 역할과의 차이점에 대해서도 잘 설명해주고 있다.

프로덕트 매니지먼트를 설명하기 전에 먼저 프로덕트가 무엇인지를 알아야 한다. 그리고 프로덕트를 구성하는 컴포넌트 개념도 이해를 해야 한다. 개념적으로 프로덕트는 소비자가 보는 전체 프로덕트일 수도 있고 기능에 따라 더 작은 부분으로 나눠질 수도 있다는 사실이 중요하다. 프로덕트가 만들어지고 사용자에게 전달되는 과정과 다양한 문서자료들, 엔지니어링 팀이 사용하는 공유 컴포넌트 등 모든 것이 예상하는 동작을 하게 만드는 책임을 가진 사람이 프로덕트 매니저이다. 즉 프로덕트 설계, 개발, 테스트, 릴리즈, 라이프사이클 모든 것에 대해 책임지는 역할이라고 생각할 수 있다.

프로덕트 매니저 역할에 대해 혼동을 피하기 위해 프로덕트 매니저의 역할인 것과 아닌 것을 구분해 보면 좋을 것 같다. 프로덕트 매니저의 역할로서는, 1) 커뮤니케이션의 허브 역할, 2) 우선순위 조정 역할, 3) 프로덕트 대표이자 치어리더 역할이다. 반대로 프로덕트 매니저의 역할이 아닌 것으로는, 1) 보고 라인에 있는 팀 상사, 2) 능숙한 기술자, 3) 마케터, 4) 프로덕트 오너, 5) 애자일 전문가, 6) 데이터 분석가나 사용자 리서처이다. 일부 역할에 혼동이 있을 수는 있지만 이 역할을 제대로 이해한다면 프로덕트 매너저로서의 역할이 무엇인지 조금은 명확해질 수 있는 것 같다.

PM이라는 용어는 Product Manager, Project Manger, Program Manager가 서로 같이 혼용해서 사용한다. 용어는 같이 사용하더라도 각각의 역할은 엄연히 다르다는 것을 알고 있어야 한다. Product Manager는 프로덕트의 '무엇'과 '왜'에 초점이 있는 역할이며, Project Manager는 프로덕트의 '언제'에 관심이 있는 역할이며, Program Manager는 프로덕트를 '어떻게" 책임지는 역할이라고 보면 된다. 이 관점에서 본다면 세가지 역할이 어떻게 다른지 잘 파악이 되는 것 같다.

1장에서 프로덕트 매니지먼트에 대한 개념을 설명한 후에 좀 더 구체적으로 프로덕트 라이프 사이클, 프로세스 및 프레임워크에 대해 소개한다. 일반적으로 알고 있는 프로덕트 개발 라이프사이클과 달리 프로덕트 라이프 사이클은 별도로 존재한다. 또한 프로덕트를 만들기 위해 다양한 프로세스와 프레임워크가 존재하는데 각 조직에 맞는 프로세스와 프레임워크를 적용하는 것이 중요하다는 것을 언급하고 있다. 어느 잘 나가는 조직이 사용하는 프로세스와 프레임워크를 그대로 받아들이는 것이 아니라 조금의 시행착오를 거치더라도 조직에 맞는 프로세스와 프레임워크를 찾아서 적용하는 것이 필요하다.

프로턱트 개발에서 중요한 것은 고객이 원하는 프로덕트를 개발하는 것이다. 이런 측면에서 고객 개발이라는 파트에서 고객의 요구를 수집하고 반영하는 방법에 대해 소개하고 있으며, 경쟁력있는 프로덕트를 위해 프로덕트 전략 및 로드맵이 중요하다는 것을 잘 보여주고 있다. 이어서 PM의 일상적인 업무와 능력있는 PM이 되기 위해 필요한 요소들에 대해 설명을 하고 있다.

처음 책을 읽을 때는 프로덕트 매니저의 역할이 다른 PM과 무엇이 다른지가 궁금했었다. 하지만 책을 읽으면서 프로덕트 매니저의 역할 뿐만 아니라 프로덕트에 대한 전반적인 개념을 한층 이해할 수 있었으며, 특히 PM의 일상 업무 파트에서는 제대로 개념을 파악하지 못하고 있었던 와이어프레임, 프로토타입, 목업에 대해 알 수 있게 되었다. 또한 백로그, 에픽, 사용자 스토리에 대한 이해도 한층 깊어진 것 같다. 프로덕트 매니저에 대한 이해를 높기 위해 시작했지만 프로덕트에 대한 전반적인 이해와 세부 개념에 대한 이해의 폭을 넓힐 수 있는 좋은 계기가 되었다.

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

< 개발자를 넘어 기술 리더로 가는 길 > | 타냐 라일리 지음 | 김그레이스 옮김 | 디코딩

 

이전과 달리 많은 기업들이 관리자 트랙과 개발자 트랙을 별도로 운영하고 있다. 관리자 트랙은 이미 오래전부터 사용되던 방식이기 때문에 큰 이슈는 없을 것이다. 하지만 개발자 트랙은 운영하는 회사마다 조금씩 다른 측면을 보인다. 외부에서 봤을 때는 체계적인 개발자 트랙이 존재하는 것처럼 보이지만 내부적으로 보면 별도 체계가 없는 조직도 제법 존재하는 것 같다. 개발자 트랙을 어느정도 운영하는 조직에서도 경력에 따른 개발자의 역할과 관리자와의 관계에 대해 크게 관심을 두고 있지 않는 곳도 일부 있는 것 같다.

많은 사람들이 공감하듯이 개발자가 가장 약한 부분 중 몇 가지가 의사소통 능력과 인원관리 능력이다. 하지만 이 능력은 관리자가 되기 위해서는 꼭 필요한 능력으로 볼 수 있다.  개발자 트랙이 제대로 갖춰지지 않은 조직이라면 개발자는 어쩔 수 없이 관리자 역할을 떠맡게 되고 결론적으로 성과가 떨어지는 경우를 종종 보게 된다.

이 책에서는 개발자가 나아갈 방향으로 스태프 엔지니어라는 해결책을 제시한다. 스테프 엔지니어는 개발자들의 롤모델로서 기업의 기술전략을 결정하고, 동료들의 역량 향상에 도움을 줄 수 있다. 또한 대규모 프로젝트에서 전체적인 기술 검토 및 아키텍처를 설계하고 진행 과정에 나올 수 있는 다양한 현안에 대해 해결 방안을 제시할 수도 있다.

스테프 엔지니어는 좁은 관점이 아닌 빅 피처 관점에서 업무를 다루고 전략적으로 수행할 수 있으며, 프로젝트를 전술적으로 주도하고 실용적인 방법으로 문제을 해결하며, 우수한 엔지니어의 의미를 이해하고 그 능력을 갖춘 엔지니어로 볼 수 있다. 이를 위해 스테프 엔지니어에 대한 개념과 역할을 명확히 설명하고, 성공적인 프로젝트 실행과 대규모 프로젝트 진행을 위해 필요한 고려사항 및 절차에 대해 보여준다. 또한 스테프 엔지니어로서 어떤 롤모델 역할을 해야하는지와 필요한 역량이 무엇인지를 설명한다.

궁극적으로 이 책을 통해 개발자의 직책으로 스태프 엔지니어가 필요한 이유에 대해 기업 및 개발자 관점에서 이해할 수 있고, 스테프 엔지니어의 역할에 맞춰 조직의 목적을 달성하는 방법을 알 수 있으며, 최종적으로 개발자로서 더 높은 단계로 성장하기 위해 무엇이 되어야 하는지에 대해 공감할 수 있다.

물론 회사에서 조직적으로 뒷받침되지 않으면 스테프 엔지니어라는 개념이 무용지물이 될 수 있다. 하지만 개발자의 미래를 위해  스테프 엔지니어라는 역할의 필요성을 이해시키고 지속적으로 개선해 나가는 노력이 필요한 것 같다. 그런 측면에서 이 책을 조금 더 빨리 알았으면 하는 아쉬움이 있다. 많은 개발자들이 자신의 미래 모습을 고민하는 현실에서 경력 사다리를 체계적으로 밟아갈 수 있는 역할과 목표가 주어진다면 그 고민의 많은 부분을 덜어줄 수 있지 않을까 생각한다.

개발자의 미래에 대해 한층 깊이있는 고민과 이해를 할 수 있는 소중한 책인것 같다.


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

 

< Docs for Developers 기술 문서 작성 완벽 가이드 > | 자레스 바티 외 4인 지음 |

하성창 옮김 | 한빛미디어

 

개발자를 포함한 소프트웨어 엔지니어들이 가장 힘들어하는 영역중에 하나를 꼽는다면 문서 작성이라고 말할 수 있을 것 같다. 특히 개발자의 경우 일상적인 대화는 문제가 전혀 없는데 작성된 문서를 보면 많은 차이가 생기는 것을 보게 된다. 책에서도 언급이 되지만 문서 작성을 위해 워드나 한글 프로그램을 실행한 후 한동안 멍하게 있는 경우도 종종 보곤 한다. 그만큼 문서의 작성이 쉽지 않다는 것을 보여주는 것 같다.

이 책은 소프트웨어 엔지니어가 어려워하는 문서 작성에 대한 단계별 절차를 잘 설명한다. 실제 업무 환경과 유사하게 강아지 음성 번역 서비스를 개발하는 개발팀을 통해 사용자 파악, 요구사항 분석, 절차 등을 실제와 유사하게 보여준다. 특히 개략적인 설명에 끝나지 않고 필요한 요소와 이에 대한 템플릿을 같이 제시함으로 실제로 문서 작성을 시작하기 어려웠던 사람들에게 실용적인 가이드를 제시해 주고 있다.

이 책은 크게 11개의 장으로 구성되어 있다. 1장 독자 이해하기에서는 문서화를 위해 필요한 사용자 공감의 중요성에 대해 언급하며, 인터뷰, 개발자 설문조사, 고객 지원 문제 검토와 같은 사용자 조사 및 도구를 사용할 수 있음을 설명한다. 특히 사용자의 경험에 대한 마찰 로그를 문서화하고 이를 통해 사용자와 공감하는 것이 중요하다는 것을 잘 보여준다. 2장 문서화 계획하기에서는 만들어야하는 콘텐츠 및 컨텐츠 유형을 문서 작성에 앞서 설명하는 것이다. 문서화 계획은 사용자가 필요로 하는 콘텐츠의 유연한 밑그림 역할을 하면서 소프트웨어 엔지니어가 가장 중요한 문서를 작성하는데 집중할 수 있도록 해 준다.

3장 문서 초안 만들기에서는 편안하고 친숙한 문서 작성 도구를 선택하여 성공적인 글쓰기 준비를 도와주며, 4장 문서 편집하기에서는 작성된 초안을 기반으로 정확성,  완결성, 구조, 간결성, 명확성을 높이는 방향으로 진행되며 특히 동료 검토 및 피드백의 중요성에 대해 잘 알 수 있다. 이어지는 모든 장에서도 각 단계에 맞는 적절한 문서 단계에 대해 설명한다. 특히 10장 문서 구조화하기와 11장 문서 유지 관리 및 지원 중단하기는 문서를 작성한 후 관리를 위해 필요한 여러 단계 및 계획에 대해 잘 설명하고 있다.

문서 작성에 대해 어려움을 느끼거나 거부감을 느끼는 사람도 많은 것 같다. 이는 문서 작성 자체에 대한 어려움보다 제대로된 문서 작성 경험 부족과 제대로 된 절차를 잘 알지 못해 생기는 경우가 더 많다는 생각이 든다. 문서 작성에 어려움을 느끼고 있는 소프트웨어 엔지니어라면 이 책을 통해 문서 울렁증에서 벗어날 수 있는 계기가 될 수 있을 것 같다.

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

[IT] 게임 전쟁

2023. 4. 21. 12:20 | Posted by 꿈꾸는코난

< 게임 전쟁 > | 스티븐 켄트 지음 | 심백선 옮김 | 한빛미디어

 

게임을 즐겨하지 않고 따라서 콘솔 게임을 제대로 해 본적은 없지만 적어도 소니나 닌텐도, 마이크로소프트의 게임 콘솔 이름이 무엇인지 정도는 알고 있다. 아마도 나처럼 게임을 잘 모르더라도 대부분의 사람들이 이름 정도는 알고 있을 것이라고 생각한다. 그만큼 이 세 회사가 게임 콘솔 시장에서 얼마나 큰 인지도를 가지고 있는지 알게 해주는 척도라고 할 수 있지 않을까 싶다.

이 책은 소니, 닌텐도, 마이크로소프트가 게임의 진화와 새로운 콘솔을 탄생시킨 경쟁의 역사를 모두 담고 있다. 분명 한때는 게임이 아이들의 시간을 빼앗고 중독을 야기시키는 놀이라고 여겨졌지만 지금은 하나의 산업으로써, 그리고 문화로서 받아들여지고 있다. 이에 따라 많은 게임업체들이 주도권을 잡기 위한 무한한 경쟁에 들어가게 되었다. 저자는 시애틀 타임스의 프리랜스 기자로서 비디오 게임을 취재한 것을 시작으로 다양한 매체에 글을 기고해 왔었다. 게임 산업 전반에 대한 역사적인 변화가 이루어지는 시점마다 가장 가까이에서 그 현장을 지켜봐 왔으며 그 중에서 콘솔의 탄생과 이에 따른 기업들의 다양한 전략이 이 책 속에 녹아들어있다.

각 회사가 경쟁에서 살아남기 위해, 그리고 궁금적으로 시장을 점유하기 위해 부단히 노력하는 모습을 확인할 수 있다. 콘솔 하드웨어 개발 과정에서의 다양한 시행착오들, 그리고 콘솔에 맞는 게임을 출시하기 위해 서로 연합했다가 다시 에어지는 과정을 통해 그 상황에 맞는 의사결정이 얼마나 힘들었을지 잘 느껴지곤 했다. 나중에 시장에서 인정을 받았을 때는 그 동안의 어려움이 지난 이야기가 되겠지만 그 과정중에 있을 때는 순간의 선택이 사업 자체에 대한 몰락으로 이어질 수 있기 때문에 숨막히는 순간 순간이 아니었을까 싶다.

전반적으로 내용의 전개는 상황을 설명하고 관련된 인터뷰 기사 등을 통해 사실 관계를 보여주고 있다. 이러한 구조때문인지 모르겠지만 기대했던 것 보다는 내용의 전개가 딱딱하다는 느낌이 많이 든다. 하지만 다른 측면으로 본다면 그만큼 사실에 기반한 내용이 계속 서술된다고 볼 수도 있을 것 같다. 주요 세 업체가 어떻게 서로 경쟁을 하며 콘솔 시장을 이끌어 나가고자 했는지 잘 보여주는 이 책은 게임에 관심이 있는 사람이라면 누구나 게임에 대한 새로운 면모를 느끼게 해 줄 것이라고 생각한다.

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

[IT] 소프트웨어 아키텍처 The Hard Parts

2023. 3. 22. 16:19 | Posted by 꿈꾸는코난

< 소프트웨어 아키텍처 The Hard Parts > | 닐 포드 외 3인 지음  | 이일웅 옮김 | 한빛미디어

 

이 책은 분산 아키텍처를 구축할 때 아키텍트가 트레이드오프를 객관적으로 분석하여 의사 결정을 내리기까지의 전 과정을 상세히 설명한다. 그렇다면 소프트웨어 아키텍처를 이야기하면서 Hard parts를 언급한 이유는 무엇일까? 이 책에서 hard는 어렵다라는 의미와 단단하다는 의미를 내포하고 있다. 즉 소프트웨어 아키텍처, 특히 분산 아키텍처는 일반적인 방법론이나 모범 사례가 존재하지 않는다. 따라서 모든 분산 아키텍처는 각각 유일한 사례가 되는 경우가 많다. 그만큼 어렵다는 의미라고 볼 수 있다. 한편으로는 처음 설계가 잘못되어 구축이 되고 나면 그 상태로 단단하게 굳어져 다시 고치는 작업이 어렵다는 의미도 있다.

소프트웨어 아키텍처에 대해 소개하는 많은 책들은 대부분 이론적인 사례를 많이 다룬다. 따라서 개념적인 부분은 이해하지만 실제 필드에서 적용하기 위해서는 또 다른 고민이 필요한 것이 사실이다. 이 책은 그런 면에서 현실적인 도움을 주는 책이라고 볼 수 있다. IT 서적이지만 책을 읽고 이해하는 데 별 어려움이 없을 정도로 글이 매끄럽고 번역이 잘 되어 있는 것 같다. 또한 가상의 시스템을 사례로 들어 분산 아키텍처를 구성해 가면서 발생하는 다양한 트레이드오프와 접근 방법, 그리고 문제점에 대해 설명한다. 또한 문제점을 해결하기 위한 구체적인 방안을 자연스럽게 이어가고 있어서 실제 업무를 진행하는 것과 유사한 느낌을 가지게 한다.

책은 크게 2개의 파트로 구성되어 있다. 파트 1은 따로 떼어놓기이다. 분산 아키텍에서 트레이드오프를 분석하기 위해 아키텍처를 하나씩 떼어내어 완전히 이해하는 과정이 필요하다. 아키텍처 구조 측면에서 각 요소가 정적으로 결합되는 방식을 설명하고, 아키텍터의 정적 커플링과 동적 커플링의 범위를 정의하면서 이를 분해하면서 생기는 문제를 살펴본다. 그리고 이를 바탕으로 실제 분해 프로세스를 시작하고 코드 베이스를 평가하고 해체하는 도구를 알아보고, 이를 위해 사용할 수 있는 다양한 패턴을 설명한다. 또한 분산 아키텍처에서 데이타와 트랜젝션의 중요성이 점점 커지고 있음에 따라 이를 위한 다양한 주제에 대해 언급한다.

파트 2는 다시 합치기이다. 시스템을 분해해 놓고 나면 곧 시스템을 다시 합쳐 하나의 응집된 단위로 작동시켜야 할 필요성을 느끼게 된다. 이 측면에서 서비스 통신, 계약 분산, 분산 워크플로, 분산 트랜젝션, 데이터 오너십, 데이터 액세스, 분석 데이터 관리 등 다양한 어려운 난제를 극복하는데 필요한 기술을 설명한다.

책에서 설명되는 개념 하나 하나가 실제 업무에 도움이 되는 유용한 정보를 포함하고 있다. 기술은 지속적으로 발전하고 변화하는 현 환경에서 가상의 실 사례를 들어 분산 아키텍처를 분해하고 결합하는 과정을 살펴 봄으로 현실적인 조언과 더불어 각자의 시스템에 활용할 수 있는 소중한 정보를 얻을 수 있는 책이라고 생각한다.

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

[IT] 우리가 사랑한 한국 PC 게임

2023. 2. 16. 14:14 | Posted by 꿈꾸는코난

< 우리가 사랑한 한국 PC 게임 > | 장세용,오영욱,조기현 지음 | 한빛미디어

 

현재 게임 산업은 다른 산업 못지 않게 큰 각광을 받고 있다. 게임 업체 자체에 대한 명암은 차지하고 게임 자체만으로 본다면 항상 많은 사람들의 관심과 호기심을 받아 온 것 같다. 그렇다면 우리나라 PC 게임은 언제 나타나고 사라졌을까? 현재를 돌이켜 보면 대부분 온라인게임이 주를 이루고 있어서 PC 게임은 거의 찾아볼 수 없는 것 같다.

이 책은 1990년대 초반부터 2000년대 초반까지 우리나라에서 제작된 다양한 PC 게임들을 시기별로 다루고 있다. 이미 30년도 지난 게임이지만 게임 패키지 사진과 실제 게임 속 화면 일부를 보여줌으로써 그 시절의 기억을 돌이켜 보게 하고 그 게임이 만들어지던 과정 및 게이머들의 관심이 어떠했는지를 엿볼 수 있다.

사실 게임에 관심이 없지는 않지만 다양한 게임을 접하지는 못했다. 이 책을 보면서 내가 아는 게임이 얼마나 있는지 세어보았는데 세어볼 필요도 없다는 것을 알게 되었다. 나름 게임에 관심이 없지 않다고는 했지만 이름을 아는 게임이 하나도 없다는 놀라운 사실이다. 생각해 보니 국산 게임보다는 외국에서 넘어온 게임을 가끔씩 했었던 것 같다.

하지만 게임을 개발했거나 개발하고 있는 사람들, 그리고 게임을 다양하게 해본 경험이 있는 사람이라면 이 책의 존재가 아주 반갑게 느껴질 것이라고 생각된다. 옛날의 추억도 되살리고 게임에 대한 공감도 하면서 향수에 젖어들 수 있을 것 같다고 생각된다.

다른 한편으로 오래전 출시되고 사라진 게임에 대한 정보를 수집하고 정리한 노력은 가히 으뜸이라고 말하고 싶다. 어느 한곳에 모아져 있는 것도 아니기에 수소문을 통해 게임에 관련된 자료를 수집하고 편집하는 과정이 얼마나 어려웠을까 생각해 본다. 하지만 그 과정도 나름  흥미와 재미를 주는 과정일 수도 있다는 생각이 든다.

솔직히 이 책을 읽으면서 더 눈에 들어왔던 부분은 게임 주요 사양에 대한 변화였던 것 같다. IBM PC/XT/AT, 기본 메모리 640KB, 허큘리스, 옥소리, VGA, 5.25'' 플로피 디스크 등 PC 환경이 급변하던 시기에 새롭게 나타나고 사라진 다양한 그래픽 및 오디오 카드, 그리고 미디어의 변천사를 눈여겨 보는 재미도 있었던 것 같다. 어느순간 기본 메모리가 GB 단위로 넘어가고 미디어도 CD-ROM으로, 그래픽 및 VGA 카드도 점점 고사양으로 변화하는 모습을 볼 수 있었다.

시대별 한국 PC 게임의 역사를 되돌아 볼 수 있어서 좋았던 것 같다. 비록 게임을 즐겨하지는 않았지만 그 시대를 살았던 사람으로서 그 추억에 젖어들 수 있는 계기가 된 것 같다.


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

'꿈꾸는 책들의 도시' 카테고리의 다른 글

[인문] 만화로 보는 일리아스  (0) 2023.02.27
[시] 보고 시픈 당신에게  (0) 2023.02.17
[경영] 실리콘밸리의 실험실  (0) 2023.02.15
[에세이] 엄마와 물건  (0) 2023.02.11
[경제] AI 2041  (0) 2023.02.03

[IT] 전문가를 위한 C

2022. 10. 27. 09:57 | Posted by 꿈꾸는코난

< 전문가를 위한 C > | 캄란 아미니 지음 | 박지윤 옮김 | 한빛미디어

 

초반 개발을 시작할때는 대부분 C 언어를 사용하곤 했다. 처음 개발을 시작한 환경탓도 있겠지만 어느 정도 개발업무를 한다는 사람은 대부분 C 언어에 대한 지식을 기본으로 가지고 있었던 것 같다. 그만큼 개발 언어에 대한 서적도 C 언어에 대한 문법이나 고급 스킬을 소개하는 서적이 많았던 것으로 기억한다. 하지만 시간이 흐름에 따라 C 언어보다는 Java나 python 등과 같은 언어가 대세를 이루고 있는 것 같다.

이런 분위기에서 <전문가를 위한 C>는 오랜만에 보는 깊이있는 C 언어 서적이라고 생각한다. 이미 기초 문법은 알고 있다고 가정하고 개발 환경 및 다양한 개념에 대해 소개하고 있다. 특히 C 언어에서 필수적으로 알아야 하는 메모리 구조 및 스택, 힙에 대한 개념을 상세히 설명하고 있기 떄문에 어느정도 기초를 알고 있는 개발자에게는 개념을 잡는데 많은 도움이 되지 않을까 생각이 들었다. 이뿐만 아니라 C 언어의 기반이 된 유닉스의 역사 및 아키텍처, 시스템 호출과 커널 등에 대한 소개를 통해 C 언어가 탄생하게 된 배경과 low level 언어로서의 C 언어를 이해할 수 있다.

C 언어는 오랜 역사를 가진만큼 다양한 분야에서 많이 사용되고 있다. 특히 임베디스 시스템이나 고성능 시스템 개발에 최적화된 언어라고 볼 수 있으며 시스템의 하드웨어를 어느정도 직접 컨트롤할 수 있다는 면에서 소프트웨어 엔지니어링 등에서 핵심 언어로 자리매김하고 있다. 요즘 세부 하드웨적인 지식이 없더라도 개발할 수 있는 언어가 다양하게 나와있다. 하지만 하드웨어적인 시스템을 알고 개발하는 것과 아닌 것과의 차이는 상당히 크다고 볼 수 있다. 그런 측면에서 C 언어로 개발을 할 수 있는 개발자가 다른 언어를 사용해서 개발하는 것과 전혀 모르고 개발하는 사람과의 차이도 그만큼 크다고 볼 수 있을 것 같다.

이 책은 C 언어와 컴퓨터의 역사, 객체지향(이 부분이 추가된 것에 대해서는 좀 의문이다), 커널, 프로세스 등 다양한 주제를 가지고 설명한다. 그리고 각 설명마다 다양한 예시가 제시되어 있어서 실제 각자의 환경에서 컴파일하고 실행해 볼 수 있기 때문에 직접 눈으로 보고 그 결과를 확인할 수 있다. 하지만 프로그래밍 언어를 전혀 모르는 사람이 이 책을 통해 C 언어를 배우기는 쉽지 않을 것이다. 이 책의 서두에도 언급하듯이 이 책을 읽기 위한 최소한의 요구사항을 제시한다: 컴퓨터 아키텍처 지식, 프로그래밍 기초 지식, 터미널과 쉘 명령어 사용법, 프로그래밍 중급 지식, 객체 지향 프로그래밍 기초 지식이 그것이다. 적어도 최소한의 요구사항에 대한 용어를 들어보거나 경험한 적이 있어야 이 책이 설명하는 내용을 제대로 따라갈 수 있으리라 생각한다.

편의성 측면을 본다면 개발자가 리소스와 프로세스 스케줄링에 크게 신경쓰지 않고 원하는 기능을 개발할 수 있으면 좋을 것이다. 하지만 그렇게 되기 위해서는 또 다른 개발자가 리소스와 프로세스 스케줄링을 자동으로 잘 제공할 수 있는 기능이 개발되어야 할 것이다. 누군가가 편하게 사용하기 위해서는 누군가는 그 기반이 되는 구조와 환경을 제대로 구현하고 있어야 한다(예를 들어 개발자가 시스템적인 고민을 별로 안해도 되는 python의 경우 내부는 C로 구현되어 있다).

C 언어가 가지고 있는 장점은 다른 언어에 비해서 월등한 것 같다. 그만큼 개발자가 신경써야 하는 것이 많긴 하지만 그만큼 원하는 방향대로 디테일하게 제어할 수 있다는 것이기도 한다. 이 책은 이런 개발자를 위해 C 언어에 대한 깊이있는 지식을 전달해 준다. 개념을 배우고 실제 컴파일해서 경험하는 과정을 통해 그 지식을 한층 높일 수 있다고 생각한다. 그리고 한층 높은 단계로 올라갈 수 있는 사다리가 되지 않을까 생각한다.

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

이전 1 2 3 4 다음