-
단순한 사고의힘 5W1H - 프로젝트 효과적으로 수행하기독서 2021. 10. 23. 22:15728x90
개발자의 시선에서 본 단순한 사고의 힘 5W1H책은 개인적으로 도움이 많이 되었다. 왜냐하면 개발자들은 수많은 프로젝트들을 상대하고 만들어나가기 때문이다. 개인적으로 책을 읽고 느낀 점, 그리고 어떻게 프로젝트를 잘 해결해나갈지 고민한 내용을 공유한다.
지레짐작과 마구잡이 사고 패턴을 제거한다
개발자들은 매일이 문제의 발견과 문제 해결의 연속이다. 여기서 나는 궁금증이 있었다. 누구는 쉽게 문제를 해결하는 반면 누구는 문제 해결하는데 시간이 오래 걸린다. 그리고 시간이 오래 걸린다고 문제를 잘 해결했다고 보기도 어렵다. 왜 그럴까?
처음부터 세부사항으로 들어가지 않는다.
이문구가 내 마음에 마치 비수가 날아와 꽂혔다. 나는 일단 문제를 직면하면 긴장한다. 어떻게 이거를 해야 할지 고민하기 전에 너무 긴장을 해버리는 습관이 있다. 그래서 할 수 있는 거부터 천천히 하자고 생각하고 접근한다. 여기에 함정이 있었다. 할 수 있는 것부터 한다는 것이 눈에 띈 표면적이 현상을 해결하는 거에 시선을 빼앗겨버리게 되기 때문이다. 물론 이게 크게 잘못되었다고 말하는 것이 아니다. 문제가 아닌 부분을 엉뚱하게 넘겨짚어서 진짜 원인을 놓치고 올바른 결론에 이르지 못하기 때문이다. 자 그렇다면 업무 성과가 높은 개발자는 어떻게 접근할까?
처음부터 원인과 전략 같은 세부적인 사항으로 뛰어들거나 무작정 일부터 벌이는 것이 아닌. `어떤 구조와 과정을 통해 그 문제를 해결할까`를 먼저 생각한다.
그렇다. 어떤 구조와 과정을 통해 문제를 어떻게 해결할지 먼저 고민한다. 책에서 어떤 구조로 설명하는지 살펴보자
1. what? - 무엇을 해결할 것인가? (문제 설정)
2. where? - 어디가 나쁜 것인가? (문제 특정)
3. why? - 왜 일어나는 것인가? (문제의 원인 규명)
4. how? - 어떻게 할 것인가? (해결책 )의 순서로 본질적인 문제를 특정한 후 해결로 이어가면 된다고 하는데.. 잘 모르겠다.
그래서 ㅋㅋ 바로 한번 적용해보았다. 이번에 트위터 클론 코딩을 작업하기로 마음먹고 작업 중이기 때문에,
스스로에게 질문을 던져 보았다.- 무엇을 해결할 것인가?
- 트위터 클론 코딩을 통해 React-hook의 전문성을 키울 것이다
- 혼자서도 프로젝트를 개발할 수 있는 수준을 만들 것이다. - 어디가 나쁜 것인가?
- 어떤 React 구조가 좋은 것인가? - 왜 일어나는 것인가?
.....
하다가 포기했다. 질문이랑 접목이 되지 않았다. ㅋㅋ 이것도 결국 즉흥적으로 떠오른 대책을 닥치는 대로 늘어놓거랑 별반 다른 게 아니기 때문이다. 책도 이렇게 말하고 있어서 개인적으로 좀 놀랐다. 대안으로 3W1H 방법을 제안했다.
3W1H로 문제를 효과적으로 해결한다.
'문제를 해결하려면 Why를 추궁하라' 또는 'why를 5회 반복하라'라는 말이 있다고 한다.
자 그러면 다시 나에게 그대로 질문해보자.
나는 왜? 트위터를 클론 코딩하려고 하는가?
- 상위 1%의 개발자를 목표로 하고 있기 때문이다.
- 상위 1%의 개발자는 많은 경험을 가지고 있고, 코드의 품질을 개선할 수 있는 사람이기 때문이다.
- 트위터 클론 코딩을 통해 단순히 완성하는 것에서 그치는 것이 아닌 확장 가능한 코드를 개발하고자 하기 때문이다.
- html, css, js의 감을 잃지 않고, 나중에 좋은 서비스를 개발하여 배포할 수 있기 때문이다.
- 코딩을 이용하여 세상을 더 좋은 세상을 만들고 싶기 때문이다.
음.. 먼가 점점 더 멀어지는 기분이다. 역시 책은 말하고 있다 덩어리가 지나치게 큰 문제에 그대로 why를 던지면 오히려 점점 문제로부터 멀어진다고 한다. 책은 이러한 문제를 알고 있었다.
WHY를 질문하기 전에 먼저 WHAT? WHERE가 있어야 한다고 한다.
즉 `어디를`문제로 특정할 것인가? => 덩어리가 큰 문제를 잘게 분해해야 한다. 여러 가지 관점, 또는 그 조합을 생각하는 동시에 안 좋은 부분을 최대한 정확하게 특정해야 한다.
트위터 클론 코딩으로 무엇을 배울 수 있는가?
어떤 구조로 트위터 클론 코딩할 것인가?
서비스 배포는 어떻게 할 것인가?
기술 스택은 어떻게 될 것인가?동시에 `무엇을` 해결할 것인가? 정말 근본적으로 해결되어야 할 문제인가? 무엇을 문제 삼을 것인지에 대한 질문이 있어야 한다.
내가 트위터 클론 코딩을 통해 해결하고자 하는 부분.
- 코드 리뷰를 좀 더 깊이 있게, 더 유지보수가 좋은 소스가 되도록 논리 정연하게 말하질 못한다.
- 유지 보수가 좋은 소스코드를 작성하여 회사에 기여하고 싶은데, 유지 보수가 좋은 코드를 작성하기가 어렵다.
- 웹이 어떤 방향으로 새롭게 나오는지 흐름을 못 타고 있어, 신규 기능에 대해 알지 못한다.마지막으로 다시 `되돌아가기` 사고로 논점을 명확히 하라고 한다.
- 유지 보수가 좋은 코드에 대한 기준 세우기
> 트위터 클론 코딩으로 유지 보수가 좋은 코드의 기준이 생기는가?
=> 트위터 클론 코딩을 통해, 다양한 오픈 소스를 찾아보면 좋은 코드의 기준을 찾고, 정리하자.
- 신규 웹 프레임 워크, 라이브러리에 사용해보고 회사에 제안 하기
> 트위터 클론 코딩을 통해 신규 웹 프레임 워크, 라이브러리를 사용해 볼 수 있는가?
=> 최근 가장 중요한 TypeScript와 React, hook을 사용하여 개발 하자.
이 뿐 아니라 트위터 클론 코딩을 통해
1. Typescript + react 사용하는 방법에 대해 이해한다
2. 다양한 상황에 대해 어떻게 코드를 구현해야 할지 경험하고 정리하여 경쟁력을 키울 수 있다.
3. 혼자서도 서비스를 개발하고 배포할 수 있을 수 있다.이렇게 간단하게 적용해 보았다. 아직 먼가 아쉬운 부분들이 많지만, 여러 번 되돌아가기를 반복하면서, 좀 더 정확한 문제 해결을 할 수 있도록 해야겠다.
느낀 점 및 정리
- what > where > why > how의 방식으로 프로젝트를 훌륭하게 수행할 수 있다.
- 뭐가 되었든 간에 좋은 질문을 던지는 것이 참 중요하다는 것을 알 수 있었다.
- 지금 트위터 클론 코딩을 진행하고 있지만, 초기의 목적보다는 다른 방향으로 진행하고 있다는 것을 다시 한번 느꼈고, 매번 되돌아가기 사고를 통해 논점을 명확하게 하는 것이 매우 중요함을 다시 한번 느꼈다
728x90'독서' 카테고리의 다른 글
Clean Code - 의미있는 이름 (0) 2022.04.25 Clean Code (0) 2022.04.23 실용주의 프로그래머 (0) 2022.03.18 단순한 사고의힘 5W1H - 새로운 기술 제안하는 방법 (0) 2021.10.15 - 무엇을 해결할 것인가?