개발자를 성공의 웅덩이에 빠뜨려라!
Framework 설계시 가장 중요시 여겨야 하는 것이 사용성이다.
사용자들이 쉽게 사용하고, 생산성에 만족하느냐가 Framework의 생존 여부와 연결되어 있기 때문이다. 쉽게 사용할 수 있는 사용 편의성을 일전에 얘기한 적이 있지만,이 못지 않게 중요한 것이 Framework 사용자가 실수를 하기 어렵게 만드는 것이다. 즉 실수하지 않게 성공의 웅덩이를 만들어서 성공할 수 밖에 없게 만들라는 얘기다.
PLoP10으로 인해 Framework 관련 논문을 작성하면서, .NET과 Java Framework를 설계한 대가들의 공통적인 충고를 들을 수 있었다.
성공의 웅덩이(The Pit of Success )를 만들어라!
.NET Framework을 설계한 Krzysztof Cwalina 역시 뼈 아픈 경험을 했다. .NET 1.0을 버려야 했던 그의 아픈 경험은 Framework Design Guidelines에 잘 나와 있다.
많은 시련과 갑자기 발생하는 요구사항 속에서, 사막을 가로지르는 여행[1](중간에 피드백을 전혀 받지 않는 상황)을 벗어나, 우리의 Platform과 Framework를 사용한 고객들이 이기는 습관(winning practice)에 쉽게 빠져들기 원했다.
.NET Framework 1.0 버젼은 Framework 설계자인 우리도 실패하기 쉽게 만들 정도이다.
진정한 생산성(True productivity)은 쓰레기와 같은 제품을 쉽게 만들 수 있도록 하는 것이 아니라, 좋은 제품을 쉽게 만들 수 있도록 하는데서 온다.
성공의 웅덩이을 구축해라. Framework를 구현하기 이전에, 사용자에게 Interface를 배포해 피드백을 수렴한 다음에, 실제 객체 모델을 정해야 된다고 권하고 있다. 끊임없는 피드백과 경청의 자세가 요구된다.
실수 하기 어렵게 만들어라 (Hard to misuse.)
지금은 Google의 Principal Software Engineer로 있지만, 오늘날의 Java Framework를 설계한 Joshua Bloch 역시 동일한 말을 하고 있다.
Hard to misuse. 실수하기 어렵게 만들어라. Tracz이 말한 “The Rule of Threes” 의 원칙에 따라, API를 설계한 후 최소한 3번의 Target Application으로 검증 해야 된다. 또한 Joshua는 Framework를 실제 구현하기 이전부터 먼저 API를 작성하고 다른이에게 검증을 받기를 권하고 있다.
.NET을 설계한 Krzysztof 옹이나 Joshua옹이나 결국 같은 얘기를 하고 있다.
Framwork를 구현하기 이전에도 먼저 Feedback을 받고, 구현한 후에도 정제하라는 말이다. 결국 겸허하게 다른이의 의견을 구하는 것만이 좋은 Framework를 설계하는 방법이다.
자신의 지식이 옳다고 싸우는 모습보다는 , 빈 그릇을 채울 수 있는 겸손함이 우리에게 필요한 것이 아닐까?
[1] 사막을 가로 지른 다는 것은 중간 중간 고객의 피드백을 받지 않고 계획한대로 시스템을 구축한 다음 고객의 피드백을 받는 것을 의미한다.
마이크로소프트는 마일스톤 개발 방식을 통해, 중간 중간 나오는 프리뷰 버전과 RC 버전을 만들어 내어,고객들에게 프레임워크에 대한 선 학습과 피드백을 끊임없이 받음으로써, 성공적인 제품(프레임워크)를 만들게 하는 방법이다.
매우 공감이 가는 글 읽다 갑니다.
피드백이 없는 제품이나 사전 시장조사 없는 제품, 또는 하나의 기술이 전체인양 선전 하면서 현혹하는 행위도 개발자를 실수의 웅덩이로 인도하는 지름길이 아닌가 싶습니다.
(요즘들어..왜 모든것을 기술 하나로만 바라보는 사람들이 이토록 많이 생겨나게 됐을까? 하는 의문을 던집니다..그렇게 본질을 볼 수 있는 자질이 없는것인가? 의심스럽기도 하구요.
아이폰이나 안드로이드같은 원초 기술을 만들 수 없는 시장 환경에 대해서도 이래저래 생각이 많이 나더군요. 당연히 기획과 피드백이 없고 아이디어나 창의성위주의 문화보다 기술 그 자체만을 습득하기 원하고, api가 어떻고 저떻고~하나만 볼 줄 알기 때문에 창의성이란 것을 꺼낼 엄두조차 못 내는거 아닐까 합니다. 자.. 우리 모두에게 묻습니다. 우리는 무엇을 만들었을까요? 정녕 우리는 무엇을 만들었을까요? 기술이 중요할까요 아이디어가 중요할까요? ) — 코멘트가 너무 강했습니다. 상념적인 질문이지만 매우 중요한 난제가 아닐 수 없습니다.
자신의 지식이 옳다고 싸우는 모습을 옆에서 보면 정말 추하기까지 한데 저렇게 입장을 굳히지 못할 이유라도 있을까..하면서 안타까웠던 것이 한두번이 아닙니다. 한 발자욱만 멀리서 지켜보면 아무것도 아닌일을 가지고 자신의 주관과 논리가 마치 진실인양 벽을 쌓아놓고 옥탑방에서 거울보고 자신의 말이 진리이니 나를 따르라~고, 과대포장하는 사람이 아닐까합니다. ㅎㅎ
한가지 기술을 고수하는 것, 어떻게 보면 용기있고 주관있게 보입니다. 반면 그 모습이 추하다면 인정하고 고쳐야죠. 자신이 어떤 위치에 서있는 것을 아는 것도 상호 조화에 매우 유익한 도움을 줄 수 있다고 생각합니다.:)
역시 moova님은 필드 경험이 많으셔서, 이맛 저맛 다 보셨군요…
쉽게 대화를 나눌수 있는 만나기가 어려운거 같아요 🙂
하나를 얻기 위해 둘을 희생하고, 또 다른 하나를 얻기 위해, 세네개를 희생해야 하는 정치속에 살지만, 그래도 좋은 사람도 있으니 힘을 냅시다!!
병마와 꼭 싸워 이기세요!! 홧팅!!
짧은 글에서 배울게 너무 많네요.
좋은 글 감사합니다~ ^^
아 예. 🙂
제 글이 아니라. 유명한 두분의 철학을 읽고 전 그냥 베낀것 뿐이라, 감사함은 두분에게로. ㅋㅋ
연휴 잘보내시고 건강도 챙기세요!! 홧팅!!
[…] This post was mentioned on Twitter by 김동열, Youngsu Son. Youngsu Son said: 개발자를 성공의 웅덩이에 빠뜨려라!: #Framework 설계시 가장 중요시 여겨야 하는 것이 사용성이다. 사용자들이 쉽게 사용하고, 생산성에 만족하느냐가… http://goo.gl/fb/9Qjpx […]