테스트 대역 은 실제 구현 대신 사용 할 수 있는 객체나 함수를 말합니다. 테스트 대역은 실제 구현보다 훨씬 가벼워서 여러 프로세스나 기기를 연동시켜야 할 때 빠르고 안정적인 작은 테스트로 대응할 수 있게 도와줍니다. 1. 테스트 대역이 소프트웨어 개발에 미치는 영향 테스트 대역을 사용하면 절충이 필요한 몇 가지 문제들: 테스트 용이성 테스트 대역을 사용하려면 코드베이스가 테스트하기 쉽도록 설계되어 있어야 합니다. 적용 가능성 테스트 대역을 제대로 활용하면 엔지니어링 속도가 크게 개선되겠지만, 잘못 사용하면 오히려 깨지기 쉽고 복잡한 나쁜 테스트로 전락합니다. 실제로 테스트 대역을 활용하기에 적절하지 않은 경우가 많으니 되도록 실제 구현을 이용하는 것을 권합니다. 충실성 충실성은 테스트 대역이 실제 구현..
1.1 도메인이란? 온라인 서점을 이용할 때 검색을 통해 책 정보를 확인하고 목차와 서평을 살펴보며 책을 선택합니다. 장바구니에 담거나 쿠폰을 찾아 싸게 구매하며, 결제는 간편 결제 서비스나 외부 포인트를 이용합니다. 배송 추적 기능을 사용하여 언제 책을 받을 수 있는지 확인합니다. 개발자의 관점에서 온라인 서점 소프트웨어는 상품 조회, 구매, 결제, 배송 추적 등의 기능을 제공해야 하는 도메인으로 분류됩니다. 온라인 서점 도메인은 여러 하위 도메인으로 구성될 수 있습니다. 하위 도메인은 상호 연동되어 완전한 기능을 제공하며, 일부 기능은 외부 업체의 시스템을 활용할 수 있습니다. 예를 들어, 배송 도메인은 외부 배송 업체의 시스템을 사용하고 배송 추적 정보만 연동할 수 있습니다. 결제 시스템도 결제 대..
당신의 말을 경청하게 하라 상대가 당신과 당신의 관심사를 가장 잘 인식하는 시점은 다른 사람들이 모두 이야기를 마친 후다. 심리학에서는 이를 두고 최근 효과라고 부른다. 그러므로 회의 때 자신의 의사를 강하게 전달하고 싶을 때는 마지막으로 발언권을 요청하면 된다. 최초와 최후라는 두 번의 적시 최근 효과의 반대는 첫 머리 효과이다. 우리는 어떤 주제에 대해 처음으로 접한 정보는 시간이 흘러도 매우 생생하게 기억에 남는다. 따라서 누군가에게 원하는 바가 있거든 첫머리 효과와 최근 효과를 결합해 사용하는 것을 권한다. 상대의 기분을 활용하라 상대에게 부탁을 하는 시기를 고를 때는 보통 세 가지 선택 지가 있다. 상대가 특별히 기분이 좋을 때 남을 돕는 자선의 마음을 키우는 데는 아주 작은 기분 돋우기로도 충..
이성 대신 의지를 공략하라 설득하는 것에 대해 이성의 규칙보다는 의지를 공략하는 것이 확실한 길이다. 성공을 결정하는 두 가지 규칙 당신을 좋아하는 사람이 당신을 돕는다. 누군가 당신을 좋아하는 것은 운에 달린 일이 아니다. 개인의 호감 역시 2번의 규칙을 따르면 당신을 좋아하도록 만들 수 있다. 사람들은 당신이 그들의 욕망을 충족시킬 때 당신을 좋아한다. 당신의 특정 관심사가 상대에게 어떤 이익이 될 수 있는지 정확히 알아내야 한다. 상대의 호감을 증폭하는 원리 상대의 호감을 얻어서 상대가 당신을 위해 실제로 무언가를 하게 된다면, 이제 서로 다른 두 가지 효과의 매력적인 상호 작용이 시작된다. 사람은 자신에게 호의를 베풀어준 상대만 좋아하는 것이 아니라, 자신이 도와주었던 상대도 자동적으로 좋아하게 ..
설득은 이성과 논리로 하는 것이 아니다 정치, 회사 업무 회의, 일상생활 등 우리는 매일 경쟁적으로 논리를 펼치고 토론을 한다. 상대를 설득하려 애쓰고 상대를 한방에 보낼 날카로운 논리를 수집한다. 하지만 안타깝게도 그런 노력을 통해서는 아무것도 얻지 못한다. 이런 경험은 다음과 같은 의문을 낳는다. 논리로 설득을 하려는 노력이 의미 있는 것일까? 의미가 있다면 언제, 어떤 논리를 써야 할까? 의미가 없다면 이제, 어떻게 해야 될까? 사람의 태도에 영향을 미치는 요인 네 가지 유전적 소인: 유전적 소인은 바꿀 수 없다. 애정 ≒ 감정: 감정의 본질은 논리의 영향으로 바꿀 수 없다. 인지: 정보나 논리를 통해 바꿀 수 있다. 행동: 어떤 태도가 나오게 된 행동에 영향을 미치면 바꿀 수 있지만 논리로는 바꿀..
1. 적응 지원의 문제 (전문가의 저주) 선임 개발자가 새 팀원에게 많은 정보를 준다. 정보의 양이 너무 많아서 높은 인지 부하를 유발한다. 예를 들어 팀원들, 코드베이스의 도메인, 워크플로, 코드베이스를 한꺼번에 소개한다. 소개가 끝난 후 선임 개발자는 새 팀원에게 질문을 하거나 과제를 준다. 선임 개발자는 이것을 아주 간단한 일로 여긴다. 도메인이나 프로그래밍 언어 혹은 두 가지 모두 관련 청크의 부족과 관련 자동화 기술 부족으로 인해 인지 부하가 높아지고 새 팀원은 적응에 어려움을 느낀다 새 팀원은 프로젝트가 매우 어렵다고 느낄 것이고 팀장은 새 팀원의 능력을 의심한다. 2. 전문가와 초보자의 차이 전문가의 뇌는 LTM에 관련 기억을 많이 저장하는데 이 저장된 기억을 작업 기억 공간이 필요로 할 때..
1. 코드베이스의 특성 조사 라이브러리, 프레임워크, 모듈에 대해 이야기할 때, 기술적인 측면에 대해 이야기할 수 도 있지만 인지적 차원의 코드베이스(CDBN)를 고려하면 사용자에게 미치는 영향을 이해하는 데 도움이 된다. 인지적 차원 오류 경향성 일관성 분산성 숨겨진 의존성 잠점성: 사용하는 동안 생각하는 것이 얼마나 쉬운지에 대한 것이다. 점도: 특정 시스템을 변경하는 것이 얼마나 어려운가에 대한 차원으로, 잠정성과 관련이 있다. 점진적 평가: 주어진 시스템에서 부분적인 작업을 확인하거나 실행하는 것이 얼마나 쉬운지에 대한 것이다. 역할 표현력: 프로그램에서 여러 가지 다른 부분의 역할을 얼마나 쉽게 알 수 있는지를 나타낸다. 메서드에 ()를 표현하는 것과 변수와 키워드를 다른 색으로 보여 주는 게 ..
1. 프로그래밍 중 이루어지는 다양한 활동 인지적 차원 표기법(CDN): 프로그래밍 언어 또는 코드베이스의 인지적 영향을 평가하고 검색, 이해, 전사, 증가, 탐구라는 다섯 가지 활동을 기술한다. 검색 검색은 코드베이스를 살펴보고 특정 정보를 검색하는 작업이다. 주로 STM에 무리를 가한다 부하를 줄이기 위해 종이나 별도의 문서에 노트를 작성하면 도움이 된다. 이해 이해는 활동을 수행할 때는 코드를 읽고 실행해 봄으로써 그 기능을 이해하게 된다. 전사(transcription) 전사는 단순히 코딩하는 활동이다 증가 증가는 검색, 이해, 전사가 합쳐진 활동이다 STM, 작업 기억 공간, LTM 모두 부하를 일으킨다. 탐구 CDN의 마직막 활동 STM, 작업 기억 공간, LTM 모두 부하를 일으킨다. 2. ..