2011년 2월 22일 화요일

필립 G.아모어의 무지의 5단계

필립 G.아모어의 무지의 5단계 

:에드번즈가 필립G아모어의 <The Laws of Software Process(Auerbach, 2003)을 요약함

무지의 5단계는 지식을 5개이 다른 단계로 분해하는 그런 체계이다.



0단계: 무지의 부재
"어떤 것을 알고 있음을 증명할 수 있을 때, 0OI라고 한다."
0OI의 단계는 질문과 답을 가지고 있다는 것을 뜻합니다. 예를 들면, "유지보수 가능한 엔터프라이즈 소프트웨어를 구축하는데 어떤 프로그래밍 환경이 적합한가?"라는 질문에 "자바"라고 답하는 것입니다. 물론, 이 질문에는 여러가지 다른 답이 있을 수 있지만 요점은 당신이 질문과 답을 다 가지고 있다는 사실입니다. 이런 경우 자바로 유지보수 가능한 엔터프라이즈 소프트웨어를 작성함으로써 무지의 결핍을 설명할 수 있습니다. 0OI 상태에 도달했을 때 효과적인 해결책을 얻기 위해서는 시간과 실행의 문제만 있을 뿐입니다.


1단계: 지식의 부제 
"어떤 것을 알지 못할 때 1OI라고 한다."
1OI 단계는 답을 할 수 있도록 질문 영역에 관해 충분한 정황을 포함하는 적격 질문을 가지고 있다는 것을 뜻합니다. 예를 들면 "데이터베이스에, create, read, update, delete 동작을 지원하는 웹 사용자 인터페이스를 빨리 구축하는데는 무엇을 사용할 수 있습니까?"라는 질문이 있따고 합시다. 이 경우 루비 온 레이스(ruby on Reils)가 한가지 답이 될 수 있다. 1OI에서는 질문 자체가 상당히 구체적인 지식을 포함하고 있다. 1OI상태에 있지 않음을 보여주는 이와 반대되는 예시는 "시스템의 요구사항은 무엇인가?"입니다. 이 질문은 1OI이라고 부르기에는 너무 모호하며 사실 이 질문은 2OI를 나타냅니다.


2단계: 인식의 부재
"어떤 것을 알지 못한다는 그 자체를 모를 때 2OI라고 한다."
2OI 단계는 어떤 질문을 해야 하는지조차 모르지만(이 부분이 중요함) 어떤 질문을 해야하는지 알아낼 방법은 있다는 뜻입니다. 이 책을 집필하는 과정에 겪었던 개인적인 경험을 예로 들어볼 것입니다. 인터뷰의 음성을 필사할 때 오디오 플레이어의 재생 버튼을 누르고 위드 프로세서에 옮겨적은 작업을 번갈아 하느라 상당히 많은 시간을 낭비하고 있다는 사실을 알았습니다. 나는 "타이프를 치는 동안 플레이어를 발로 밟는 페달로 작동할 수 있다면 좋지 않을까?"하고 생각했습니다. 필립 아모어는 이런"~면 좋지 않을까?"라는 질문을 "메타 질문"이라고 하며 2OI라는 것을 입증하는 하나의 지표라고 합니다. 나는 질문을 "페달로 재생버튼을 작동 할 수 있는 상품이 있을까?"로 바꾸어 단계는 1OI로 낮추었습니다. 그리고 분명 시장에는 그런 상품이 많이 있었습니다. 나는 하나를 구입하여 문제는 0OI로 다시 낮추었습니다. 이 경우 문제 자체는 "나는 필사를 더 빨리 할 방법이 필요해"가 2OI에서 1OI로 줄이는 열쇠였다는 것입니다. 많은 경우 그 영역으 지식이 있다는 점에서 2OI는 1OI로 줄이는 중요한 열쇠입니다.



3단계: 효율적인 프로세스의 결여 
"무언가늘 모른다는 사실을 알지 못한다는 것을 밝혀낼 적절하고 효과적인 방법이 없을 때 3OI라고 한다."
3OI단계는 무엇을 질문해야 할 지 모르고 또한 무엇을 질문할 이 아는 좋은 방법조차 모른다는 뜻입니다. "적절하고 효과적인"이라는 말이 아주 중요합니다. 소프트웨어 개발에 있어서 여러분의 시스템에서 3OI를 발견하기 좋은 방법은 그 시스템을 운영환경으로 전환하는 것입니다. 여러분의 소프트웨어 개발 철학에 좌우되기 때문에 3OI를 발견하는 데 있어서 "적절하고 효과적인"방법이 될 수도 있고 그렇지 ㅇ낳을 수도 있습니다. 여러분이 끊임없는 베타 인터넷 스쿨에서 나왔다면 적절하고 효과적인 방법이 될 것입니다. 카우보이 같은 접근 방법을 선호하지 않는다면 적절하고 효과적인 방법이 되지 않을 것입니다.
예를 들어 사람들이 내 웹사이트를 방법하는 것에 대한 보고서를 생성하기 위해 웹 로그를 분석하는 소프트웨어를 작성하고 있다고 합시다. 그런 문제는 웹분석학의 영역의 영향을 받습니다. 웹 로그 분석 소프트웨어 작성의 문제에 직면했지마 "웹분석학"의 문제 영역을 알지 못한다는 것이 3OI가 되는 한 예입니다. 또 다른 예를 들면, 수 테라바이트에 이르는 대용량의 데이터를 처리하는 어떤 소프트웨어를 만들어야 하는 경우입니다. 이 때 Google의 MapReduce 프레임워크(http://labs.google.com/papers/mapreduce.html)를 알지 못한다는 것이 3OI의 예가 될 것입니다.



4단계: 메타무지
"무지의 5단계에 관해 알지 못할 때 4OI라고 한다."
아모어의 체계에서 이것은 약간 놀림조의 말인데 4OI는 무지의 단계에 대한 무지입니다.

필립 아모어는 그의 책[The Laws Of Software Process]에서 무지의 5단계의 기본적인 철학을 확장했습니다. 필자는 이런 글을 좋아하는 이들에게 이 책을 강력히 추천합니다.



지금 여러분이 손에 들고 있는 이 책의 인터뷰를 읽고 있다면 가장 자주 인용하는 핵심 개발자 기술은 무엇을 질문할지를 아는 것입니다. 다르게 말하면, 2OI라는 큰 저장소를 가지고 있고, 3OI를 2OI로 줄이기 위한 훌륭한 프로세스를 가지고 있는 것입니다. 이것이 372페이지의 13장에서 맥스와 리보가 대학 교육에서 광범위한 커리큘럼의 중요성을 인용한 이유입니다. 여러분이 많은 다른 일에 노출되어 있다면 답을 이끌어내 줄 질문을 함으로써 나아질 것입니다. 종종 경험을 대신할 만한 것은 없다고 말합니다. 필자는 2OI라는 커다란 저장소를 가지는 것은 바로 경험이라고 생각하는데 이 말의 실제 의미는 2OI의 커다른 저장소를 얻는 유일한 방법이 오랫동안 무언가를 함으로써 가능하다는 것입니다.


출처: 세상을 뒤흔든 프로그래머들의 비밀, 부록

2011년 2월 18일 금요일

통합 개발 환경 - 위키백과, 우리 모두의 백과사전

통합 개발 환경 - 위키백과, 우리 모두의 백과사전: "- Google 툴바를 사용하여 보냄"