1. 헥사고날 아키텍처에 대하여[ 헥사고날 아키텍처의 도메인 엔티티(Domain Entity) ]우리는 소프트웨어를 개발할 때 어떠한 의미를 갖는 이론적 토대를 바탕으로 개발을 하게 된다. 예를 들어 우리가 헥사고날 아키텍처라는 아키텍처 패턴으로 시스템을 개발한다고 하자.헥사고날 아키텍처(Hexagonal Architecture)는 소프트웨어 설계 패턴 중 하나로, 포트와 어댑터 아키텍처(Ports and Adapters Architecture)라고도 불린다. 이 아키텍처의 주요 목표는 애플리케이션의 비즈니스 로직(핵심 도메인 로직)을 외부 의존성으로부터 분리하여 애플리케이션의 유지보수성, 테스트 용이성, 유연성을 높이는 것이다. 해당 포스팅은 헥사고날 아키텍처를 다루는 것이 아니기에, 단순히 “도메인을..
1. 당신의 시장을 선택하라[ 1.1 길거리에서 중요한 것 ]한 가지 분명한 건 본인이 일을 얼마나 빨리 하느냐가 가장 중요하다는 점이다. 아무도 우아한 설계, 알고리즘 지식, 고품질의 코드를 신경 쓰지 않는다. 여러분을 고용한 사람들은 주어진 시간에 얼마나 많은 것을 해줄 수 있느냐에만 관심이 있다. 하지만 여러분의 직관과는 반대로 좋은 설계, 좋은 알고리즘, 좋은 품질의 코드는 처리량에 상당한 영향을 주며, 많은 프로그래머가 이를 놓치고 있다.만약 여러분이 나쁜 코드를 쓰고 있다면 여러분은 동료들의 속도를 늦추고 있는 것이다. [ 1.3 훌륭한 스트리트 코더 ]스트리트 코더는 업계의 인정, 명예, 충성심 외에도 이상적으로 다음과 같은 자질을 가지고 있다.질문하기결과 중심적높은 처리량복잡성과 모호성 ..
0. 프로그래밍 패러다임[ 패러다임의 시대 ]프로그래밍 패러다임은 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유할 수 있게 함으로써 불필요한 부분에 대한 의견 충돌을 방지한다. 또한 프로그래밍 패러다임을 교육시킴으로써 동일한 규칙과 방법을 공유하는 개발자로 성장할 수 있도록 준비시킬 수 있다.이 책은 코드를 개발하는 우리가 객체지향 패러다임이라는 용어를 사용할 때 완벽하게 동일하지는 않더라도 어느 정도 유사한 그림을 머릿속에 그릴 수 있는 기반을 제공하는 것이다. 또한 객체지향에 대한 다양한 오해를 제거함으로써 객체지향 프로그래밍을 하는 개발자들이 동일한 규칙과 표준에 따라 프로그램을 작성할 수 있게 할 것이다. 1. 객체, 설계[ 2. 무엇이 문제인가? ]로버트 마틴은 “클린 소프트웨어”에..
1. 당신의 시장을 선택하라큰 투자를 하려고 한다. 큰돈을 투자하는 게 아니라 자신의 시간, 바로 자신의 삶을 투자하는 것이다. 경력이라는 흐름에 그저 떠다니기만 하면서 그 흐름이 가는 대로 자신을 내맡겨 버리는 사람이 많다.그렇다면 왜 개발자들은 대부분 경력 선택에 이와 같은 주의를 기울이지 않을까? 경력을 사업이라고 생각한다면(사실은 그렇다), 자신이라는 “상품”은 자신이 제공해야만 하는 서비스로 구성된다.그러면 서비스는 무엇인가? 서비스를 누구에게 팔려고 하는가? 서비스에 대한 수요가 향후 몇 년간 늘어날 것인가, 즐어들 것인가? 이러한 선택에 얼마나 큰 모험을 기꺼이 할 것인가? [ 1. 그냥 앞서 갈 것인가, 위험까지 무릅쓸 것인가? ]위험과 보상을 절충하는 것은 어느 기술과 영역에 투자할지 ..
현재 회사에서는 A/B 테스트를 통해 아주 많은 의사 결정을 내리고 있다. 그런 환경에 있다가 A/B 테스트가 부를 수 있는 함정에 대한 좋은 아티클을 발견하여 번역한 것이다. 1. Four pitfalls of hill climbing(A/B 테스트의 4가지 함정)제품을 디자인할 때, 눈에 띄게 발전된 부분 중 하나가 바로 A/B 테스트의 도입이다. 우리의 고객에게 무엇이 최상일지 추측하는 것이 아니라, 일부 고객에게 제품에 대한 변형을 제공하고 그 효과가 얼마나 좋은지를 측정하는 것이다. A/B 테스트는 분명 유용하지만, 때로 “언덕 오르기(hill climbing)”를 지나치게 부추긴다는 지적을 받기도 한다. “언덕 오르기”란 쉽고 즉각적인 성공을 강조하는, 점진적이고 근시안적인 제품 개발 방식..