tech.junha.kr

Software Design Decoded: 66 Ways Experts Think 후기

짤막한 느낀 점

도대체 전문가들은 어떤 식으로 사고하는지 궁금했다. 이 책을 읽으면서 66가지 주제로 사고방식을 엿볼 수 있었다. 카테고리별로 잘 나뉘어 있었고 문단이 길지 않아 읽기도 수월했다. 특히 좋았던 점은 내가 어떤 부분에서 잘하고 있는지와 부족한지가 뚜렷하게 구분되니깐 어디서 헤매고 있는지 진단하기 좋았다. 부족한 부분은 사실, 강점에서부터 비롯된 '트레이드오프' 현상인데 이를 고칠 수가 있나?라는 의문이 들기도 했다. 약점을 보완해 나가며 균형 잡힌 전문가가 될 것인지, 아니면 강점을 더욱 발전시켜 개성 넘치는 전문가가 될 것인지 고민하기도 했다. 그렇게 내린 결론은 "전문가"라는 직업 자체가 균형 잡힌 역량을 갖추는 것이 중요하다고 생각하기 때문에, 전자를 선택하고자 한다. 후자는 개인적인 활동에서 충분히 즐기도록 하자.

저자 소개

Marian Petre는 "전문가들의 생각을 분석"하여 소프트웨어 설계 전문가들이 어떻게 전문성을 발휘하는지, 사람들이 설계와 문제 해결에 대해 어떻게 사고하고 소통하는지, 그리고 그들이 사고 과정에서 표현 방식을 어떻게 활용하는지를 탐구한다. 영국의 오픈 대학교에서 컴퓨팅 교수로 재직 중이며, 심리언어학과 컴퓨터 과학 학위를 보유하고 있다.

André van der Hoek는 본질적으로 프로그래머로서, 소프트웨어 설계자 및 개발자들과 대화하고 협력하여 그들이 더 효과적이고 효율적으로 일할 수 있도록 돕는 새로운 도구를 만드는 것을 좋아한다. 캘리포니아 대학교 어바인 캠퍼스의 정보학 교수이며, 비즈니스 중심 컴퓨터 과학과 컴퓨터 과학 학위를 보유하고 있다.

❤️: 인상 깊게 읽었거나, 부족함을 느껴 더 노력하고 싶은 주제

내용

Experts keep it SIMPLE (1~)

  • EXPERTS prefer simple solution ❤️ → 문제를 해결하는 데는 수많은 방법이 있다. 전문가는 그중 가장 단순한 걸 선택할 뿐이다.
  • EXPERTS solve simpler problems first → 먼저 간단한 문제를 해결하면서 복잡한 문제를 단순하게 만들어나간다.
  • EXPERTS divide and conquer → 쪼개서 이해함과 동시에 전체를 볼 줄 안다.
  • EXPERTS do not overgeneralize → 무작정 확장성을 고려해서 짜지 않는다.
  • EXPERTS design elegant abstractions → 추상화를 단지 만드는 게 아니라 설계해서 이를 통해서 고수준의 사고를 가능하게 한대.
  • EXPERTS use metaphor → 은유를 통해 바로 이미지로 이해시킨다.

Experts COLLABORATE (7~) ❤️❤️

  • EXPERTS prefer working with others → 전문가는 은둔 고수가 아니다. 이들은 소통을 통해 영감과 통찰을 얻어간다.
  • EXPERTS reach out ❤️ → 다른 사람의 도움을 빠르면 빠를수록 먼저 요청한다. 난 다른 사람의 리소스를 소모시키지 않겠다는 생각에 읽어도 큰 도움 안 되는 코드를 파악해 가며 도메인을 파악해 갔는데 이는 좋지 않은 전략이었다.
  • EXPERTS check with others continually ❤️ → 확실히 내가 소통 능력에 약하다는 걸 깨달았다. 전문가들은 짬 내서 소통하는 걸 잘하고 이를 익숙하게 받아들인다고 한다.
  • EXPERRS involve the user → 사용자가 말하는 것을 그대로 받아들이지 않고 그 너머를 본다는 것은 내가 하는 것과 일맥상통하네. 진짜 이게 중요했음.
  • EXPERTS socially embed and reinforce food practice → 집단내에서의 네트워킹이 마련되어 있는 것도 중요하구나
  • EXPRESTS agree to disagree → 의견불일치를 받아들이고 다른 부분을 먼저 집중하고 그 후 얻어지는 추가 정보로 다시 의논해 나간다는 것이 인상 깊네.

EXPERTS KEEP GOING (63~)

  • EXPERTS design all the time → 어쩌다 하는 게 아니라 그냥 습관적으로 몰두해서 하는 것임
  • EXPERTS know design is not done until the code is delivered and running → 코드의 품질은 사용성 평가에 따라 달린 것이기 때문이다
  • EXPERTS keep learning → 전문성을 당연하게 여기지 않고 계속해서 배우려고 한다.
  • EXPERTS play → 영감과 흥미를 불어 일으킬만한 것들을 계속해서 가지고 논다.

EXPERTS REFLECT (58~)

  • EXPERTS curtail digressions → 전문가들은 완벽한 기계가 아니다. 뭔가 잘못된 상황을 주기적으로 캐치하고 다시 되돌아가는 힘이 있는 사람들이다.
  • EXPERTS retain their orientation → 많은 회의, 수많은 의사결정들 속에서 방황하지 않고 나아가야 할 방향을 정해놓고 기억하고 있는다.
  • EXPERTS think about they are not designing → 이거 난데? 이 파트는 충분히 잘하고 있구나. 자부심을 갖자.
  • EXPERTS re-assess the landscape → 충분히 잘하고 있고, 너무 과하지 않게 다른 쪽 파트를 보충함으로써 균형을 맞추자
  • EXPERTS invest now to save effort later → 미래의 일을 예상하고 지금 예방한다

EXPERTS TEST (51~)

  • EXPERTS are skeptical → 그렇기 때문에 테스트를 꼭 한다
  • EXPERTS simulate continually → 시뮬레이션을 계속 돌려보는 건 나도 마찬가지!
  • EXPERTS draw examples alongside their diagrams → 아키첵처 설계는 수동적이라고 생각하고 이에 들어맞는 예시를 생각한다
  • EXPERTS test across representations → 각각의 뷰들은 제약이 있기 때문에 전부 내려다봄으로써 점검한다
  • EXPERTS prototype concepts → 추상적인 것과 상호작용하는 것의 한계를 알기 때문에 어떻게든 일단 눈에 보이는 구체적인 프로토타입을 만들고 이를 통해 피드백한다.
  • EXPERTS play the fool ❤️ → 아무래도 담당자이다 보면 매몰되기 마련이다. 아무것도 모른다고 가정한 상태에서 재평가하는 것도 도움이 될 듯!
  • EXPERTS are alert to evidence that challenges their theory ❤️ → 나는 정상이었다. 아무래도 내가 만든 설계다 보니 이게 맞는지 의심이 가는 건 당연한 거였고, 이를 반증하는 사례에 대해 귀를 기울이는 상태는 전문가들도 하는 좋은 자세였다.

EXPERTS ITERATE(44~)

  • EXPERTS repeat activities → 내가 그린 설계도, 다이어그램, 아키텍처. 그냥 순순히 따른다기보다, 백지에서 여러 번 그려보는 것도 최선의 방법이 나올 수도 있겠다. AI적 사고 시행 횟수를 좀 더 늘리는 것을 받아들여볼까
  • EXPERTS generate alternatives → 대안을 만들 시간까지 현업에서 주어질까.. 시스템이 거대하면 필수적일 것 같긴 하다.
  • EXPERTS explore different prespectives → 구현, 배포, 유용성, 그 외 인간적 관점까지 고려하는 게 전문가다
  • EXPERTS move among levels of abstraction → 높은 추상화 단계에서 설계하고 낮은 추상화 단계에서 기술적 부분을 챙긴다
  • EXPERTS rotate among subject pairs → 전문가는 단지 뚝딱 뚝딱이 아니라, 예술이네.. 문제쌍을 가지고 싸이클 돌면서 마주하면 진전이 더 빠르다는 걸 알고 있음.
  • EXPERTS change notation deliberately → 표현방식을 달리한다라… 시야를 다르게 보는 유용한 방법론이 될 수 있겠구먼
  • EXPERTS pause → 전문가는 맺고 끊을 줄 안다. 무지성으로 집착적으로 일이 안 풀린다고 늘어지지 않는다.

EXPERTS ARE NOT AFRAID(37~)

  • EXPERTS focus on the essence ❤️❤️ → 전문가들은 먼저 본질에 집중하고, 주변적인 부분의 디자인에 대해서는 노력을 늦춘다. 갓챠!!
  • EXPERTS address knowledge deficiencies → 가정을 할 수밖에 없지만 이건 지식의 부족이라고 알고 있고, 가정이 맞는지 최선을 다한다.
  • EXPERS go as deep as needed → 추상화와 구현의 일치를 통해 엄격함과 정확성을 유지한다.
  • EXPERTS try the opposite
  • EXPERST do something (else) → 교착상태에 빠질 때 그냥 잠시동안 초점을 달리하는 것도 최선의 방법이다.
  • EXPERTS know when to stop → 이득의 증가량이 감소할 때를 귀신같이 찾아내서 중단한대
  • EXPERTS build their own tools → 장인은 도구도 잘 다룬다~

EXPERTS WORK WITH UNVETAINTY(30~)

  • EXPERTS keep options open ❤️ → 결정을 확고히 하는 빨리 정하고자 하는 건 본능이다. 본능을 거스르고 옵션을 오픈하는 게 전문가다.
  • EXPERTS make provisional decision → 전문가들도 일단 잡고 달린다.
  • EXPERTS see error as opportunity → 오류, 장애를 통해 배우면 그만이다. 버그가 꼭 개인의 실책을 수반하지 않는다.
  • EXPERTS know how things work → 사고방식 못지않게 “지식” 역시 중요한 듯
  • EXPERTS make tradeoffs → 최선이란 존재하지 않고 여러 후보군들 중 종합평가 1위를 선택하면 그만이다
  • EXPERTS prioritize among stakeholders ❤️ → EXPERTS는 Engineer인 동시에 Employee이기 때문에 이거 역시 중요하다
  • EXPERTS adjust to the degree of uncertainity present → 불확실성에 따라 업무의 강도가 정해지는 듯

EXPERTS SKETCH(24~)

  • EXPERTS externalize their thoughts → 생각을 그림으로 자주 그린대. 생각을 말, 그림, 등등의 표현으로 자꾸 발산하는 게 검증과 발전의 기회라는 걸 앎.
  • EXPERTS draw the problem as much as they draw the solution → 문제상황을 해결방법만큼이나 중요하게 생각해서 그린다.
  • EXPERTS draw what they need and no more → 필요한 만큼만 그리지 막 세심하게 그리진 않는다. 노력을 낭비하지 않는다.
  • EXPERTS shift between formal and informal → 정석, 비정석적인 방법으로 다이어그램을 모두 잘 다룰 줄 알며 상황에 따라 다르게 선택한다.
  • EXPERTS invent notation → 새로운 프로젝트에 어울리는 독창적인 표기법을 알아서 만들고 쓸 줄 안다.
  • EXPERTS keep sketches → 이건 좀 납득이 안 가네. 보관을 잘해도 꺼내다 보지 않으면 말짱 도루묵인데. 암튼 언젠가 쓰일 걸 알고 보관한대.

Experts BORROW (13~)

  • EXPERTS prefer solutions that they know work ❤️ → 이미 검증된 해결책을 좋아한다.
  • EXPRETS look around → 어떤 기술을 적용할지 다른 기술 구경도 많이 한대
  • EXPERTS take inspiration from wherever they can → 관찰을 많이 하며 아이디어를 수집하고 다닌다
  • EXPERTS use analogy → 다루기 힘든 문제는 유추를 한대
  • EXPERTS use design methods SELECTIVELY ❤️ → 새로운 설계 방법을 발명하려고 하지 않는다. 이미 발명된 걸 쓰되 한계점을 인지하고 있는다.
  • EXPERTS network ❤️❤️ → 모든 걸 알 수 없다고 인정한다. 대신 네트워킹을 통해 전문 지식을 보충한다.

EXPERTS BREAK THE RULES

  • EXPERTS relax constraints → 필요에 따라, 상황에 따라, 단계에 따라 제약 조건을 내려놓기도 한다.
  • EXPERTS reshape the problem space → 갑자기 든 생각. 이것도 개발 경험, 트러블 슈팅 경험이 있어야 공감이 되고 읽히겠다고 느낌. 암튼 문제를 재구성한다는 추상적인 말이 너무 뻔하게 느껴지지만 그렇대.
  • EXPERTS use notations as lenses, rather than starightjacktes ❤️ → 이거 내가 잘 못하는 부분임. 도구를 자유자재로 활용해야지 도구에 빠져버리면 안 됨.
  • EXPERTS design throughout the creation of software → 설계는 단순히 구현물로 변환되어야 하는 ‘전’ 단계가 아니라 모든 걸 포함한다.
  • EXPERTS do not feel obliged to use things as intended → 도구를 의도대로만 쓰지 않고 필요에 의해 조합해서 쓴다.

Reference

https://www.amazon.com/Software-Design-Decoded-Experts-Think/dp/0262035189