친구와의 agile 이야기#
친구: Y! 난 agile이란 방법론을 앞으로 우리 회사 모든 프로젝트에 도입하고 싶은데, 윗 임원들을 설득할 수 있는 좋은 방법이 없을까? agile 방법이 우수하다는 것을 한방에 증명할 수 있는 그런 것!

나: 글쎄... 그런데 agile이 최선인지 아닌지는 아무도 몰라. 하지만 지금 네가 하고 있는 방법은 절대로 아니라는 거야. 현재 waterfall적인 것은 무조건 안된다는 거지. 그렇다고 무턱대고 지금 가진게 나쁘니까 agile을 하자고 할 수는 없겠지?

친구: 옆에서 네가 테스트를 만들고 mock object란 걸 통해서 domain modeling을 하는 tool들을 사용하는 걸 보니까 이건 웬지 craft를 하는 것 같다는 생각이 들어. 그냥 백지위에서 시작하는 게 아니라 test를 통해 어떤 도구의 도움에 의해 뭔가 조금씩 만들어지는 느낌을 받는다 말이야. 그게 웬지 자신감을 주는 것 같아.

나: 그 feel은 네가 제대로 받은거야. 옛날엔 우리가 software engineering을 하면서 무슨 art를 했던 것 같았었지. class들을 만들땐 무슨 번쩍하는 영감이 떠올라야 했구 그나마도 내가 제대로 하고 있는 지 항상 의문이었지. UML이란 tool을 사용해 보지만 art인 점은 여전했었어?

친구: 맞아 art였어... ^^

나: 테스트 도구를 사용하면서 디자인을 어떤 영감에 의존하지 않는거지. 이 도구들이 줄자로 측정기로 옆에서 내가 만드는 프로그램의 방향을 끊임없이 다듬어주거던. 프로그램자체가 아닌 그 방향을 잡아준다는 거는 정말 내가 너에게 저극 추천하고 싶어. 비록 전사적인 개발방법론 도입과 같이 크게 벌이지 않더라도 개인적으로 이 test tool들을 잘 활용해봐.
나: art가 아니고 craft이기에 자신감을 가질 수 있는거야 ^^. craft는 누구나 할 수 있는거잖아.

친구: 그래서 난 이왕 할거면은 처음부터 진지하게 전사적으로 시작하고 싶은거지. 이론적인 근거가 탄탄한 보고서를 만들 자료좀 줘봐.

나: 그냥 TDD 부터 시작해봐. 그건 뭐 개발 방법론이라고 말할 수도 없는거니까. 또 테스트의 중요성은 아무리 강조해도 모자라잖아? 테스트 먼저 생각하는 사고의 전환부터 시작해봐.

친구: 하지만 테스트 first라는 말은 잘 알겠는데 막상 테스트를 만들려면 막막해져. 그리고 내가 만든 테스트 자체가 도움이 안된다면 결국 개발이나 디자인에 도움이 안되는 건 마찬가지 아냐?

나: 그런 생각이 바로 '시작점'인거야. 어떻게 테스트를 꾸밀까란 고민은 한마디로 말하면 내가 뭘 테스트해야 하나라는 고민이지 않겠어?
나: 뭘 테스트하냐라는 고민에 대해서 정확한 답은 누구에게서 받겠니? 그 프로그램의 사용자겠지? 결국 고객이야.
나: 테스트를 통해서 요구사항 분석도 되는 거지. 그리고 테스트도 하나의 작은 프로그램이기 때문에 고객의 요구사항이 가질 수 있는 잠재적인 문제점들을 미리 미리 볼 수 있다는 장점이 있어. 이건 문서만을 통해서 하는 요구사항분석이 따라 올 수 없는 점이지.
나: 그리고 acceptance test을 하는 wiki tool 봤지? 웬만한 프로타잎의 역활을 충분히 하잖아? 바로 고객에게 아웃풋을 주고 즉각적인 feedback도 기대할 수 있는 거지.

나: 그리고 도구란게 자꾸 써야 느는거잖아. 처음부터 다 알고 사용하지는 못하는거구. 내가 pair programming이라는 걸 한번 소개해주면서 너랑 같이 테스트를 작성해보자. pair programming 은 지식의 인수인계를 쉽게 해주거던.




Thursday, June 28, 2007 12:05:05 AM (Eastern Standard Time, UTC-05:00) #    Comments [0]  |  Trackback

 

테스트 tool과 Pair Programming을 통한 기획력 향상과 개발자와의 협업 증대#
W,

한국에서 기획자와 개발자들간의 불화, 이질감, 오해들은 W 자네도 이미 알고 있으리라 믿네. 함께 100% 협력해도 성공적인 프로젝트가 될 지 안될 지 모르는 마당에 이렇게 삐걱거리는 관계는 회사의 경쟁력에 치명적일 수 밖에 없겠지. 양쪽 얘기를 다 들어봐야 서로의 입장차이만 확인할 뿐 아무런 도움이 되지 않을걸세.

왜냐하면 근본적인 문제는 기획자에게 바라는 산출물에 대한 회사와 개발자들의 요구사항이 명확하지 않다는데 있는 것일세. 즉, 언제부터 기획자들의 ppt 파일이나 doc, 혹은 visio 파일들이 기획 산출물인양 굳어져 버렸는 지. 우선 이런 문서들이 개발에 도움을 주는 지, 부족하다면 무엇을 어떻게 명확하게 요구해야 하는 지. 이런 질문에 대한 연구나 아이디어가 없다는 것은 결국 기획자와 개발자들 그리고 회사의 임원들 모두의 문제인 것일세.

일단 이 두 department간의 불화를 없애고 협업을  높이기 위해서는 개발자들이 먼저 intiative를 쥐어야 하네. 즉, 개발자들이 자기들이 필요한 기획산출물을 명확하게 요구할 수 있는 능력이 되어야 하는 것이지.

이를 위해서 testing tool과 pair programming을 활용하면 좋을 것일세. 즉, 개발자와 기획자가 pair programming기법을 통해서 test 주도 개발 방법을 실천한다면 아주 좋은 효과를 거두리라 믿네. 자네도 알다시피 testing tool은 결국 design툴이지 않은가? 개발자가 unit test 와 acceptance test를 구현해 나갈 때 함께 기획자가 옆에서 기획과 디자인의 input을 주게 하는 것이지.

이를 통해서 얻는 장점은 먼저 지금까지의 "기획먼저 개발 그 다음" 이라는 전통적인 waterfall방법을 벗어날 수 있는 것이 하나요 그리고 개발자에게 직접적으로 필요한 Test라는 산출물이 그 두번째 장점이 되는 것이지. 그리고 기획자들도 알아야 할 것은 자기가 기획한 내용의 30%는 나중에 쓰이지 않거나 변한다는 것을 깨닫고 어떻게 하면 변화하는 고객의 요구사항을 만족시키는 iterative한 기획을 할 수 있는 지를 연구해야만 한다는 것이지.

그리고 자네 회사에서 이런 test 주도 개발을 선택한다면 기획자들의 능력이 올라가지 않는다 하더라도 개발자들의 능력과 최종 프로그램의 품질은 그래도 옛날보다는 나아질 것일세. 내가 이런다고 말을 한다고 기획을 무시한다고 오해는 말아주게 난 누구보다 기획의 중요성을 잘 알고 있지. 현재 자네 회사의 mindset 안에서의 기획활동으로는 개발자와 기획자의 협업향상은 커녕 프로젝트 성공여부도 확신하기 힘들다네.

그리고 더욱 중요한 것은 이 테스팅툴들은 모두 open source들인 경우가 태반이고 내가 볼때는 일반 워드 문서 작성보다는 훨씬 재미가 난다네 개발자와 기획자 모두가 좋아할걸세. 그리고 고객과의 communication도 훨씬 명확해지면서 고질적인 막판 요구사항 뒤집기도 줄어들 걸세. 그건 나중에 내가 solution centric 디자인이라는 주제로 한번 얘기하겠네.

그럼 Y가

Wednesday, June 27, 2007 10:57:04 PM (Eastern Standard Time, UTC-05:00) #    Comments [1]  |  Trackback

 

Domain Model Analysis--The Bottleneck of OOP?#

This article is incomplete; it will be constantly in editing mode.

The seasoned developers know that it is not easy to conduct OOP. The process of domain model analysis is non-disciplined; it mainly relies on the intuition or the experience from the past--the pattern language. The OOD is great tool for implementing the 'Solution', not for simulating the real world. The pitfall of the OO developers is that they cry for the classes with that they can initiate their development, but there are no easy way to get them without vigorus up-front efforts to model the static class digaram. This practice is usually expensive. And the bad news is the output from this practice will be very volatile and it requires the high cost to change them later in the development phase. This fear of future change causes even more delay on this domain model analysis.

The reason why OOP becomes hard is because developers think that their class must somehow simulate the real world, and it is neither achievable goal nor worth it. We must shift our mindset from the simualation of reality to the application of the 'Solution'. The 'Solution' is the virtual entity and the ultimate outcome of given programming job. Once whatever the 'Solution' is defined, OO designers put the OOP tool into an action only to implement the 'Solution'. This 'Solution' first approach resembles the very purpose of the Use Case Dicipline; it will show the concrete class objects that is needed immediately. 

This way developers will quickly get any classes that they can use in the very contained scope of functionalities. They are more likely the mechanical piece of the 'Solution', not the conceptual entity of the domain. The changes are minimal and manageable within the limit. But we still need domain entity for the better depiction of our 'Solution'. Can the business entity be so simple, yet adapt to the changes? This question leads us to the next subject--Agile Domain Modeling.


  • Architect is Solution Engineer, not Software Engineer.
  • What is exactly the 'Solution'?

 

Saturday, April 28, 2007 5:14:09 PM (Eastern Standard Time, UTC-05:00) #    Comments [0]  |  Trackback

 

All content © 2009, Young T. Kim
On this page
This site
Calendar
<January 2009>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567
Archives
Sitemap
Blogroll OPML
Disclaimer

Powered by: newtelligence dasBlog 1.9.6264.0

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Send mail to the author(s) E-mail

Theme design by Jelle Druyts


Pick a theme: