TIL (Today I Learned) 날짜 2022.5.31 (화) 오늘 읽은 범위 9장. 실용주의 프로젝트 책에서 기억하고 싶은 내용을 써보세요. 소프트 웨어 개발 방법론의 목표 = 함께 일하는 것을 돕는 것 실용주의 팀은 작다. 구성원은 10~12명 이하여야 하고, 구성원이 추가되거나 빠지는 일은 드물어야 한다. 모두가 서로를 잘 알고, 진화하며, 의존해야 한다. -> 작고 안정적인 팀을 유지하라. 깨진 창문을 없애라 팀 전체가 깨진 창문을 용납해서는 안된다. 사소한 결점도 반드시 해결해서 제품의 품질에 책임을 져야 한다. 이 철학에 공감하는 개발자를 지원하고, 그렇지 못한 개발자들은 이해하도록 독려해야 한다. 환경 변화를 감시해라 범위의 확장, 일정 단축, 추가 기능, 새로운 환경 등 무엇이건 간..
📌 연습문제 33 다음 문장들이 진정한 요구 사항인가? 가능하다면 진정한 요구사항이 아닌 것을 좀 더 유용하게 고쳐 써 보라. 1. 응답 시간은 500ms 이하여야 한다. 📖 책의 해답 : 이 문장은 진짜 요구 사항처럼 보인다. 환경 때문에 애플리케이션에 제약을 추가해야 할 수 있다. 💡 나의 해답 : 우선 응답시간이 500ms이어야 하는 이유를 물어볼 것 같다. 어떤 이유에서 그래야 하는지 파악하고, 담당팀에서 여태까지 파악한 정보, 자료를 제공받은 뒤 나 스스로도 빠르게 자료 조사를 할 것이다. 정말로 해당 이유로 제약을 지켜야 하는지, 혹시 최신에 업데이트된 부분이 있는지.. 그럼에도 불구하고 응답 시간을 지켜야 한다면, 우선 응답 시간을 많이 소요하는 작업을 리스트로 만든 다음에 다시 자료조사를 ..
TIL (Today I Learned) 날짜 2022.5.29 (일) 오늘 읽은 범위 8장. 프로젝트 전에 책에서 기억하고 싶은 내용을 써보세요. 요구 사항 완성이란 더 이상 더할 것이 없을 때가 아니라 더 이상 뺄 것이 없을 때 달성되는 것이다. 프로그래머는 의뢰인의 말을 해석해서 의뢰인이 원하는 바를 구체화해야 한다. 의뢰인이 미처 고려해보지 못한 부분을 찾아내 사실을 전달하고 의뢰인이 더 나은 결정을 내리도록 해야 한다. 신입 개발자들이 자주 하는 실수는 요청 사항을 받았을 때 바로 해결책을 구현해 버리는 것이다. 경험상 최초의 요청 사항과 궁극적인 요구 사항이 다른 적이 많았다. 피드백을 주고받으면서 의뢰인은 자기 생각을 더 가다듬을 수 있다. 요구 사항은 과정이다. 만든 모형이나 프로토타입을 이..
TIL (Today I Learned) 날짜 2022.5.28 (토) 오늘 읽은 범위 7장. 코딩하는 동안 책에서 기억하고 싶은 내용을 써보세요. 우연에 맡기는 프로그래밍 STOP! 우연에 맡기는 프로그래밍 특징 적극적으로 자기 코드에 대해 생각하지 않는다. 코드가 왜 그렇게 작동하는지 설명 못한다. 실용주의 프로그래머는 모든 코드를 비판적인 시각으로 바라보고 우리가 만든 프로그램과 설계에서 언제나 개선의 여지를 찾아낸다. 의식적 수련 안전 운전과 마찬가지다. 언제나 상황을 검토하고, 잠재적인 문제들을 점검하며, 예상하지 못한 일이 생길 때에도 잘 대처해야 한다. 파충류의 뇌에 귀 기울이기 경험이 늘어 갈수록 뇌에 암묵적인 지식이 쌓인다. 암묵적인 지식 = 잘 되는 방법, 잘 안 되는 방법, 오류 형태별..
TIL (Today I Learned) 날짜 2022.5.25 (수) 오늘 읽은 범위 6장. 동시성 책에서 기억하고 싶은 내용을 써보세요. 동시성 : 둘 이상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것 - 소프트웨어 동작 방식 병렬성 : 실제로 동시에 실행되는 것 - 하드웨어 작업 시스템 규모가 어느 정도를 넘어가면 동시성을 고려하지 않고 작성하기란 거의 불가능하다. 사용자와 상호 작용을 하고, 데이터를 불러오고, 외부 서비스를 호출하는 일을 동시에 해야 하기 때문에 동시성은 필수다. 유연해지려면 A -> B 라는 시간적 결합에 의존하면 안 된다. 가장 큰 문제는 공유 상태(shared state)이다. 둘 이상의 코드 뭉치가 하나의 변경 가능한 데이터를 참조하고 있다면 공유 상태가 ..
TIL (Today I Learned) 날짜 2022.5.21 (토) 오늘 읽은 범위 5장. 구부러지거나 부러지거나 책에서 기억하고 싶은 내용을 써보세요. 코드 조각 간에 의존 정도가 높다 = 결합도 증가 결합도가 낮은 유연한 코드를 작성하자. 결합도가 높은 코드의 특징 이리저리 연결되어 있어서 여러 가지를 동시에 바꿔야 해서 바꾸기 더 어렵다. 바꿔야 하는 곳을 모두 찾아내느라 시간을 들인다. '딱 하나만' 바꾸고 결합된 다른 것들은 잊은 채 왜 프로그램이 죽는지 고민하느라 시간이 많이 걸린다. 소프트 웨어 구조는 유연해야 한다. 결합도 체크하기 코드를 쓰거나 이해하기 위해 알아야 하는 것이 너무 많지 않은가? 메서드나 속성들이 모두 연결되어 있지 않은가? 메서드 호출을 엮지 말라. 사실 애플리케이션에..
TIL (Today I Learned) 날짜 2022.5.18 (목) 오늘 읽은 범위 4장. 실용주의 편집증 책에서 기억하고 싶은 내용을 써보세요. 우리는 완벽한 소프트웨어를 만들 수 없다. 그렇기 때문에 실용주의 프로그래머는 실수애 대비할 수 있는 방어책을 마련해야 한다. DBC (Design By Contract) 설계 기법 프로그램의 정확성을 보장하기 위해 소프트웨어 모듈의 권리와 책임을 문서화하고 합의하는 데 초점을 맞추는 설계법 계약에 부응하지 못하는 것 = 버그 선행조건 + 후행 조건 시작하기 전에 수용할 것은 엄격히 확인하고, 내어 줄 것에 대해서는 최소한도를 약속하는 것이다. DBC는 모든 입력값에 대해 성공과 실패를 정의하는 반면 테스트는 하나가 한 가지 경우만 다룬다. 코드를 작성하기 ..
TIL (Today I Learned) 날짜 2022.5.18 (수) 오늘 읽은 범위 3장. 기본도구 책에서 기억하고 싶은 내용을 써보세요. 도구는 생각을 전달하는 통로와 같다. 언제나 일을 하는 더 나은 방법이 없는지 살피자. 이것만 써야지가 아니라 필요에 따라 도구를 취하자. 좋은 도구의 사용법을 배우는 데에 시간을 투자하자. 회귀 테스트(regression test) 동일한 테스트를 반복적으로 수행함으로써 새로운 기능이 애플리케이션에 추가되었을 때 기존 기능이 여전히 제대로 작동하는지 검사하는 테스트 텍스트를 다루는 프로그래머에게 작업대는 명령어 셸이다. 명령어 셸에 익숙해지면 생산성이 많이 오를 것이다. 셸 설정 변경해보자. 색깔 조합 설정 변경 프롬프트 설정 변경 디렉터리 경로 짧게 줄인 것, ..
https://nomadcoders.co/community/thread/5182 궁금한 개념을 정리한 부분이 좋았다. https://nomadcoders.co/community/thread/5169 책에서 나온 내용을 실천하기 위해 적용할 수 있는 구체적인 방법에 대해 고민한 부분이 매우 인상깊었다. https://nomadcoders.co/community/thread/5165 책의 요점을 깔끔하게 정리한 부분이 좋았다. 2장을 아직 못 읽었는데 다른 분들 정리한 글을 보니 중요한 내용이 많이 담겨있는 것 같다. 주말에 시간 내서 읽고 정리해야지!
TIL (Today I Learned) 날짜 2022.5.14 (토) 오늘 읽은 범위 서문 ~ 1장. 실용주의 철학 책에서 기억하고 싶은 내용을 써보세요. 추천사 좋은 습관을 기르고, 나의 도구를 이해하자 코딩과 함께하는 인생 여정은 새로운 세계에 들어가는 것처럼 느껴졌다. 새로운 이웃을 사귀고, 장 볼 슈퍼를 고르고, 마음에 드는 카페를 찾아야 했다. 지형지물을 파악하고, 최단 경로를 알아내고, ㅏ가 밀리는 도로를 피하고, 언제 가장 길이 막히는지 알게 되는 데에는 꽤 시간이 걸렸다. 날씨도 달라서 새 옷을 사야 했다. 서문 우리는 이 팁들을 매일 지키며 산다. 책을 읽다가 모르는 단어와 마주친다면 그냥 건너뛰지 말고 검색해보기. progmatic = 일에 숙달된 = ~을 하는 프로그래밍 = 손재주(c..