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