회사에서 여러분은 어떻게 프로젝트를 진행하십니까?
전 최근 어떤 조그마한 중소기업에 입사하였습니다. 그전에 무수한(?) 회사들을 거치며 또 나름데로 책과 여러사이트를 다니며 많은 것을 보고 배우며 회사의 업무에 적용하진 못한체 개인적인 프로젝트에 적용해 보았습니다.
아무튼 지금 이 때에는 C++, JAVA와 같은 객체지향적 언어를 바탕으로 여러가지 객체지향적인 개발방법론이 여러책으로 나와있으며 이런 책을 바탕으로 실무에 적용 하는 사례가 이곳저곳 사이트의 여러분들의 글을 통해서 심심치 않게 보입니다.
여기까지가 개요구요. 이제 본론으로 들어가서
처음에 말씀드렸던 것처럼 이제 막 입사해서 소스를 분석하고 또 내가 해야할 일에 대한 업무를 분석했습니다. 약 한달동안 했고 지금 모든것은 C로 짜여져 있습니다.
여기서 너무나 답답함에 부딪혔습니다. 구조체라고 쓰인 부분은 거의 보이지 않으며 한 데몬소스당 전역변수는 수십여게로 파악되고 있습니다. 제가 아는 지식으로 C라 할지언정 구조체등을 통해서 구조화를 갖추며 각각의 구조체등으로 이루어진 식별자를 다루는 인터페이스를 통하여 모듈화를 하는것으로 알고 있는데요.
도무지 이런 근거가 붙어 있는 곳이 단 한군데도 없었습니다. MAIN함수에서 시작하여 계속 함수호출을 하는데 절차적인거도 아니고 함수가 함수를 함수가 함수를 해서...함수 호출의 깊이가 평균 4-5번 정도 됩니다. 어디서 끝나는지 잘 모르겠더군요. 리턴리턴리턴....쫓아가기도 힘들고 거기에 전역변수가 쓰였으니 이게 누가 언제 어디서 건들였는지 구분하기란 정말 쉽지 않습니다.
이런 결과로 전 제 윗사람들에게 이래저래 돌려서 모듈화, 명확한 구조화, 게다가 나도 명확히 모르는 개발방법론(...) 관련 책까지 내밀며 이런 개발프로세스를 적용해야하지 않느냐라며 가녈프게 말하곤 했습니다.
어느날 술자리에서 부서장이 저에게 나서지 말라는 간접적인 경고를 하더군요.
지금 현재 완료된 프로젝트를 조금 수정해서 새로운 솔루션을 개발중입니다. 이번에 그 업무를 맡게 되었는데요. 지금 이 소스를 제가 가지고 다니는 라이브러리를 적용하며 새로운 업무분석을 통해 다시 만들려고 마음 먹고 있습니다. 이 와중에 상관급에선 사람들이 하던거 수정하라고 압력이 들어옵니다. 하지만 전 그 소스로 도무지 엄두가 나질 않습니다. (참고로 프로젝트 자체는 그리 복잡하지 않습니다.)
이제는 그냥 현실에 눌리지 말고 5년차가 되는 이 시점에서는 어떤 명확한 시도를 하고 싶습니다. 참고로 전 5년차이며, UNIX C와 C++을 주로 다루고 UML을 조금 적용할줄 아는 정도입니다. 제위치는 사원이나 다름없습니다. 중소가 그렇듯이...
여러분께서도 이러한 상황에 여러번 부딪혔을 텐데요, 어떻게 하시겠습니까, 도움을 요청합니다.
그 회사 때려치우시고 저희 회사로 오십시요...개발방법론를 체계적으로
그 회사 때려치우시고 저희 회사로 오십시요...
개발방법론를 체계적으로 적용하진 않지만,
귀하와 같은 시돌르 높이사는 회사이며,
실력있는 인재가 많이 부족합니다
[url]http://www.joelonsoftware.com/artic
http://www.joelonsoftware.com/articles/fog0000000332.html
도움이 되는 내용일 것이라 생각됩니다.
Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24
흠..
많은 분들께서 새로운 개발방법론과 프로젝트 관리기법에 있어서 빠트리는 것중에 하나가...그것을 실행에 옮기는데 필요한 가장 핵심 요소인 사람, 즉 개발방법론 현실화를 위한 대인관계론(?)을 생각하지 못하는 것 같습니다.
무조건 '지금 문제가 있으니, 이러이러한 방법을 사용해서 개선하자'라고 한다면 지금까지 그 일을 해왔던 사람들로부터 반발을 사기 충분하지요.
거기에다, 많은 사람들이 급격한 변화는 싫어합니다. 또한 자기가 해왔던 그대로 밀고 가려는 경향도 있구요.
이런 현상은 지극히 자연스러운 것이고, 어디에 가시던지 비슷한 문제를 만나실 수 있을 것입니다. 그걸 도외시하고 새로운 개발 방법론 사용을 주장한다면 수 많은 난관에 부딪히게 될 겁니다. 결국 지치고 포기하고 떠나게 되지요.
안타깝긴 하지만 개발에 있어서 개발 능력 못지 않게 사람도 중요한 변수입니다. 사람을 바꾼다는건 너무 어려운 일이지요.
그렇기 때문에, 그 회사를 떠나시거나 아니면 조금씩 사람들을 이해시키고 설득시키면서 개선해나가시거나 하셔야 할 것 같습니다.
모든 새로운 시도는 사람을 고려하셔야 합니다. 의욕만 가지고 소위 '잠자고있는 사람'들을 깨우려 하는건 좋지 못한 결과만 가져올 뿐입니다.
The difficulty in life is the choice.
전역변수를 무자비하게 썼다...제가 그 코드 보고 있습니다. 열라
전역변수를 무자비하게 썼다...
제가 그 코드 보고 있습니다. 열라 짜증납니다 -_-;
하나 고치면 다른데서 문제터지고 또 고치면 또 다른데 문제 터지고 -_-;
팀원 중에 거래처 드나드는 사람이 그거 때문에 욕 무지 먹었죠 -_-;
얘기했더니 다행히 팀장님이 소스 다시 고치라고 하시더군요.
그회사 데미지 왕창 먹을겁니다. 얘기해보고 안되면 걍 나와버리십시오.
Written By the Black Knight of Destruction
Re: 회사에서 여러분은 어떻게 프로젝트를 진행하십니까?
입사한지 한달 밖에 안되었고, 동조하는 상사도 없는 상황에서 "내 식으로 고친다"라고 (내가 보기엔 정석일지라도 남이 보기엔 네 식이라고 폄하되죠) 시작한 일이 성공할 가능성은 없을 것 같은데요. 준비하고 기다리면 때는 옵니다. 너무 조급히 서둘지 말라는 이야기를 드리고 싶군요.
ps. 써놓고 보니, 이거 토론, 토의해야 하는 것인가요?
----
I paint objects as I think them, not as I see them.
atie's minipage
성급하게 고치려고 하지 마세요...
의외로 그런 프로그램들이 엄청 많습니다.
모든 프로그래머들이 자료구조나 개발 방법론에 정통해있지도
않을 뿐더러 엄청난 시간의 압박속에서 작업을 하는 경우도
허다하죠. 그런 시간의 압박속에서도 하루 하루 결과를 그게
뭘 뜻하는지도 모르는 사람에게 보여줘야 되구요. 어제하고
비교해서 이만큼 달라졌다고...
이렇게 골치아픈 상황에서는 소스코드가 그런 식으로 흐르기
매우 쉽습니다. 누군가 엄청나게 굳은 의지를 가지고 조율하지
않는다면 말이죠.
하지만 그런 소스를 보고 벌컥 화내면서 고치려고 하지 마세요.
그건 (매우 지저분한 코드가 아니라) 그저 좀 이상한 (좀 좋아질
여지가 다분한) 코딩 스타일이라고 보면 될 것 같네요.
코드를 고칠때마다 이런 생각해보세요.
'회사 전체의 코딩 스타일을 나 혼자 안지키려고 한다.'
그걸 수정하게 되면 그 코드는 오직 님만의 코드가 되는거죠.
회사의 누구도 손을 댈 수 없는...
--------------------------------------
재미없는 일은 하지 말자는 인간 쓰레기.
-.-;
저도 비슷한 문제로 스트레스를 엄청 받고 있습니다..웹관련 개발을 하
저도 비슷한 문제로 스트레스를 엄청 받고 있습니다..
웹관련 개발을 하는 곳이라 개념없는 코드나 구조가 좀 많거든요
제가 2년 남짓 다니고 있는데, 제가 좀 과도기적인 때에 입사를 했습니다
저 이전에 개발하신 분들이 아직까지 핵심적인 부분을 많이 담당하고 있구요
저는 운좋게도 기존에 개발되던것과는 다른 부분을 새롭게 맡아서
개발을 할 수 있었습니다..
저 자신도 아직 구조적, 객체지향적 설계에 많이 익숙하지 않은 상태에서
혼자 끙끙거리며 적용하려고 노력하다보니
시간도 많이 지연되고 거기에 따른 스트레스가 정말 만만치 않더군요
그리고 크고작은 오류가 발생했을 때 하던대로 하지 않아서
문제가 생겼다고 말을 하면.. 딱 할 말이 없어지더군요
저 자신은 이게 더 나은 방법이고 장기적으로 회사를 위한거라는
확신이 있지만 막상 문제점이 생기면 '변화된 것'을 탓하는 분위기는
엄청난 스트레스였습니다..
물론 저 개인적인 지적 허영이 0%라고 말하긴 어렵습니다만
가끔 기존의 것을 수정할 일이 있어서 소스를 들여다보면
이런 문제를 이런식으로도 해결할 수 있구나 라는 황당함에
회사를 관둬야 되나 하는 기분이 들어 몇일씩 우울하곤 했습니다 ㅎㅎ
그러다가 저 이후에 젊은 개발자들이 들어오게 됐는데
그 친구들(동갑이라)을 중심으로 조금씩 대화하며 변화를
모색해보고 있습니다. 또 그러다보니 나름대로 회사에 대해서
'버텨볼 수 있겠다'라는 용기도 생기고 그러네요
코너리님이 말씀하신 것처럼 '사람'이 핵심이란 생각이 갈수록 많이 들구요...
소스 파악도 제대로 안된 상태지요?우리나라 현실에서 프로젝트 진행하면
소스 파악도 제대로 안된 상태지요?
우리나라 현실에서 프로젝트 진행하면서 개발방법론 적용하기 말처럼 쉽지 안습니다. 그나마 가던 방향되로 쭉 가면 다행입니다. 이리 갔다가 저리 갔다가 하다보면 얼핏 보기에 소스가 지저분해 보일수 있습니다.
그 소스 작성한 분들이 그걸 몰라서 그러겠습니까?(간혹 모르거나 순수히 성의가 없어서 그러기도 하는 분들이 있긴하지만..)
프로젝트 방향이 이리저리 왔다갔다 하면 엔지니어들은 많이 지칩니다.. 그러다 보면 성의도 없어지는 것이고.. 알게모르게 힘들어 하는데 거기다 개발방법론 얘기해보았자 씨알도 안먹힙니다. 지금은 업부파악 해 두셨다가 나중에 반드시 기회가 오니까 그때 실력 발휘하세요. 괜히 지금 나섰다가 미운털 박히면 피곤해 집니다. 전혀 이로운 점이 없어요..
제가 하는 프로젝트는 C++인데도 전역변수가 굉장히 많아요.. 수천줄되는
제가 하는 프로젝트는 C++인데도 전역변수가 굉장히 많아요.. 수천줄되는 switch case문도 있지요.. 다형성적용으로 줄여본다고 말해도 좋지 않은 반응이여서 걍 따라갔습니다... 어쩔수 없는 환경이죠...
Re: 회사에서 여러분은 어떻게 프로젝트를 진행하십니까?
님들의 말씀에 동의합니다. 저 또한 그런 경험들을 많이 가지고 있습니다. 이 질문을 던진것이 사실은 이보다 더 깊은 이야기를 하고 싶어서입니다. 현재 완료된 프로젝트를 진행하면서 님의 말씀처럼 알게모르게 힘들고 치지는데요. 문제의 요지는 LoKiEx님이 말씀하신 바로 지친다는 것입니다. 제가 업무파악하고 나중에 기회가 올땐 이미 늦은게 아닌가 싶은겁니다. 저 또한 알게모르게 지쳐있을테니까요.
참고로 이 프로젝트를 수행하면서 프로젝트 수행자중 4분이 나가버렸습니다.
그걸 매우려면 저도 답이라고 말할 수 없지만 여러 개발방법론을 꺼내고 있는거거든요. 여기서 또...지치고 힘들어 그만두고 싶지 않아서... 그래서 이것에 관해 이야기 하고자 하고 싶은겁니다.
antibug님의 충고 이해했습니다. 하지만 antibug님께서 개발방법론에 대해 조금이라도 보셨으면 하는 아쉬움이 있습니다. 그것은 나만의 코드가 되지 않을겁니다.
제가 글을 많은 부분에서 빼먹은듯 하는 부분이 보이네요. 과거 경험을 꺼내려 하지 않았기 때문이란 생각도 들구요. 아무튼 제가 이걸 토론에 게시한 이유는 대부분 프로젝트를 진행하며 힘들고 지칩니다. 그런데 그 결과에 만족스러울듯 말듯은 커녕 이 소스 아이에 남에게 보이지 않고 싶을 정도였을 줄로 압니다.
이력서상 화려하게 남는 프로젝트로 입사하여 술먹으며 이야기 꺼내면, "난 그게 어떻게 서비스되는지 내가 만들어 놓고도 한심해, 이해가 안가..." 뭐 이런식입니다. 결국 힘들고 지쳐도 프로젝트에 대한 성취감은 거의 제로에 가까워지고 그러다보면 회사를 떠나게 되는 그런 절차를 수없이 거칩니다. 그래서 전 회사분들을 내가 지치기전에 설득하고자 마음먹었습니다. 또 지금 같이 있는 동료가 나가지 않길 바라면서요. 그 대안이 그런 정직한(?) 개발프로세스를 진행하는거라는 답아닌 대안을 시도하고자 하는겁니다.
이 이야기에 관해 여러분들도 같은 경험을 가졌을꺼라 생각하고 조언 또는 토의를 바라고 싶습니다. 많은 충고 감사합니다.
경험상 몇 가지 충고 드리고 싶은 것은...(1) 절대 권위적,
경험상 몇 가지 충고 드리고 싶은 것은...
(1) 절대 권위적, 강압적으로 접근해선 안된다
여기서 '권위'는 여러가지 형태일 수 있습니다. 나이, 직급, 경력은 물론 다른 유명 소프트웨어 엔지니어나 방법론 등도 포함됩니다. 즉, 이러저러한 유명 방법론에 나오니까 이렇게 해야 한다는 식의 주장은 반감만 키우기 쉽습니다.
(2) 적용 이전에 공감대를 먼저 형성해야 한다
(1)과 연결되는 이야기로 무조건 이러저러한게 좋으니까 해보자는 식이 되어선 안됩니다. 우선 지금 방법의 어떤 부분이 안좋으니 다른 방법을 적용하면 이렇게 좋다라는 공감대 형성이 최우선입니다. 가장 좋은 방법은 먼저 프로젝트 책임자의 동의를 얻어 스터디를 진행하는 것입니다.
(3) 내가 먼저 익숙해야 한다
어떤 방법론이나 설계를 적용하려면 먼저 자신이 해당 기술에 철저하게 익숙해져야 합니다. 특히 일정이 촉박한 프로젝트라면 이는 무엇보다 중요합니다. 아무리 방법론이 좋고 객체지향적 설계가 좋아도 개발자들이 익숙하지 않으면 당장 생산성이 떨어지고 오류가 생기기 마련입니다. 이런 상황이 기간이 빠듯한 프로젝트를 진행하면서 발생한다면 모든 비난은 새로운 방법을 제안한 사람에게 집중될 수밖에 없고 기존 방법을 고수하려는 성향은 더욱 굳어지게 됩니다.
이런 문제를 해결하기 위해선 팀원들이 신개념에 익숙하지 않아서 까먹은 3일을 내가 익숙해서 단축할 수 있는 5일로 벌충할 수 있는 상황이 되지 않고는 성공하기 어렵습니다.
최악의 경우는 나 자신도 정확히 알지 못하거나 개념만 알고 있으면서 실무에 써본적이 없는 기술을 강요하는 것입니다. 이런 경우 십중 팔구 중간에 예상치 못했던 문제에 부딪혀 같이 헤매다 보면 프로젝트 자체가 좌초할 위험마저 있습니다.
(4) 유지보수를 고려해야 한다
물론 좋은 방법론, 프레임워크, 라이브러리를 사용한 프로젝트라면 그렇지 못한 경우보다 유지보수하기 쉬울 것입니다. 하지만 중요한 건 '누가' 그 프로젝트를 유지보수할 것인가 하는 문제입니다. 자칫하면 해당 방법론이나 프레임워크 등에 익숙한 개발자가 없다는 이유로 영원히 해당 프로젝트를 책임지고 떠맡게 되는 불상사가 발생할 수 있습니다.
이런 문제를 피하려면 최소한 문서라도 명확히 남겨 놓아야 어느 정도 책임을 면할 수 있습니다.
----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...
Re: 회사에서 여러분은 어떻게 프로젝트를 진행하십니까?
이렇게 씨스템 자체가 무능력한 곳이라면 저같으면
"이런 구닥다리 같은 환경에서 도저히 일 못하겠습니다" 하고
바로 박차고 나오겠습니다. 회사한번 더럽군요 . . . ㅋ;;
---------------------------------------------------------------
폐인이 되자 (/ㅂ/)
한 번에 한가지씩 효과가 가시적인 것을 적용한다라고 시작을 하십시요.
한 번에 한가지씩 효과가 가시적인 것을 적용한다라고 시작을 하십시요.
예를 들어,
그 동안은 버전관리 없이 코드가 고쳐져 왔다면, cvs에 viewcvs 붙여서 동료나 상사에게 보여주십시요.
프로젝트의 문서관리가 엉망이면, 다이어그램이 포함된 폼나는 보고서를 만들어 상사에게 보여주십시요.
프로젝트의 일정관리가 엉망이면, 개발 중 마일스톤이 생길때는 문서를 가지고 회의를 하자고 건의를 하십시요.
개발은 직급따라 가는 것이 아니라, 주요 의사를 내는 사람의 위주로 진행이 됩니다. 그래서 이사급 사원이라는 말도 있잖습니까?
코드를 효율적으로 재작성하는 것도 중요하지만, 우선은 업무 분석이 선행되어야 합니다. 개선을 하려면 (아니 개혁이겠죠), 확실하게 밑바탕부터 다시 그려야 할때가 많으니, 어설픈 접근은 성사될 수 없습니다. 그점에서 한달은 님에게 짧지 않았나 하는 생각이고요, 어떻게 보면 개인의 선호가 개발 방법론의 도입이라는 나름의 결론으로 도출된 것이 아닌가 하는 생각도 들게 합니다.
----
I paint objects as I think them, not as I see them.
atie's minipage
저도 비슷한 상황을 접했었고 나름대로 노력을 기울여 절반의 성공이라 평가
저도 비슷한 상황을 접했었고 나름대로 노력을 기울여 절반의 성공이라 평가할 만한 결과를 얻어낸 경험이 있습니다. 부족하나마 도움이 될 것 같아 잠깐 끄적거려봅니다. 보안상 기술적인 세부사항은 생략하니 이해바랍니다.
작년 이맘 때쯤 지금의 회사로 이직을 했습니다. 잘나가는 회사라서 상당히 기술적인 면에서 기대를 많이 했었는데 정작 입사해서 보니 기술력이 형편 없었죠. 소스 관리, 코드, 프로젝트 관리 등등 보안을 제외하면 정말 엉망이었습니다. 보안도 엉망까진 아니지만 좋게 봐줄 수는 없는 상황이었구요. 그래서 그런 상황을 바꿔보고 싶었습니다. 그러나 당시 전 팀내에서 거의 막내였던 상황, 발언력이 강할 수 없는 상황이었죠. 하지만, 바꿔보기로 결심했고 차근차근 실행에 옮겼습니다.
우선, 입사 후 처음으로 주어진 업무가 꽤 head-bounded job이라서 한 동안은 깊이 생각하지 못했고 그 업무가 해결된 이후부터 며칠 동안 문제점을 파악하는데 힘을 쏟았습니다. 일단 업무 시간엔 주어진 일을 하면서 업무랑 겹치는 부분에 대해서만 생각하고 업무시간이 끝난 후 야근을 하면서 기존 체제 파악도 할 겸 차근차근 생각을 정리해나갔습니다.
스스로 문제점이 어느 정도 파악이 되고 나서 해야할 일은 자신과 비슷한 눈높이로 문제를 바라볼 수 있는 사람을 만드는 것입니다. 내가 문제라고 인식하는 것을 다른 사람도 문제라고 인식하기 시작해야 바꿔나갈 수 있는 것이죠. 팀 분위기 자체는 변화에 대한 거부감이 상당히 컸지만 다행스럽게도 제 사수는 비록 기술적인 뛰어난 편은 아니었지만 상당히 개방적이면서 일에 대한 열정이 있는 사람이었습니다. 그래서 그 때부터 매일 매일 업무를 하면서 제가 파악한 문제점으로 인한 현상이 드러날 때마다 사수에게 그 문제점을 인식시키려 애썼죠. 사실 사수 역시 팀의 문제를 어느 정도는 인식하고 있었고 그 역시 뭔가 개선하려는 의지가 있었기 때문에 제 이야기에 대해 부분부분 다시 반박하는 경우도 상당히 많았긴 해도 저와 상당한 공감대를 형성할 수 있었습니다.
그런 후 대안을 준비하기 시작했습니다. 제가 세운 대안은 세 가지, 소스 관리 체계화, 프레임워크 도입을 통한 안정적이고 효율적인 개발, 빌드 및 배치 과정 자동화였습니다. 소스 관리는 기존의 방식에 문제가 많았지만 기존 방식조차도 처음 도입할 때 팀원의 저항이 많았기 때문에 다시 바꾸자고 할 경우에 더 큰 저항이 예상되었고 프레임워크 도입은 팀장의 경우는 필요하다고 느끼지만 실제로 기술적으로 소화할 사람이 없는 상태였고 역시 기존의 개발 방식과의 차이로 인한 팀원들의 저항이 예상되었습니다. 빌드 및 배치 과정 역시 방식 변화 자체에 대한 거부감이 워낙 큰 상태라 앞의 두 가지에 비하면 덜하지만 꽤나 저항이 예상되는 부분이었구요. 그러나, 사실 세 가지 모두 적용만 한다면 오히려 기존 방식에 비해 개발자들이 훨씬 편리해질 수 있는 방법이었습니다.
자, 이제 내 편이 생겼고, 대안도 어느 정도 마련되었고, 대안 추진시의 저항에 대한 예상도 해보았습니다. 그렇다면 그 저항에 대한 대책을 세울 차례겠죠? 이 대책은 그 사람이 처한 상황에 따라 달라질 수 있을 것입니다. 기술적으로 인정을 받고 있고 결정관까지 있다면 이런 대책은 필요없겠죠. 하지만 전 막내였기 때문에 제 의견이 무언가의 권위나 신뢰를 얻을 수 있는 상황은 아니었습니다. 그래서, 이것저것 자료들을 많이 끌어모았습니다. 당시 XP의 일부 practice를 도입하자고 했었기 때문에 xp의 적용 사례나 연구자료 등을 얻고 XP를 오랫동안 해왔던 룸메이트의 조언도 구했습니다. 그리고, 적용하려는 신기술들에 대한 자료도 좀 모았죠. 사실 적용하려던 기술들이 나온지 2년도 넘은 것들이라 신기술이라 할 만한 것이 아닌 이미 상당히 널리 퍼진 것들임에도 불구하고 워낙 뒤쳐져 있었기 때문에 이런 과정이 필요하다고 생각했죠. 그리고, 대안들을 추진했을 때의 이득에 관해서도 리스트업을 했습니다.
이제 다음 차례는 결정권을 가진 사람과의 미팅입니다. 마침 이건 팀장님의 주최로 기회가 생겼습니다. 예상 외로 팀장님은 문제에 대한 인식이 어느 정도 있었고 변화 의지도 있어 개선 요구 자체는 쉽게 받아들여졌습니다. 그러나, 그 방법들에 대해 세부적으로는 이것저것 이의를 많이 제기했는데 그 때마다 앞서 준비했던 자료들로 디펜스를 할 수 있었고 경우에 따라서는 약간의 거짓말-_-도 섞었죠. 이를테면, XP라든가, 적용하려던 기술 중 일부는 제가 해보지도 않았던 것들이었음에도 마치 이미 많이 해봤고 익숙한 것처럼 설명을 하고 각 기술들에 대해서도 새로운 것인데 불안하지 않냐는 식의 반론을 할 땐 구체적인 자료를 준비하지 않은 것들에 대해서도 마치 여기 말고는 다 이미 쓰고 있는 것들이라는 식으로 얘기를 했었죠. 효과는 상당했습니다-_-
이제 남은 것은 진행입니다. 우선, 기존에 있는 것은 바꾸지 않기로 했습니다. 일단 돌아가고는 있었고, 검증되지 않은 새로운 체제로 갑자기 바꾸는 것은 바람직하지 않죠. 그래서 새로 진행되는 프로젝트부터 차근차근 해나갔습니다. 제가 내세운 대안 중엔 저도 처음 해보는 부분도 좀 있었지만 다행스럽게도 큰 어려움 없이 진행되었고 첫번째 프로젝트에서도 우여곡절 끝에 무사히 적용이 되었죠. 그리고, 그 이후부터는 팀 내의 모든 프로젝트는 새로운 시스템으로 돌아가기 시작했습니다. 그리고 두번째 프로젝트에는 팀원 중 제 선배가 참여했고 세번째에는 새로 입사한 제 동갑내기가 한 명 참여했는데 이 둘 모두 어느 정도 수준에 올라 있어서 새로운 시스템에 쉽게 적응하고 부족한 점을 다듬는데 많은 도움을 주었습니다. 그래서 연말쯤에 어느 정도 자리를 잡았고 팀원 중 40% 정도가 새로운 시스템을 경험하게 되었고 이 중 한 명을 제외한 나머지는 긍정적인 평가를 내려주었고 몇몇은 아주 좋다는 평가를 해주기도 했죠.
이쯤되면 성공이라 할 법도 한데 굳이 절반의 성공이라 평가하는 이유는 그 이후에 일어난 일들 때문입니다. 그 이후 조직 개편이 이어지면서 다른 개발 조직과 통합이 되었고 이 과정에서 새로운 시스템 역시 개편 및 통합 작업에 들어갔고 저 역시 그 중심에 들어가게 되었는데 이 과정에서 기존에 쌓아왔던 것들을 대부분 상실해버리는 불행한 결과가 있었습니다. 당시 전 새로운 시스템이 기존 체제와 공존하는데에도 많은 노력을 기울였고 나름대로 아주 자연스럽게 마이그레이션이 진행되어갔습니다. 그래서 팀원들의 저항도 줄일 수 있었고 큰 문제를 만들지도 않았었죠. 하지만, 개발 조직 통합과 함께 시스템 개편 작업이 지나치게 강하게 드라이브되면서 기존 것들을 강제적으로 검증해보지도 않은 새로운 체제로 다 갈아엎었고 한 번에 다 적용해나갔습니다. 그러다보니 불완전힌 시스템임에도 너무 많은 곳에 연관되기 시작해서 개선 작업을 해나가기가 어려웠고 그런 과정 중에 새로운 시스템에 대한 신뢰가 많이 무너져버렸습니다. 막았어야했지만 중간에 개인적인 사정과 맞물려 막지 못했고 지금 뒤늦게나마 시스템의 구조적 불합리들을 개선하려 노력하고 있지만 첫 단추를 잘못 꿴 대가를 비싸게 치르고 있죠. 그리고 조직 개편 이전엔 팀원들이 조금씩 변화해가고 있었는데 지금은 그런 움직임들이 오히려 팀 차원에서 차단이 되고 있는 상태기도 하구요. 그래서 원래는 이 회사에 오래 다닐 생각이었지만 이제는 마음을 많이 접었습니다.
이런 일련의 과정들을 거치면서 나름대로 준비한 방법이 때로는 성공하고 때로는 실패하는 것을 보아왔고 그러면서 얻은 것은 많은 것 같습니다. 다시 이런 시도를 하게 된다면 좀더 잘할 수 있을 것도 같고요.
변화의 과정을 요약하면 다음과 같습니다.
문제 인식 -> 문제 분석 및 정리 -> 문제 인식의 공유 -> 대안 마련 -> 대안 추진 시 예상되는 반론에 대한 대책 마련 -> 결정권자와의 미팅 -> 진행 시작 -> 기존 체제는 유지하며 두 체제가 조화되도록 새로운 방법 도입 -> 새로운 방법 도입의 성공 사례가 생기면 점차적으로 확대 적용 -> 안정화되면 기존 체제를 새로운 체제로 대체 -> 성공
여기서 제가 볼 때 가장 중요한 과정은 문제 인식의 공유입니다. 이게 얼마나 잘 되느냐 아니냐가 성공 여부를 가름합니다. 또 주의해야할 점은 기존 체제를 무리하게 바꾸지 말고 조화되는 방법을 찾아가야한다는 것입니다. 그게 아니면 업무량도 기하급수적으로 늘 뿐더러 저항이 거세지죠.
또 하나, 간과하지 말아야할 것은 자신의 조직이 바뀔 수 있는 조직인가를 판단하는 일입니다. 얼마전 들은 XP 강연에서는 change your organization or change your organization이라고 하더군요. 바뀌지 않을 것 같은 조직이라는 확신이 들면 주저 없이 회사를 옮기는 것이 좋으리라 생각됩니다.
p.s. 참고로, 사내 문서 관리는 위키가 짱입니다. 위키가 없었다면..으..끔찍하죠-_- 혼자만의 문서 관리에도 위키가 좋습니다. 그리고 사람이 많으면 많을수록 더욱 좋은 게 위키죠.
언어보다 주석
어떤 언어를 선택하는가 보다는 그 소스에 주석을 달아야 하지 않을까요
방법론만 하고 그 프로그램을 유지 보수할 다음 사람에게 대하 배려가 없다면
그게 더 문제라고 생각합니다.
:shock:
주석보다 제대로 된 코드
주석보다는 제대로 된 코드가 더 필요하죠. 아무리 주석이 많아도 코드가 엉망이면 그걸 유지보수 하는 것은 악몽이 됩니다.
* Don't comment bad code - rewrite it - Kernighan & Plauger
* Q: Do you ever use comments when you write code?
A: Rarely except at the beginning of procedures, and then I only comment on the data structure. I don't comments on the code itself because I feel that properly written code is very self-documented - Gary Kildall
Re: 주석보다 제대로 된 코드
손님이 되어버렸군요. 아뭏든 그래서 좋은 프로그래밍 언어를 사용할 수록 주석의 양을 줄일 수 있습니다. 추상화를 통해서.
http://lisp.or.kr http://lisp.kldp.org - 한국 리습 사용자 모임
뭐하러 고칠라고 하시는지.. 그냥 편하게 있으시는게..전 프로그래머는
뭐하러 고칠라고 하시는지.. 그냥 편하게 있으시는게..
전 프로그래머는 아니지만 그냥 있어도 잘 돌아가면 굳이 손 안댑니다. 손 대라고 사정해도 잘 돌아가니까. 개기는게 비일비제인데...
정신 건강을 위해서 적당히 농땡이 부리면서. 일하시는게.. 어떠할지..ㅋㅋ
제는 프로그램쪽일을 하진 않지만 회사다니는 사람의 입장에서 한 말씀드리면
제는 프로그램쪽일을 하진 않지만 회사다니는 사람의 입장에서 한 말씀드리면....
회사가 전망이 있고 일이 적성에 맞고 지금의
그문제 외엔 다니는데 좋은 회사다 생각이 들면
그냥 계시는게 좋을듯 합니다.
그런 문제점은 지금계신 분들도 알고있을텐데
변화에 확신을 못가져서 현재 방식을 그냥 따를뿐입니다. 지금의 방식에 결코 만족하진 않을겁니다.
근데 지금은 잘 돌아가니까 다른쪽에 신경을 쓰는 겁니다.
또 앞으로 들어오는 분들도 그 문제점은 알아차릴꺼고.
시간을 두고 서서히 변화를 줘야 할겁니다.
회사도 지금의 방식때문에 문제에 부딧치고하면
조금더 변화를 생각할꺼고 또 같이 계신분들 중에도 생각을 같이 하는 분들이 늘어나고 이때를 기다려야
합니다.
근데 문제는 이때를 못 기다리고 다들 그만 두거나
아니면 시간이 흐르면서 변화는 포기하고 지금의 방식에
빠져버리는게 문제입니다.
지금 문제외엔 정말 다좋은 회사다 생각이들면
앞으로 들어오는분들중 님과 같은생각을 하는 분들을 위해 기다려 주세요. 누군가가 위에서 끌어줘야 따라가는사람도 의욕이 생길테니까요. 그리고 변화를 시도해 보세요.
꼭 된다는 보장은 없지만....
근데 그냥 몇년 있다 말 회사거나, 분위기등,,
오래 있을 마음이 없으면 위에분 말씀처럼 그냥
지금의 방식을 따르고 월급받는 만큼의 노동력만
제공하시는게 정신건상에 이로울거란 생각이 드네요.
우리 항시 웃고 살아요 ^^
오래된 글이지만, 다시 토론해 봐도 좋을듯 하여 답글로 글을 올립니다.
오래된 글이지만, 다시 토론해 봐도 좋을듯 하여 답글로 글을 올립니다.
혼자하는 프로젝트는 어떻게 하던 자신의 스타일로 하면 되겠지만,
2인이상이 작업하게 되면 많이 달라질 듯 합니다.
처음부터 너무 큰 단위(?)로 하게 되면 서로 적응하는 것도 어렵다고 생각이 됩니다.
그런경우 작은단위부터 하는것이 어떨까 생각이 됩니다.
그냥 예로, 문서 정리는 각자 위키로 하고, 위키에 적응한다 싶으면,
trac , mantis , eventum 같은 issue tracker 로 bug tracking 같은 것을 하고,
그 다음에 소스관리는 cvs, svn 을 이용해서 하는 등..
작은 단위부터 하나씩 해 나가는 것입니다.
위의 예를 든것만 보더라도 한번에 같이 하게 되면 또 쉽지 않을 것입니다.
하나씩 적응해 가며 차츰차츰 적용하다보면, 나중에는 서로 긴밀하게 연계가 되어 있을 듯 합니다.
사실 잘 모르는 사람들은 위키만 해도 어려워 하는 것 같습니다.
그런상황에서 모든부분을 같이 적용하려 한다면, 중간에 하다가 마는 경우가 많을 듯 합니다.
계획은 팀장이 어디서 배워온 식스시그만지 시그마식스인지로 열심히 짭니다.
계획은 팀장이 어디서 배워온 식스시그만지 시그마식스인지로 열심히 짭니다.
그래놓고... 실행은 그까이꺼 대충 분위기입니다.
그리고 돈 받을 때 되면 역시 또 식스시그마로 그럴듯한 문서 짭니다.
그리고 공무원은 그 문서를 한번 퇴짜놓고. 약간 고치는 척 하고 다시 제출해서 돈 받습니다.
제가 알기로 6시그마는 툴이 아닙니다. 지속적으로 품질 향상과 오류를 줄
제가 알기로 6시그마는 툴이 아닙니다. 지속적으로 품질 향상과 오류를 줄이기 위한 행동지침으로 알고 있습니다.
S/W쪽에서는 이 얘기를 듣는건 처음인것 같군요. 자세한 내용은 6시그마의 전문가분이 설명해 주실겁니다. -_-;;
[quote="Anonymous"]제가 알기로 6시그마는 툴이 아닙니다.
프로그래밍과 관련 없는 물류 직종의 회사에서(이미 예전 이야기이지만) 6시그마를 한때 적용하려고 했었습니다.결과는 성공이었다고 하는데,당시 물류파트였던 저는 그 6시그마 내용이 무엇인지 전달 받은게 하나도 없었습니다. 나중에 알고 보니 거의 대부분 문서로만 때웠다는 이야기를 그 6시그마와 관련된 분을 통해 들었습니다.-_-;
봄들판에서다
[quote="Anonymous"]제가 알기로 6시그마는 툴이 아닙니다.
행동 지침이긴 한데, 관련된 툴들이 많이 있습니다. 통계 툴부터 해서 의사 결정에 관련된 툴들도 있고.. 등등...
그런 툴을 사용했다는 것 같습니다.
그리고 S/W 쪽에서도 꽤 많이 쓰는 걸로 알고 있습니다. 특히 대기업쪽에서는 말이죠. 제가 S/W 분야는 아닙니다만, 대략적으로는 디버깅을 최소화 시킨다거나 하는 식, 그리고 어떻게 하면 그 디버깅을 줄일것이냐(다른 말로 하면 처음부터 어떤 식으로 하면 오류가 없는 코드를 짤 것인가 정도가 되겠지요.) 라는 식을 진행되는 것으로 알고 있습니다.
아마 위에 글 쓰신 분은 그걸 말씀하신 것 같군요.
전문가는 아니어도 5월 중순에 교육 받아서 주워들은 풍월로 좀 적어 봤습니다. 아직은 white belt 라 피라미 수준이지요 뭐.
---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도
즐겁게 놀아보자.