노마드코더10 실용주의 프로그래머 Mission3(22.04.04) 실용주의 프로그래머 Mission 3 요구사항을 받았는데, 요구사항이 아닐 수 있습니다! 요구사항이 아니라면 사용자가 진짜로 원하는게 무엇인지 알아내야합니다. 애매한 요구사항에서 진짜 요구사항을 찾아내는 연습을 해봅시다. (1) '연습문제 #33'을읽습니다. (2) 1-5번까지 문제를 클라이언트가 건넨 요구사항이라 상상하며 문제를 풀어봅시다. (3) 진정한 요구사항이 아닐 경우 어떻게 질문을 해야하는지, 무엇을 알아야 하는지, 왜 그렇게 생각하는지 등 나의 생각을 작성해보세요. ❗️ 풀이과정은 문제당 300자 이상으로 작성해주세요. ❗️ 책에 있는 해답은 참고용이며, 본인의 생각을 잘 작성해주세요. 📌 연습문제 33 다음 문장들이 진정한 요구 사항인가? 가능하다면 진정한 요구사항이 아닌 것을 좀 더 유용.. 2022. 4. 4. 실용주의 프로그래머 TIL(22.04.03) 오늘의 책 읽기 8장 프로젝트 전에 오늘의 TIL - 적극적으로 자기 코드에 대해 생각하지 않는 프로그래머는 우연에 맡기는 프로그래밍을 하는 것이다. - 실용주의 프로그래머는 우리가 만든 프로그램과 설계에서 언제나 개선할 여지를 찾아낸다. - 프로토타이핑을 통해, 꺼림칙했던 느낌이 갑자기 명확한 문제로 구체화한다. 그럼 불안감은 사라지고 빨리 해치우고 싶다는 느낌이 자리하게 될 것이다. - 코드를 마구 찍어내는 시간을 줄이고, 초기에 오류를 잡고, 애초에 오류를 더 적게 만들기 위해서는 의도적으로 프로그래밍을 해야한다. - 더 경험이 적은 프로그래머에게 코드를 상세히 설명할 수 없다면, 아마 우연에 기대어 코딩을 하고 있을 것이다. - 자신도 잘 모르는 코드를 만들지 말자. 이것이 왜 동작하는지 잘 모른.. 2022. 4. 4. 실용주의 프로그래머 TIL(22.04.02) 오늘의 책 읽기 7장 코딩하는 동안 오늘의 TIL - 적극적으로 자기 코드에 대해 생각하지 않는 프로그래머는 우연에 맡기는 프로그래밍을 하는 것이다. - 실용주의 프로그래머는 우리가 만든 프로그램과 설계에서 언제나 개선할 여지를 찾아낸다. - 프로토타이핑을 통해, 꺼림칙했던 느낌이 갑자기 명확한 문제로 구체화한다. 그럼 불안감은 사라지고 빨리 해치우고 싶다는 느낌이 자리하게 될 것이다. - 코드를 마구 찍어내는 시간을 줄이고, 초기에 오류를 잡고, 애초에 오류를 더 적게 만들기 위해서는 의도적으로 프로그래밍을 해야한다. - 더 경험이 적은 프로그래머에게 코드를 상세히 설명할 수 없다면, 아마 우연에 기대어 코딩을 하고 있을 것이다ㅏ. - 자신도 잘 모르는 코드를 만들지 말자. 이것이 왜 동작하는지 잘 모.. 2022. 4. 3. 실용주의 프로그래머 TIL(22.03.30) 오늘의 책 읽기 6장 동시성 오늘의 TIL 소프트웨어 아키텍처에서 시간이라는 측면이 자주 무시되는데, 동시성(동시에 일어나는 일들)과 순서(시간의 흐름 속에 일들의 상대적인 위치)다. 보통 설계를 할 때, 'A를 하고 B를 하고 ~' 등등과 같이 명령형으로 코드를 설계하게 된다. 하지만 이런 식으로 생각하다보면 시간적 결합을 만들게 된다. 동시성을 확보하기 위해서는 시간이나 순서에 의존하는 시간적 결합을 끊어내야 하고, 이를 통해 유연성, 작업흐름분석, 아키텍처, 설계, 배포와 같은 여러 측면에서 시간과 관련된 의존성도 줄일 수 있다. 우리는 활동다이어그램을 통해 작업 흐름을 기록할 수 있다. 다이어그램에서 동기화 막대를 만들어, 동기화 막대로 들어오는 활동이 모두 완료된 후에야 진행할 수 있도록 만들 .. 2022. 3. 30. 실용주의 프로그래머 TIL(22.03.28) 오늘의 책 읽기 연습문제 풀고 복습하기 오늘의 TIL 연습 문제 23 "x 언어에는 파이프라인이 없는데요"에서 우리는 다음과 같은 코드를 썼다. 아래 가지 코드의 차이는 무엇인가? 여러분이 보기에 우리는 어느 쪽을 선호할 것 같은가? const content = File.read(file_name); const lines = find_matching_lines(content, pattern); const result = truncate_lines(lines); const result = content_of(file_name) .find_matching_lines(pattern) .truncate_lines(); 해설 const content = File.read(file_name); const no_co.. 2022. 3. 28. 실용주의 프로그래머 TIL(22.03.26) 오늘의 책 읽기 5장. 구부러지거나 부러지거나 오늘의 TIL 결합도 줄이기 되돌릴 수 있는 의사 결정을 통해, 불확실한 세상에서도 유연성과 적응력을 잃지 않을 수 있다. 우리가 어떤 것 하나만을 골라내려고 해도, 그것이 우주의 다른 모든 것과 얽혀 있음을 깨닫게 된다. 이벤트에 잘 반응하는 어플리케이션을 만들기 위한 전략 유한 상태 기계(FSM) 감시자(Observer)패턴 게시-구독 반응형 프로그래밍과 스트림 옵저버 패턴은 모든 감시자가 감시 대상에 등록을 해야 하기 때문에 결합이 생긴다. 감시 대상이 콜백을 직접 호출하도록 구현하기 때문에 성능 병목이 될 수 있다. 이러한 문제는 "게시-구독" 전략으로 해결한다. 외부 설정으로 애플리케이션을 조정할 수 있게 하라 외부설정을 사용하지 않는다면 코든느 적.. 2022. 3. 27. 실용주의 프로그래머 TIL(22.03.24) DAY5 (2022. 03. 24) 오늘의 책 읽기 4장. 실용주의 편집증 오늘의 TIL DBC 구현 코드를 작성하기 전에 유효한 입력 범위가 무엇인지, 경계 조건이 무엇인지, 루틴이 뭘 전달한다고 약속하는지등을 나열하는 것만으로도 엄청난 도움이 된다. 오류 발생시 소비자의 입장을 우선하라. 이것은 시스템의 여러 다른 부분을 적용할 수 있는 분명하고 간력하며 명확한 선언이다. 이는 모든 시스템 사용자와 맺는 계약이며 동작에 대한 우리의 보증이다. 방어적 프로그래밍은 시간낭비다. 그냥 멈추는 게 낫다! 기본 원칙은 방금 있을 수 없는 에러가 발생했다는 것을 코드가 발견했다면 프로그램은 더 이상 유효하지 않다. 이 시점 이후로 하는 일은 모두 수상쩍게 된다. 죽은 프로그램이 끼치는 피해는 이상한 프로그램이 .. 2022. 3. 25. 실용주의 프로그래머 TIL(22.03.23) DAY5 (2022. 03. 23) 오늘의 책 읽기 3장. 기본도구 오늘의 TIL 중국 속담 아무리 흐린 먹물일지라도 가장 훌륭한 기억력보다 낫다 모든 소프트웨어는 작성되자마자 레거시가 된다. (지식을 일반 텍스트로 잘 저장하자) 소스코드 뿐만 아니라 메모,makefile, 빌드와 릴리스 절차, 로그파일까지 모두 버전 관리시스템에 기록하자 디버깅은 단지 문제 풀이일 뿐이라는 사실을 받아들이고, 그런 마음으로 공략하라 엔지니어링 일지를 작성하라. 2022. 3. 23. 실용주의 프로그래머 TIL(22.03.21) DAY3 (2022. 03. 21) 오늘의 책 읽기 2장.실용주의 접근법 오늘의 TIL ETC (Easier to Change) 잘 설계된 코드는 ETC하고, 잘 설계된 코드는 결합도가 줄어 단일 책임 원칙(Single responsibilty principle)에 유용 네이밍을 잘해야 코드가 읽기 쉬워지고 수정에 용이 ETC는 규칙이 아니라 가치(Value)로 결정을 내리게 도움을 줌. 방금 한 일이 전체 시스템을 바꾸기 쉽게 만들었는지를 고민해야 한다. 저장할 때마다, 테스트를 쓸 때도, 버그를 수정할 때도. DRY (Don't Repeat Yourself) DRY하게 코드를 짜야한다는 것은 자주 들어왔던 이야기이다. 단순하게 반복을 지양해야 하는 것이 아니라, 구현 내용상의 무의미한 반복을 지양해야.. 2022. 3. 21. 실용주의 프로그래머 TIL(22.03.19) DAY2 (2022. 03. 19) 오늘의 책 읽기 서문 1장.실용주의 철학 오늘의 TIL 당신의 인생이다 (스스로 결정하고 행동할 수 있는 개발자가 되자) 해당 주제에서 나온 내용은 많은 개발자들이 불만에 가득 차 있는데, 왜 해당 문제에 대해 직접 바꾸지 않았냐는 것이였다. 해당 내용을 읽고 내 상황에 대해 돌아보니, 우리 회사는 성과를 몰라주지도 않고, 월급도 불만이 없고, 분위기도 원만하고, 출퇴근도 자유롭고, 수평적인 관계이면서, 내가 원하는 기술 스택을 사용할 수도 있고, 일정도 내가 원하는 대로 조율할 수 있는 상황이다. (이렇게 좋은 환경임에도 아무것도 하지 않고 가만히 있었는지 자책감이 든다...) 딱 한가지 문제점은 주니어임에도 불구하고 개발관련해서 도움을 요청할 수 있는 사람이 없다는.. 2022. 3. 20. 이전 1 다음