[IT] 코드 밖 커뮤니케이션

2024. 9. 13. 16:32 | Posted by 꿈꾸는코난

< 코드 밖 커뮤니케이션 > | 재퀴 리드 지음 | 곽지원 옮김 | 한빛미디어

 

일반적으로 과학자를 생각하면 잘 정리된 연구실에서 정해진 절차에 따라 연구하고 원하는 결과물을 만들어 내는 것을 생각한다. 물론 대다수 과학적 산물들은 이러한 개발자 능력은 단순히 프로그래밍만 잘하는 것만으로는 충분하지 않다. 개인 프로젝트를 제외한다면 모든 개발은 다수의 인원들이 모여 협업하는 형태를 이루고 있다. 제대로 된 협업을 위해서는 제대로 된 의사소통이 필수적이라고 할 수 있다. 하지만 의외로 많은 개발자들이 의사소통에 어려움을 겪거나 심지어는  소홀히 하는 경우가 있다. 이러한 역량은 다양한 학습을 통해 향상시킬 필요가 있으며, 이런 종류의 책을 통해 직간접적으로 다양한  경험을 획득할 수 있다고 본다.

이 책에서는 단순히 대화와 같은 단순 소통의 의미로 커뮤니케이션이라는 용어를 사용하지 않는다. 개발자는 개발문서 등을 통해 이해당사자와 소통하게 된다. 이때 중요한 측면이 패턴의 개념이다. 소프트웨어 개발과 아키텍처에는 코드를 작성하고 시스템을 설계할 때 적용할 수 있는 패턴과 안티패턴이라는 개념이 있다. 패턴이란 특정한 또는 일반적인 문제를 해결하는데 효과가 입증된, 재사용 가능한 솔루션을 의미한다. 안티패턴은 문제를 해결하는 올바른 방법인 것처럼 보이지만 실제로는 그 어떤 이점보다 더 중대한 부정적인 결과를 초래할 수 있는 것을 의미한다. 실제로 좋은 아이디어를 만들기 위해서는 투자가 필요하지만 투자를 하지 않으면 나쁜 아키텍처로 인해 장기적으로 더 많은 비용이 든다는 의미로 해석할 수 있다.

이 책은 총 4부로 구성되어 있다. 1부는 다이어그램 및 시각 자료의 패턴과 안티패턴을 다룬다. 개발자가 기술적인 측면에서 꼭 갖춰야 하는 개념이라고 볼 수 있다. 2부에서는 원격 및 대면 커뮤니케이션에 적용할 수 있는 서면, 언어적 및 비언어적 커뮤니케이션에 대한 패턴과 기법을 다루고 있으며, 3부에서는 문서화를 포함한 지식 관리 및 공유를 개선하기 위한 원칙, 사례 및 패턴을 보여준다. 4부에서는 하이브리드 및 원격 환경에서 다른 시간대와 다른 근무 패턴을 가진 사람들과 소통할 때 사용할 수 있는 다양한 전략과 패턴을 소개한다.

대략적인 구성만 보더라도 개발자가 부족하다고 느끼거나 귀찮아하는 부분들이 많이 눈에 띈다. 중요하다고는 개발자 누구나 생각하지만 실제 본인이 잘하기는 어려운 부분들이다. 하지만 이러한 역량이 궁극적으로 개발 과정 및 최종 개발  산물물의 완성도를 높이고, 궁극적으로는 프로젝트의 성패에까지 큰 영향을 미치는 요소들이라고 볼 수 있다. 마지막 4부에 나오는 소통 역량은 시시각각 변하는 다양한 근무형태에 적응하고 능율을 높이기 위해 꼭 필요한 요소라고 생각든다. 코로나 시대에 다양한 화상 회의 등을 경험했지만, 보다 체계적이고 효율적으로 업무를 수행하기 위해서는 다양한 도구에 대한 이해와 보안, 그리고 지식의 공유가 꼭 필요한 시점인 것 같다.

 

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

[과학] 뜻밖의 과학사

2024. 9. 13. 16:24 | Posted by 꿈꾸는코난

< 뜻밖의 과학사 > | 팀 제임스 지음 | 김주희 옮김 | 한빛비즈

 

일반적으로 과학자를 생각하면 잘 정리된 연구실에서 정해진 절차에 따라 연구하고 원하는 결과물을 만들어 내는 것을 생각한다. 물론 대다수 과학적 산물들은 이러한 절차를 거쳐 만들어지고 우리가 사용하고 있다. 하지만 과학이라고 해서 모든 것이 잘 제어된 환경에서 나오는 것은 아니다. 만들어진 결과물이 기대했던 효과가 아닌 다른 효과가 있는 경우 또는 실수에 의해 잘못한 상황에서 의외의 발명품이 만들어 지는 등 전혀 기대하지 않았던 환경에서 좋은 결과물이 나오는 사례를 가끔씩 볼 수 있다.

이 책은 이러한  사레들을 모아 소개하고 있다. 부제 <우연과 필연이 만들어낸 매혹적인 과학의 순간들>에서 볼 수 있듯이 과학에서는 언급하기 힘든 우연이라는 측면이 강조된 과학사라고 볼 수 있다. 1장에서는 제대로 실험하지 못한 환경에서 의외의 결과를 만들어낸  서투름의 순간들을 소개한다. 이 과정을 통해 뜻밖의 결과를 만들어 낸  사레들을 살펴볼 수 있다. 2장에서는 불운과 실패로서 특히 뇌의 손상을 통해 뇌의 역할을 이해하고 깊이 있는 연구가 가능하게 된 사례들을 보여 준다. 또한 원하는 목적을 이루지는 못했지만 살패한 연구가 다른 의외의 결과를 가져오는 경우를 설명하고 있다. 3장에서는 제대로 수행된 실험에서도 의외의 결과를 가져올 수 있음을 보여준다. 우연히 발견되었지만 의도한 결과보다 훨씬 더 중요한 의미를 가지는 연구들이 있음을 소개한다. 4장에서는 혁신적인  생각이 떠오르는 유레카 상황을 소개한다. 사소하고 하찮아 보이는 상황이 실제로는 중대한 의미를 가질 수 있다는 것을 보여주며, 대표적인 예가 아인슈타인의 상대성 이론을 들 수 있다.

의외로 중요한 발견이나 실험이 우연히 또는 실수로 만들어진 것임을 알게 되면 그 자체로 놀랍게 느껴진다. 하지만 일반인이라면 무심코 지나쳤을 우연 또는 실수를 허투로 넘기지 않는 과학자들의 모습에서 과학자들의 진면모를 느낄 수 있는 것 같다.

[IT] 네트워크 인프라 자동화

2024. 8. 23. 17:34 | Posted by 꿈꾸는코난

< 네트워크 인프라 자동화 > | 맷 오스왈트 외 3인 지음 | 이주호 옮김 | 한빛미디어

 

네트워크 관련 제품을 개발하는 입장에서 테스트 환경을 구성하고 테스트하는 것은 매번 번거럽게 느껴지는 일인 것 같다. 어쩔수없이 반복적으로 해야하는 일이지만 반복적인 부분은 자동화하면 좋지 않을까 생각하곤 한다. 물론 docker 사용으로 서버 설치 및  설정에 대한 부분은 간편하게 만들 수 있고, 많은 부분을 스크립트로 만들어 편리성을 높였다고 생각한다. 하지만 적어도 네트워크 구성에 대한 부분은 여전히 환경을 구성하고 케이블을 연결하고 네트워크 설정을 하는 등 반복적인 작업이 수시로 이어지는 것 같다.

이 책을 처음 접했을 때 게속 고민하던 부분을 상당부분 해소할 수 있지 않을까 생각했다. 책의 초반에는 이미 익숙한 네트워크 개념 및 네트워크 자동화, 리눅스에 대한 개념이 소개되어 빠르게 넘어갈 수 있었다. 이후 클라우드와 네트워크 개발자 환경, 그리고 파이쎤, Go 언어 부분도 눈의 띄는 부분만 빠르게 읽고 넘어갈 수 있었다. 개념적인 부분은 데이터 포맷 및 모델, 템플릿 등 개념을 주의깊게 파악할 수 있었으며, 네트워크 API 부분에서 좀 더 편리하게 어플리케이션 레벨에서 네트워크 설정을 자동화할 수 있는 개념을 익힐 수 있는 것 같다. 깃을 이용한 버전 관리나 자동화 도구, 지속적 통합 부분은 평상시에 해오고 있던 부분과 조금 생소한 부분들이 섞여 있었지만 그럭저럭 어렵지 않게 파악할 수 있었던 것 같다.

마지막 네트워크 자동화 아키텍처 부분에서는 지금까지 학습한 개념과 기술을 종합하여 네트워크 자동화를 도입하기 위한 전반적인 전략을 소개한다. 개념과 기술을 아는 것과 그것을 실제 환경으로 구성하는 것에는 큰 차이가 있다. 이 차이를 해소하기 위해 자동화 작업을 이해하기 쉽고 적용하기도 쉬운 방식으로 구성할 수 있는 네트워크 자동화 아키텍처를 제안하고 있다. 이 아키텍처에는 요구 사항과 구성 요소간 의존 관계를 쉽게 정의할 수 있는 구조화된 관점을 제공하고 있기 때문에 네트워크 자동화 솔루션으로 자동화된 작업을 설계하고 그에 대한 구현 방안을 선택할 때 시스템 관점에서 더 나은 결정을 내리는데 도움을 주고 있다. 실제 네트워크 자동화를 위해 현실적으로 고려해야할 다양한 요소들이 설명되고 있기 때문에 실무적인 관점에서 다양한 방향으로 접근할 수 있었던 것 같다. 기초적인 지식부터 네트워크 자동화에 대한 구체적인 방안까지 폭넓은 정보를 제공해 주는 책인 것 같다.

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