태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Copy & Paste의 종말

2009/07/31 23:53
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

직업상 다른 개발자들이 작성해 놓은 코드를 볼 기회가 정말 많습니다.
그러다보면 자주 접하는 것이 복사된 코드들입니다. 

소소코드 Copy & Paste는 개발자의 대단히 큰 잘못입니다. 즉, 소스코드를 복사해 놓는 것은 쉽지만 그로 인해서 지속적으로 회사와 후배들이 부담을 져야 하기 때문입니다. 즉, 회사의 생산성을 갉아 먹는 행동입니다. 그런 개발자는 해고가 되어야 마땅하지요.

한쪽 제품이나 컴포넌트에서 사용한 함수나 소스코드들을 복사해 와서 다른 제품이나 컴포넌트에서 사용하는 것입니다. 동일하게 그대로 사용하는 경우도 있고, 약간 수정해서 사용하는 경우도 있습니다.

이런 일이 반복되다보면 비슷한 코드들이 회사의 전체 소스코드 중에서 여기 저기 산재하게 됩니다. 그러다가 버그가 발생하는 그중 일부는 고쳐지고, 일부는 여전히 버그를 가지고 있습니다. 또 해당 기능이 변경이 될 때도 이를 모두 찾아서 변경하기란 쉬운 일이 아닙니다. 이쯤 되면 개발은 창의적인 작업이 아닌 점점 노동이 되어 갑니다.

이런 공통적인 소스코드들은 공통모듈을 잘 계획해서 공통적으로 사용할 수 있어야 합니다. 공통모듈은 전사적으로 관리가 되어서 효율적으로 사용할 수 있도록 해야 하며, Copy & Paste의 욕구가 생겨도 시간을 약간 더 들여서 공통모듈화 하는 노력을 들이는 것이 필요합니다.

공통모듈을 관리하려면 당연히 소스코드관리시스템을 잘 사용해야 하고, 각 제품이나 컴포넌트들이 공통모듈들과 더불어 효과적으로 빌드가 가능하도록 빌드 스크립트도 준비가 되어야 합니다.

Peer review, code review가 정착되어서 다른 팀에서 서로 모르고 중복된 작업을 하는 것을 줄여야 합니다.

또, 특정 고객을 위한 커스트마이즈된 제품을 만들 때 대규모 소스코드 복사가 일어나는데, 이를 통제없이 만들고 방치하면 함수 몇개 복사한 것과는 비교도 안되는 큰 비용을 치뤄야 합니다. 물론 상황에 따라서 다르기는 하지만, 이런 경우에는 가능하면 소스코드 브랜치를 줄이고 브랜치를 만들더라도 소스코드관리시스템을 이용하여 잘 관리를 해야 합니다. 그리고 추후 Merge를 통해서 브랜치의 수명 주기를 짧게 가져갈 필요가 있습니다.

여기저기 복사된 쌍둥이 소스코드들... 참 문제가 아닐 수 없습니다.

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
저작자 표시 비영리 변경 금지

'프로젝트 > 구현' 카테고리의 다른 글

Copy & Paste의 종말  (8) 2009/07/31

Ray.전규현 프로젝트/구현 개발자, 구현, 복사, 소스코드

Trackback Address: http://allofsoftware.net/trackback/77 관련글 쓰기
  1. 2009/08/01 14:16
  1. 제가 생각하는 copy&paste의 문제는 이해부족에서 온다고 생각합니다.

    체계적으로, 기존에 다른 사람이 작성한 코드를 분석하지 못했기때문에,
    (이유는 여러가지가 있겠죠? 실력부족, 문서화안됨, 스파게티코드, 시간부족 등)
    기존에 잘 돌던코드는 그대로 두고 플러스 알파만 내가 했다... 뭐 이런거 아닐까요?

    또 비슷한 측면에서,
    자신이 작업하던 코드의 경우에도, 설계가 세밀하게 진행되지 않은 상태에서,
    일단 만들어보면서 얼기설기 작업해나가다 보면,
    적절한 타이밍에 리팩토링 시기를 놓쳐버린 상태가 되는 경우가 있습니다.

    시간비용 + 귀차니즘 때문에, Copy&Paste로 떡칠이 되기 시작하는 거죠.


    마지막으로는 코딩스타일에서 올 수 있겠네요.
    현재 제가 주로 작업하는 분야가 C언어를 사용한 임베디드 분야 (wipi등)쪽 인데,
    판단문과 분기문이 수도 없이 떡칠되기 시작하면서, 소스가 주렁주렁 ㅎㅎㅎ

    state머신이나 적절한(펑션포인터등 사용) 분기체계가 아닌,
    switch-case, if-else 등으로 관성이 붙어버리는 거죠.

    이상태에서 상용으로 소스는 릴리즈나가고 -_-;;;;;
    대형 리팩토링 했다가는(이것도 안습) 되던 소스도 망가지고,
    고객사에서는 최대한 손대지 말고 요거 하나만 고쳐달라고 하죠.

    저희는 견디다 못해서....
    고객사에서 version 2 만들자고 할때, 그쪽 목적은 기능개선, UI개편이었는데,
    저희내부에서 아키텍처 부터 다시 잡아서 첨부터 다시 만들었습니다.

    후우... 그나마 이제는 좀 살만해졌네요.

    며칠전부터, 이 블로그를 처음부터 정주행하고 있는데,
    오늘 정주행 완료하고 나니까, 현실적으로 와 닿는 얘기들이 왜이리 많은지요 ㅠㅠ

    계속 분발해야겠습니다.

    현실적 고민이 뭍어나오는 좋은 글들 감사합니다.

    p.s. 3일에 걸쳐 블로그글을 다 읽고 났더니.. 진작에 신경쓸걸 하는 울컥한 마음에, 댓글이 횡설수설 합니다. 양해부탁드립니다.

  2. 하늘이아빠님 안녕하세요.
    장문의 댓글을 남기셨네요.^^
    결국은 "조삼모사"죠. 그런데, 아침에 4개 먹기를 원하는 개발자나 경영자가 너무 많죠. 아침에 4개 먹으면 저녁때 3개가 아니고 1개 먹기도 어려운 것이 현실입니다. 아침에 3개만 먹으면 저녁에 4개 아니고 7,8개를 먹을 수도 있습니다.

  3. 확실히 와닿네요!! 고객사별로 소스가 따로 노는데 그 소스 통채로 복사해와서 붙여넣고 다른 고객사 나갈 때 커스터마이징한 소스도 그대로 붙어서 나가지요~ 보고 있으면 숨이 꽉꽉 막힙니다~

  4. 두렁청해님 안녕하세요.
    고객사별로 소스가 따로 노는 회사는 어느 순간 성장의 한계에 부딪히게 됩니다. 그 순간이 오면 이미 되돌릴 수 없는 상태가 된 겁니다.

  5. 몇개 부분에서 리팩터링을 해야할 필요성을 느낌에도 불구하고
    계속 일에 치여서 다른 부분을 작성하다 보니 주렁주렁 늘어나는 코드를 보면서 눈물만 머금게 되는군요 ㅠ.ㅠ

    음.. copy&paste문제는 아마도 설계상의 문제가 가장 크지 않을까 생각이 듭니다.
    비슷한 기능이지만 약간의 다른 처리를 요구하는 함수가 발생할 때,
    전용 함수로 만들면 간단하게 해결되는데
    copy&paste하지 않기 위해서 두가지 기능을 하나로 합치다 보면 범용 함수가 되고
    그렇게 되면 상당히 귀찮아 지니 말이죠. 물론 범용 함수가 좋고
    여러개의 함수를 합쳐서 하나로 쓰는 것도 좋지만 대부분의 외각체크 루틴들은 거의 copy&paste 식으로
    비슷비슷하게 쓰여지는데, 이 부분을 명확하게 처리할 방법이 없는거 같더라구요.

    머.. 저의 프로그래밍 실력의 부족이 가장 큰 원인이겠죠 ㅠ.ㅠ

  6. 구차니님 안녕하세요.
    범용함수란 그리 좋은 선택이 아니죠. 함수는 한가지 일만 하면서 간결하게 작성되어야 하죠. 그리고 리팩토링 시기를 놓치면 점점 혼란스러워지죠. 뭐든지 제때에 해야죠.

  7. Blog Icon
    [1002]

    C&P 를 하고 향후에도 계속 C&P 를 하는 것이 과연 '개발자의 잘못' 으로 '해고되어야 마땅한' 일인지는.. 모르겠군요. 개발자 중 C&P 를 좋아서 하는 사람이 있을까요?

    C&P 에 대해 이리저리 생각하면..
    * 어찌 되었건 회사 입장에선 가장 빨리 답을 냈고 (해당 기능에 대해선 가장 빨리 답을 낼 가능성이 높습니다.)

    * C&P 를 한 다음에 부정적 피드백이 바로 날라오는 것도 아닙니다. (CPD 나 simian 같은 것을 회사차원에서 daily test 로 돌리지도 않고) 매일 매일 다음 할 작업으로 로드가 걸린 개발자 입장에선 일종의 시간 벌기가 됩니다. 밑의 돌 빼서 위에 꽂기 같은.

    * C&P 를 하는 당시에는 '이건 잠깐이고 언젠가 다시 리팩토링 할꺼야' 라 생각한 뒤, 실제로 리팩토링을 하지 않거나 하지 못하게 될 상황이 바로 닥치게 될 경우가 많습니다. 예전에 어떤 분 말씀처럼 '지금 당장 정리 하지 않으면 지는거다' 라고 강하게 생각하지 않고선 쉽지 않습니다.

    * 코드리뷰의 경우 리뷰를 1주일 이내 단위로 자주 하는 것이 아닌 이상 C&P 가 고쳐질 것이라고는 생각치 않습니다. 리뷰의 주기가 길 경우, 이미 리뷰 받고 난 뒤엔 돌이킬 수 없게 되는 경우가 많습니다. 리뷰 중 자주 나오는 말 중 하나가 '이번엔 어쩔 수 없으니.. 다음번엔..' 일겁니다. 소 잃고는 외양간 고치려고 해봤자 고칠 맘은 안생깁니다.

  8. 안녕하세요. 질문도 답도 댓글에 다 포함되어 있군요. :)
    개발자 중에는 C&P의 폐해를 모르고 마구 해대는 사람들도 많습니다. 이미 많은 고민을 하고 계시네요.

고객이 요구사항을 너무 자주 바꿔요.

2009/07/30 23:48
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
우리나라 소프트웨어 시장을 너무 비관적으로 과대평가하는 경우를 종종 봅니다.

예를 들면 전세계 유래가 없는 까다로운 고객 요구 수준, 시도 때도 없이 바뀌는 요구사항, 엄청나게 낮은 금액, 제품의 Output과는 상관없이 작업 시간을 통제하는 관행

일부는 공감을 하기도 하지만, 어느 나라를 가던지 각 나라만의 특징이 있다는 측면으로 바라보고 싶습니다. 우리나라 고객은 요구사항을 정말로 외국에 비해서 더 자주 바꾸는 것인지는 생각해 볼 필요가 있습니다. 어딜 가던지 고객은 요구사항을 항상 바꾸기 마련이고, 그것이 고객의 습성이라고 볼 수 있습니다. 그런데, 외국에서는 관행적으로 문화적으로 스펙을 근거로 계약을 하고, 분석 능력이 뛰어난 엔지니어들도 많이 있습니다. 하지만 그런 저변이 상대적으로 부족한 우리는 개발을 하는 쪽이나 고객이나, 일단 대충으로 요구사항으로 개발을 하고 나중에 서로 맞춰나가는 것이 상당 부분 관행화된 측면이 있습니다.

개발회사와 개발자가 요구사항을 분석하고 통제하는데 능력을 갖추고 있다면 100%는 아니지만, 고객의 요구사항 변경을 상당부분 통제 가능한 범위 안으로 가져올 수도 있습니다. 

스스로가 주먹구구 식으로 개발을 하면서 고객에게만 덤터기를 씌우는 것은 스스로에게 이득이 될 것이 없습니다.

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
저작자 표시 비영리 변경 금지

Ray.전규현 프로젝트/요구사항분석 개발자, 변경, 분석, 소프트웨어, 요구사항

Trackback Address: http://allofsoftware.net/trackback/135 관련글 쓰기
  1. 포스팅 잘 읽었습니다. CMMI에서도 요구사항에 대해서 요구사항을 먼저 "개발" 하고 그 다음 레벨이 요구사항 "관리"입니다. 지속적으로 요구사항이 바뀌기 때문이지요. 본문의 내용과 비슷한 맥락이라 허접 답변 남기고 갑니다. ^^

  2. hoya님 안녕하세요.
    CMMI도 결국 소프트웨어를 잘 개발하기 위한 것이 목적이므로 근본 원리는 같습니다.

  3. 어쩌면 가장 중요한 차이점은,
    요구사항이 변경되고 나서 재계산되는 시간, 비용의 차이가 아닐까 생각이 됩니다.
    한국에서는 변경되도 마감일이나 비용이 변하지 않으니 말이죠..

  4. 구차니님 안녕하세요.
    요구사항이 변경되면 그에 따른 영향평가가 따라야 하고, 계약이 변경되어야 하는데, 우리나라에서는 스펙따로 계약 따로이기 때문에 요구사항이 2배로 늘어도 계약은 변하지 않는 문제가 있죠.

변화하지 못하는 회사들의 공통점

2009/07/28 22:17
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
회사가 변화하지 못한다는 것은 더 이상 발전이 없고 점점 쇠퇴해 간다는 것을 의미합니다.
변화하지 못하는 회사들은 항상 핑계를 대기 마련입니다. 어떠한 종류의 핑계들을 대며 변화하지 못하고 정체되어 있는 회사들의 공통점을 얘기해보죠.

첫째, 항상 바쁩니다.
주먹구구식으로 일을 하면서 항상 바쁘고, 또 바빠서 변화를 받아들일 수 없다고 합니다. 물론 핑계죠. 지금과 같이 일을 하면 계속 더 바빠지고 뒤죽박죽이 될 것이므로 혁신을 해나가야 하는데, 이를 핑계로 개발자들이 경영자에게 겁을 주면 대부분 잘 넘어갑니다.

둘째, 자기 회사는 매우 독특한 줄로 착각합니다.
1명짜리 소프트웨어 회사나 1,000명짜리 소프트웨어 회사나 소프트웨어를 개발하는 원리는 별반 다르지 않습니다. 그런데, 우리는 금융이라서 안전성이 매우 주요해서 프로세스는 도입할 수 없다. 우리는 포탈이라서 신속히 개발을 해야 하므로 문서를 쓸 시간이 없다. 우리는 게임을 만들기 때문에 일반적인 개발 방법은 통하지 않는다. 이와 같은 온갖 핑계를 댑니다. 물론 기존의 방법이 익숙하고 변화는 귀찮은 일이지만 변화하지 않고는 살아남기 어렵죠.

셋째, 경영자가 회사가 어떻게 돌아가는지 잘 모릅니다.
물론 경영자자 소프트웨어 개발에 대해서 개발자만큼 속속들이 잘 알 수는 없습니다. 그래서 CTO를 두는 것이고 CTO가 없다면 경영자가 소프트웨어 개발이 어떻게 이루어지는지 전체를 보는 눈이 있어야 합니다. 그렇지 않은 경영자들은 개발자에게 속아넘어가기 십상입니다. 우리나라에서는 CTO를 제대로 두고 있는 회사가 별로 없는 것이 안타깝습니다. 설령 CTO가 있다고 하더라도 그 역할과 파워가 많이 축소되어 있는 경우가 많습니다.

넷째, 회사에 파벌과 정치가 난무합니다.
회사의 변화는 Global 경쟁력을 갖춰나가고 효율성을 높이기 위한 방향으로 진행이 되어야 하지만, 정치가 난무하는 회사는 각 파벌들의 이익에 따라 회사가 좌지우지 됩니다. 이러한 회사에서 살아남는 방법은 승자에 편승하거나 떠나야죠. 정치판에 오래 몸을 담그면 자신도 물들어서 빨리 떠나는 것이 좋습니다.

다섯째, 개발자들이 우물 안에 개구리입니다.
개발자들이 자신의 실력을 과대포장하여 경영자들을 현혹하고 자신의 기술이 최고인양 착각하는 것입니다. 이러한 개발자들이 포진해 있는 회사는 아주 왜곡된 결과물들을 낳으며 금방 밑천이 드러나게 됩니다. 이러한 개발자일수록 자신의 기득권을 지키기 위해서 경영자를 쉽게 속이려고 합니다.

이 외에도 과거에 잘못된 방향으로의 변화 시도에 대한 아픈 기억들을 가지고 있어서 변화에 두려움을 갖고 있는 회사들도 있고, 방법을 몰라서 고민하는 회사도 있고, 재정적으로 충분한 여유가 없어서 가만히 있는 회사들도 있습니다. 하지만 어떻게든 변화하지 않으면 점점 후퇴한다는 것을 알아야 합니다.

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
저작자 표시 비영리 변경 금지

Ray.전규현 소프트웨어이야기 개구리, 변화, 혁신

Trackback Address: http://allofsoftware.net/trackback/134 관련글 쓰기
  1. 포스트 하나하나 피가 되고 살이 되는 규현님의 포스트들.
    오늘도 잘 봤어요. ㅎㅅㅎ

  2. 하나님 반갑습니다.
    제 블로그에 관심을 가져줘서 감사합니다. 앞으로도 좋은 글 올리도록 노력하겠습니다. 하나님 블로그는 구독해서 보고 있습니다. ^^

  3. 저도 드디오 제 블로그를 꾸준히 구독해주시는 분이 생겼네요. 감사합니다.

  4. 댓글을 남겨주셔서 어떤 분인가 궁금해서 들어가봤습니다. :)

  5. 다섯번째 너무 공감가네요 ㅎㅎ

  6. 두렁청해님은 개발자이신가봐요. ^^ 그렇게 느끼신다면 이미 우물에서 나와 계실 것 같군요. :)

  7. 단순한 지망생일뿐입니다~-ㅁ-

  8. 물론 조직원들의 변화에 대한 의지가 중요하겠습니다만. 왠지 모든 화살이 개발자 한테 꽂히는것 같네요. 뜨끔!

  9. 안녕하세요. 김민석님
    개발자의 책임은 5번 한개 정도 같군요. 나머지는 회사 경영자나 전체를 두고 한 얘기입니다. ^^ 사실이 그렇구요.

  10. 점점 배울수록 작아지는 자신의 모습에 우울증에 빠지지 않는것도 중요 한것 같습니다.
    어떻게 배우면 배울수록 더 배워야 하는게 늘어나는지 참으로 미스테리입니다 ㅠ.ㅠ

  11. 구차니님... 그것이 세상의 이치 아닐까요? ^^

변화하는 회사들의 공통점

2009/07/26 13:33
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
여러 소프트웨어 회사들을 컨설팅 하다 보니 빠르게 변화해서 성공적으로 변신하는 회사가 있는가 하면 조그만 변화도 어렵게 어렵게 시도를 하면서 아주 더디게 변화하는 회사들도 있습니다.

A회사는 단 2개월 만에 목표한 바를 150% 달성하기도 하고
B회사는 1년 동안 처음에 계획하고 기대한 목표치의 50%밖에 달성하지 못하기도 합니다.

 물론 회사에 있어서 변화는 어렵습니다. 기존의 습관을 버리는 것도 어렵고, 기존의 방법이 잘못되었다는 것을 알아차리기도 어렵습니다. 설령 안다고 하더라도 기존의 방법을 구축해 놓은 사람들이 변화를 가로막고 심지어는 기득권을 지키려고 방해를 하기도 합니다. 또 변화 후에 더 좋아진다는 확신을 얻기가 어렵기 때문에 변화 자체는 항상 불안한 것입니다.

하지만 변화하지 않으면 더 이상의 발전이 없기 때문에 점점 경쟁력을 잃어서 결국은 끝나게 됩니다. 그래서 회사에 있어서 변화는 필수적입니다.

그럼 변화하는 회사들은 어떤 특징이 있는지 알아보겠습니다.

첫째, 경영자의 식견이 가장 중요합니다.
경영자가 변화의 필요성을 인식하고 변화의 올바른 방향을 파악할 수 있는 능력이 있어야 합니다. 경영자가 소프트웨어 기술을 자세히 알지 못해도 무엇이 필요한지 캐치해 낼 수 있는 능력은 있어야 합니다. 

둘째, 경영자의 의지가 중요합니다.
모든 변화는 반대와 방해에 부딪히게 됩니다. 그 방해는 그럴싸한 포장으로 둔갑해 있기 때문에 경영자의 의지가 강하지 않으면 쉽게 좌절하게 됩니다.

마지막으로 직원들의 Open mind입니다.
변화는 항상 힘들지만 올바른 변화는 회사의 경쟁력도 높여주지만 직원들의 가치도 올려줍니다. 그런데, 변화의 과정이 귀찮고 어렵다고 또 현재의 기득권을 잃게 될 것 같다고 변화를 거부하면 평생 그 자리에 머물러 있게 될 것 입니다. 

결국 변화는 경영자에게 달려 있다고 말하는 것 같은데 많은 부분 경영자에 달려 있는 것 맞습니다. 따라서 깨어 있는 직원들은 스스로 변화를 모색하기 보다는 경영자를 설득하여 경영층의 후원도 받아내야 변화에 성공할 수 있습니다. 

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다. 
저작자 표시 비영리 변경 금지

Ray.전규현 소프트웨어이야기 변화

Trackback Address: http://allofsoftware.net/trackback/133 관련글 쓰기
  1. 포스팅 잘 읽었습니다. 뭐 개인적인 잡담수준입니다만, 약간의 운도 따라야 하겠죠..? ^^;

  2. 안녕하세요. Hoya님
    회사를 하면서 가장 중요한 것 중의 하나가 "운"이라고 생각합니다. :)
    하지만 "운"만 가지고는 정말 성공하기 어렵고, "운" + "실력"이 필요하겠죠. 그래야 조금이라도 성공할 확률이 높아지죠.
    "운"가지고 처음에 반짝 했다가 2round에서 망하는 회사 많이 봤죠.

오늘의 잡담 - 개발자와 영어

2009/07/20 18:42
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
이 소프트웨어라는 것이 미국에서 처음 만들어지다 보니 엄청나게 많은 자료들이 영어로 되어 있고, 대부분의 커뮤니케이션의 영어로 진행되고 영어가 마치 소프트웨어 업계에서는 표준어가 된 듯합니다.

나 자신도 영어를 지독히 싫어했고, 최근 2,3년간 영어 공부에 열을 올리고 있지만, 제가 처음 소프트웨어를 시작할 때부터 영어를 잘했다면은 지금 내 모습이 달라졌을 것을 생각합니다.

대부분의 프로그래밍 언어가 영어 기반이고, 메뉴얼 원본은 다 영어인데, 영어로 된 원서를 읽으려면 번역서보다 10배이상 속도도 느리고 이해가 잘 안되니 항상 번역서만 찾아 다녔었던 기억이 납니다.

이제와서 뛰어난 개발자가 되려면 영어도 잘해야 한다고 말하기도 쑥스럽지만, 영어를 유창하게 하지 못하는 개발자는 이미 기회를 반쯤 버리고 경쟁하는 것과 같다고 생각합니다.

일단 소프트웨어 업계로 들어서면 너무 바빠지는 것이 일반적이라서 개발자가 왠만해서는 영어 공부를 하기 쉽지 않습니다. 학교 다닐 때 미리미리 영어 공부 유창하게 될 때까지 하고 오세요.

이미 개발자로 일하고 있고, 영어가 부족하다면 음... 알아서 꾸준히 공부하세요.

참고로 제 개인 블로그(http://raymond.pe.kr)에서는 영어 공부에 대한 주제로도 글을 꾸준히 올리고 있습니다. 혹시 영어 공부에 관심이 있으시다면 미미하나마 도움이 되면 좋겠네요.

"영어는 가까이하기엔 너무 먼 당신이다" - 매우 다가갔다고 생각하면 어느덧 또 멀어져 있는.......

이미지출처 : Microsoft Office Online

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다. 


저작자 표시 비영리 변경 금지

Ray.전규현 소프트웨어이야기 개발자, 영어

Trackback Address: http://allofsoftware.net/trackback/132 관련글 쓰기
  1. 2009/07/21 00:49
    개발자, 영어 그리고 프로의식 Tracked from The Art of Software Development
  1. 저하고 비슷한 생각을 하고 계신것 같아 예전에 적었던 글에 트랙백합니다.

  2. 안녕하세요. Jake님

    Trackback 걸어둔 글은 잘 읽었습니다. 저와 생각이 비슷하신구요 ;)

  3. 전 아직 중1이니까 시간은 충분한데 영어랑 좀 많이 친해져야 겠네요. ㅎㅅㅎ

  4. 안녕하세요. 하나님
    영어공부 열심히 하세요. ^^

  5. 그래서 그런건지 네이버에서 코딩하면서 답을 찾고 있는 사람은 싫어하죠.

  6. whitekid님 안녕하세요.
    Naver에서 가끔 코딩 관련 질문을 보면 프로그래밍의 기본도 모르고 어떻게 이런 것 물어보고 개발을 할 수 있나 생각할 때가 많습니다. 하지만 그런 사람도 많아야 잘하는 사람들이 더 차별되겠죠?

  7. 수업시간에 프리젠테이션으로 교수님이 이야기 하시는 객체지향 한학기 지나도록 이해를 못했는데 군대가서 원서를 정독하니 이해를 하겠더라구요 -ㅁ-

    아직은 IT쪽에 대한 포스팅의 질이 낮은 편이라.. 아무래도 영어자료를 찾게되고, 번역내용들 역시 검증되지 않고 오역이 너무 많아서 그냥 원서로 보게 되더라구요.. 후우..

  8. 안녕하세요. 구차니님
    소프트웨어 관련 번역서들은 수준이 정말 낮은 것들이 많습니다. 대부분은 원서와 비교를 해보면 그 뜻이 다른 것들이 많습니다. 영어만 잘한다면야 원서를 읽는 것이 훨씬 좋죠.

  9. Blog Icon

    비밀댓글 입니다

  10. 영어의 필요성은 굳이 영어로 된 자료를 읽는데만 필요한 건 아니더군요.
    해외업체랑 일을 하게 되면 결국은 공통어가 필요하고 이 공통어는 십중팔구영어가 되는 것 같습니다.

    회의도 영어로 해야하고, 그날의 회의결과도 곧바로 정리해서 MOM 싸인받아야 하고, 이메일로 의사소통도 해야 하고, 영어 PT도 해야 하고...

    그나마 상대방 클라이언트가 영어 네이티브면 어떻게든 말을 알아들어 줄텐데, 양쪽 모두 네이티브가 아닌 경우에는 좀 난감할 겁니다. 특히 본인도 영어를 못하고 상대방 담당자도 버벅이게 되면... 이건 재앙의 수준이라고 할지.. ㅎㅎ

    오랫만에 들러서 글 읽고갑니다. :)

  11. 우울한딱따구리님 오랫만입니다.
    영어 Free talking까지 능숙하게 되면 좋죠. 외국 개발자와 같이 개발하는 경우가 꽤 있나보네요. 영어 공부 많이 하셔야 하겠습니다. ^^

이 소스코드는 나 밖에 못 건드려!

2009/07/19 11:01
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

"우리 팀은 각자 맡고 있는 소스코드가 달라서 서로 충돌 일이 전혀 없어요"

" 소스코드를 수정해야 하면 나한테 얘기해, 내가 고쳐 줄게"

"내가 지금 고치고 있으니 너도 고치려면 내가 끝낼 때까지 기다려"

"지금 이거 한창 고치고 있으니 중간에 다른 것은 끼어들 없어요. 이거 끝날 때까지 기다려주세요."

 

이와 같은 현상이 친숙하나요? 그럼 Parallel Development(병행개발)와는 거리가 멉니다.

개발을 이런 식으로 순차적으로 기다렸다가 해야 한다거나 다른 사람이 소스코드를 고치고 있지 않은지 걱정을 하고 있거나 이것 때문에 소스코드를 고칠 항상 Lock 걸어야 한다면 이만 저만 불편한 것이 아닙니다. 개발 속도도 떨어지게 됩니다.

 

아키텍처적인 이슈를 제외하고는 개발자들은 서로 같은 소스코드를 얼마든지 동시에 수정할 있고, 소스코드가 충돌이 일어나더라도 얼마든지 쉽게 해결할 있어야 합니다. 또한 동일한 소스코드를 기반으로 길고 짧은 프로젝트를 동시에 진행하면서 나중에서 손쉽게 Merge 있어야 합니다. 이런 식으로 개발을 하지 않으면 대형 프로젝트는 너무 오래 걸릴 밖에 없습니다.

 

또한 때문에 개발자들이 Component Owner식으로 자신만 소스코드를 다룰 있다면 개발자들간에 소스코드 공유가 취약해지며 서로 단절된 개발을 하기 십상이 됩니다.

 

하지만 이런 Component Owner방식에 익숙한 환경에서는 이것이 너무 당연하게 생각이 되므로 이것을 바꾸려는 생각을 하기란 쉽지가 않습니다. 지금이 방식이 익숙하고 문제가 없어 보이고 이런 환경에서 발생한 문제들을 온갖 편법으로 피해 왔기 때문에 바꾸기가 쉽지 않습니다. 하지만 이로 인해 발생하는 문제들은 무시할 없습니다.

 

Parallel Development 제대로 수행하려면 소스코드관리시스템을 단순히 소스코드 저장소 용도로 사용해서는 부족합니다. 소스코드관리시스템을 제대로 사용하기 위한 프로세스와 규칙이 필요하며 Branch Tag, Merge 용도에 맞게 능숙하게 사용할 있어야 합니다.


이미지출처 : Microsoft Office Online

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다. 

저작자 표시 비영리 변경 금지

Ray.전규현 기반시스템/소스코드관리 소스코드관리

Trackback Address: http://allofsoftware.net/trackback/131 관련글 쓰기
  1. Blog Icon
    mv

    지금 회사에서 svn을 쓰고 있습니다. 그냥 깔아서 쓰고 있죠. 문서공유와 프로젝트 소스코드를 관리하기 위함입니다.하지만 svn담당자는 branch가 뭔지,tag가 뭔지, merge기능이 뭔지 모르더군요. 그냥 계정주고 인스톨만 하면 끝인줄 압니다. 안타깝죠~.그렇게 깔아놓고 후배들에게 무언가를 가르칩니다. 안타깝죠.~

  2. 안녕하세요. SVN을 그렇게 사용한다면 SVN이 주는 혜택의 5%정도밖에 못보는 거죠. "소스코드관리시스템을 사용하고 있습니까?"라는 질문에 "Yes"라고 답하기 곤란한 경우죠.

  3. Blog Icon

    비밀댓글 입니다

  4. 결론은 버전 컨트롤 인가요 ㅋ
    아직 태그만 사용해봤지 브랜치는 사용해 보질 않아서 ㅠ.ㅠ 한 10% 기능밖에 못쓰는거 같아요

  5. 안녕하세요. 구차니님
    결론이 버전컨트롤이라기보다는 이것은 소프트웨어를 개발하는데 있어서 아주 기초가 되는 사항이기 때문에 결론보다는 시작이라고 해야 적당한 것 같습니다. 단순히 소스코드를 공유하고 백업 받는 기능을 익히는데는 5분이면 족하지만, 그 외에 중급/고급 기능은 제대로 익히는데 몇년이 걸리기도 합니다.

  6. 그래서 우리 팀엔 규칙이 있죠.. 먼저 커밋한 사람이 이기는거다.. ^^;

  7. 안녕하세요. whitekid님
    불변의법칙이죠. 먼저 커밋하는 사람이 장땡이죠. ^^
    거대한 프로젝트에서는 나중에 커밋하는 사람이 Merge하는데 며칠이 걸리기도 합니다. 아무리 툴의 지원을 받아도 그런 경우도 있죠.

  8. ㅋㅋ 가장 먼저 커밋 하는 사람이 장떙? ㅋㅋ

  9. ASH84님 안녕하세요.
    왠만한 규모의 프로젝트에서는 Merge를 잘 이용하며 손쉽게 공동작업이 짧은 시간에 이루어집니다.

  10. 저희는 ClearCase를 쓰고 있는데...
    "소스코드관리시스템을 이용하고 계십니까?" 라는 질문에 "No"라고 해야 할듯 싶네요..에공~

모짜르트와 두 제자

2009/07/16 23:37
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

모짜르트가 두 명의 제자에게 피아노 레슨을 한적이 있답니다.

한 명은 이제 막 피아노를 시작한 완전 초자이고
또 한 명은 이미 연주를 능숙하게 할 줄 아는 사람이었다고 합니다.

모짜르트는 누구에게서 더 많은 레슨비를 받았을까요?

바로 두 번째 사람이었습니다.
첫 번째 사람은 완전 초자이므로 모짜르트가 시키는 대로 그대로 따라와줘서 진도도 잘 나가고 강습에 문제가 없는 반면 두 번째 사람은 자기스타일을 고집하기도 하고 오랫동안 몸에 익은 습관을 버리기가 어려워서 먼저 그 습관을 다 없애고 다시 배워야 하기 때문에 배우는 시간도 몇 배 더 오래 걸리고, 가르치기도 더 어려웠다고 합니다. 그래서 레슨비를 더 많이 받아야 했습니다.

소프트웨어 컨설팅을 할 때도 아무것도 없는 회사는 맨땅에게 건물을 짓는 것과 같아서 상당히 빨리 성과를 낼 수 있습니다. 하지만 어설프게 프로세스와 시스템을 이것 저것 많이 만들어 놓은 회사들은 비효율적인 것들을 모두 부수고 다시 만들어야 하기 때문에 시간이 더 오래 걸리고, 기존에 그렇게 만들어 놓은 사람들의 반대와 방해에 부딪혀서 어려움에 봉착하는 일이 많습니다.

잘못된 길로 들어 선 회사들은 빨리 다시 되돌아 와야 합니다. 

되돌아 오기에는 너무 먼 길로 간 경우도 종종 있습니다. 이런 경우는 어쩔 수 없습니다. 환자에게 너무 큰 칼을 대면 죽을 수도 있으니까요. 비효율적이지만 익숙한 방법으로 계속 해나가는 수밖에는 없습니다. 그러면서 서서히 조금씩 바꾸는 것이 사망하지 않고 바꿀 수 있는 방법입니다.

성급하게 이것 저것 마구 시도해서 나쁜 습관만 잔뜩 들지 말고, 차근차근 제대로 갖춰 나갑시다.

이미지출처 : Microsoft Office Online

저작자 표시 비영리 변경 금지

'소프트웨어이야기' 카테고리의 다른 글

변화하는 회사들의 공통점  (2) 2009/07/26
오늘의 잡담 - 개발자와 영어  (11) 2009/07/20
모짜르트와 두 제자  (4) 2009/07/16
레퍼런스 있어요?  (10) 2009/07/15
개발자는 코딩만 해야 한다.  (14) 2009/07/09
살아남은 개발자들  (3) 2009/07/03

Ray.전규현 소프트웨어이야기 모짜르트, 컨설팅, 피아노

Trackback Address: http://allofsoftware.net/trackback/130 관련글 쓰기
  1. 좋은 말씀입니다. 문제는 잘못된 길로 들어섰다는 것을 깨우치는 회사가 드물더군요... 깨우치게 하는 것이 가장 큰 장벽인것 같습니다.

  2. Jake님 오랫만입니다.
    스스로 꺠우치기는 어떻게 보면 불가능하죠. 그래서 책을 통해서 공부를 하거나, 경험자들의 도움을 받거나 하죠. 그래도 Open mind라면 잘못된 길로 들어 섰어도 고치기가 쉽습니다.

  3. 자가진단 만큼 어려운것도 없죠 ^^;

  4. 구차니님 안녕하세요.
    거의 불가능하죠. 다른 사람들이 진단을 해주는 것이 더 낫죠.

레퍼런스 있어요?

2009/07/15 23:18
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
컨설팅을 하다보면 종종 듣는 질문이 레퍼런스 있냐는 말입니다.

또 이걸 시행하면 시행전보다 몇%의 생산성의 향상을 가져오는지 수치로 알려달라고 하는 사람들도 있습니다.

히딩크가 한국에서 와서 기초 체력훈련에 집중할 때 반대 했던 많은 사람들처럼 소프트웨어를 개발하기에는 너무나 기초가 취약한 수많은 기업에서 아주 기초적인 것들을 도입할 때도 종종 이런 말을 듣게 됩니다. 

레퍼런스는 Global 소프트웨어 회사 전부이고, 생산성 향상을 논할 수 없을 만큼 기초적인 것이다라고 말을 해야 하지만, 그렇게 얘기를 하면 기분이 나쁠 수 있으므로 애둘러서 말해야 합니다.

아직도 국내 소프트웨어 개발 환경 및 역량 수준이 Global 수준과 너무나 큰 차이가 나는 것이 현실입니다. 레퍼런스를 따질 때가 아니고 기초부터 다시 다져야 합니다.

정부에서는 Global 수준의 소프트웨어 개발 방법을 배우기 위해서 외국인들을 활용하려고 하는 정책들이 나오고 있는데, 또, 헛돈을 쓰는 시행착오로 끝날 것이 불 보듯 뻔합니다. 국내 현실을 전혀 모르는 외국인들이 과연 국내 소프트웨어 회사들을 어떻게 바꿀 수 있을지 그림이 안 나옵니다. 영어도 잘 안 통하는 한국에서 또 뜬구름 잡는 소리만 하고 비싼 세금으로 만든 비용을 받아 가겠죠. 

결과를 지켜봐야겠습니다.

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다. 
저작자 표시 비영리 변경 금지

'소프트웨어이야기' 카테고리의 다른 글

오늘의 잡담 - 개발자와 영어  (11) 2009/07/20
모짜르트와 두 제자  (4) 2009/07/16
레퍼런스 있어요?  (10) 2009/07/15
개발자는 코딩만 해야 한다.  (14) 2009/07/09
살아남은 개발자들  (3) 2009/07/03
도대체 얼마나 자세히 적어 달라고?!  (4) 2009/06/29

Ray.전규현 소프트웨어이야기 레퍼런스, 소프트웨어개발, 컨설팅

Trackback Address: http://allofsoftware.net/trackback/129 관련글 쓰기
  1. 솔찍히 기초만 다지라고 해서 될일은 아니라고 생각이 됩니다.
    교육기반 자체가 암기식이고 왜? 라는물음을 배제한 채 다 커버린 교육의 결정체인 개발자에게 초심으로 돌아가라는건 개인에게만 너무 책임을 전가하는 행위라고 보여집니다.
    물론, 살아남기 위해서라도 스스로가 기반을 다져야 하는 것은 옳지만 말이죠.

  2. 안녕하세요. 구차니님
    기초라는 것이 개발자가 혼자서 어떻게 해 볼 수 있는 것이 아니고, 회사의 조직, 프로세스, 관리방식, 시스템등을 말하는 것입니다. 그런 것 없이 개발자들보고 알아서 잘 해보라는 것은 무리죠. 제대로된 환경에서 개발을 해야 개발자들이 또 역량이 올라고요. 지금은 너무 당양한 것들을 안하면서 뭔가 근사한 것만 찾는 회사가 많아서 문제입니다.

  3. 저도 컨설팅일을 하고 있지만 레퍼런스라는 것은 중요한게 맞는것 같습니다.
    특히 같은 업종이나 같은 나라의 레퍼런스라는 것은
    이미 경험을 해봤고, 문제가 무엇임을 알고 있기 때문에, 좀더 프로젝을 제대로 돌아가기 때문에 레퍼런스가 중요한 것 같습니다. 그리고 C레벨 경영자가 ROI를 따지는 것은 당연한 일이구요. 돈받고 무언가를 팔려면 그만한 가치를 하고 증명을 하는게 당연한 일이겠지요.
    국내 소프트웨어 수준에 대해서는 외국 컨설턴트와 많이 일을 해봤지만 구현 기술에 있어서는 어느 나라 못지 않습니다. 프로세스 부분에 특히 관리 부분에서는 문제가 많지만 국내 고객 요건이 해외에 비해서 훨씬 까다롭고 더 높은 수준의 요구사항이 많기 때문에 국내 환경이 꼭 나쁘다 수준이 낮다고는 할 수 는 없을것 같습니다.

  4. 조대협님 안녕하세요. 반갑습니다.
    조대협님의 블로그는 즐겨보고 있습니다.

    레퍼런스란 참 중요하죠. 그런데 제가 하는 컨설팅은 레퍼런스를 찾기가 참 어려운 분야입니다. 국내에서는 제대로 하고 있는 회사를 찾기가 어렵고, 외국에서는 당연한 것들이니까요. 새로운 솔루션을 제안하는 것이면 쉬울텐데, 소프트웨어 개발 문화를 향상하고, 개발프로세스를 정비하고, 스펙을 쓰고, 소스코드를 관리하고 하는 것들은 워낙 기초이고 당연한 것들이어서, 꼭필요하다는 것을 증명하기가 짜증나는 경우입니다. 그럼에도 왜 그렇게 해야 하는지 증명하기를 요구하는 경우도 있습니다. 그리고 이런 부분까지 너무 ROI를 따지는 경영자들은 대부분 소프트웨어 개발자체를 너무 이해하고 있지 않기 때문에 성과를 내기도 어렵고 왠만하면 일하고 싶은 생각이 없죠.

    또 지적한바와 같이 국내 소프트웨어 회사들의 구현 기술이 뛰어난 것은 동의합니다. 그런데, 이를 뒷바침하여 글로벌 경쟁력 있는 소프트웨어를 만들어내고 유지할 수 있는 프로세스, 시스템, 조직등이 저변이 취약하여 일정 수준 이상을 뛰어넘지 못하고 있는 것을 보면 안타까죠.

  5. 컨설턴트이던 개발회사이든 레퍼런스는 클라이언트가 안심하고 일을 맞길 수 있느냐 없느냐를 결정하는데 중요한 사항 중 하나라고 생각합니다.

    예를 들어 개발회사 A가 국내 최대 이통사에 솔루션 K를 납품하고 운영한 경험이 있다고 하더라도 이건 가입자 2천만명을 처리한 경험이 있다라는 이야기밖에 되지 않죠.
    이런경우 가입자 6천5백만명을 갖고 있는 해외 모 이통사에서는 해당 업체 A에 뭔가를 맞기기에 불안할 수밖에 없을겁니다. 수치상으로도 3배가 넘는 트래픽을 감당해야 하니...

    그래서 많은 회사들이 양질의 레퍼런스를 늘릴 기회가 된다면 적자를 감수하고서라도 프로젝틀를 진행하려고 하는게 아닐지요.

    글 잘 읽고 갑니다. :)

  6. 안녕하세요. 우울한딱따구리님

    당연한 말씀입니다. 그렇게 중요한 시스템을 도입한다고 한다면 레퍼런스가 아주 중요하죠. 그런데 저희 컨설팅 분야는 그렇게 수치적으로 뭔가 보여주기가 어려운 측면이 있습니다. 소프트웨어 회사를 분석해서 조직 및 프로세스를 개선하고 교육을 시키고 하는데, 뭔가 증명해 보이기는 어렵죠. 제가 만난 수많은 회사들의 소프트웨어 개발 역량은 대부분 10점만점에 1,2점인데 비해서 마음만은 8,9점이죠. 이런 회사들도 설득할 수 있는 증거들이 필요할 것도 같네요. ^^

  7. Blog Icon
    [1002]

    컨설팅 전/후 효과에 대한 분석을 위해 어떤 요소들을 측정하나요? 생산성과 운영비용에 대한 측정, 결함율 분석, 잠재 리스크 및 리스크에 대한 비용과, 프로세스 개선 뒤의 생산성 향상 및 운영비용 감소, 결함율 감소, 리스크 감소 등에 대하여 정량적 혹은 정성적으로 어떻게 분석하는지 궁금합니다.

  8. 이것이 정량적으로 측정이 거의 불가능합니다. 하지만 가끔 이런 것들에 대한 정량적인 자료들이 있기는 하더군요. 코드리뷰 전후의 소프트웨 결함 및 처리 비용 비교, 전문적인 테스트 팀이 있는 경우와 없는 경우의 비교 등등 하지만 그 숫자들을 액면 그대로 믿기 어렵고 그 성과가 회사마다 너무 다르고 또 너무 당연한 것들이기 떄문에 컨설팅 후에 그 성과를 수치적으로 평가를 하지는 않습니다.

  9. Reference는 둘째 치더라도 정성/정량적인 사항은 담당자 선에서 보고서엔 필수적으로 포함을 시켜야 하기때문에 요구할꺼에요. 또 컨설팅 입장에서의 고객 Case Study, 고객 만족도/반응도 를 제시하여 주는 것도 좋은 마케팅 툴 중에 하나죠.. 국내 Infra가 취약하긴 하지만.. 그래도 취약한 Infra의 담당자 및 임원을 객관적인 자료로 제안/설득 및 향후 도입효과를 측정해주는 것도 컨설팅 회사의 주요 Activity이지 않나 싶습니다.

  10. 안녕하세요. Peter님
    지금까지는 어떻게 보면 불모지와 같았었는데, 점차 그런 자료들이 필요해보이는 군요. 저희 회사에서도 그동안의 경험으로 많은 자료가 축적이 되었으므로 점차 그런 정량적인 데이터를 만드는 것을 시도해볼 필요가 있어보이네요. 감사합니다.

누가 소스코드를 몰래 바꿔놨다.

2009/07/13 19:57
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
누군가 몰래 여러분 회사의 소스코드를 바꿔놓는 일이 가능한가요? 진짜 이런 일이 일어 날 수 있는 환경이라면 당장 고쳐야 합니다.

실제로 이러한 걱정을 하는 회사도 많이 있습니다. 

영화 슈퍼맨3를 보면 한 프로그래머가 은행 이자의 우수리 돈을 자신의 계좌로 몰아서 스포츠카를 사는 장면이 나옵니다. 또, 퇴사하는 직원이 악의를 품고 소스코드를 몰래 바꿔놓지 않을까 걱정을 하기도 합니다.

정상적인 시스템과 프로세스를 갖춘 회사라면 이러한 걱정을 할 필요가 없으나 그렇지 못한 대부분의 소프트웨어 회
사들에서는 언제든지 일어날 수 있는 일입니다.

정상적인 경우라면 소스코드의 모든 변경은 기록에 남게 됩니다. 또 소스코드를 변경하기 위해서는 버그ID(또는 이슈ID)가 있어야 합니다. 이것이 소스코드 변경 승인의 역할을 대신하기 때문에 소스코드를 변경 시 버그 ID가 없다면 소스코드 변경이 차단되도록 되어 있는 경우도 있습니다.

또, 버그ID도 가짜로 만들어서 등록을 했다고 하더라도, Peer review에서 이상한 코드는 발견이 되게 됩니다. Peer review를 통과 했다고 하더라도, Build팀에서 빌드를 하면서 바뀐 소스코드와 버그ID를 체크하는 과정에서 가짜 버그 ID가 발각 될 수 있습니다. 여기까지 통과를 하였다고 하더라도, 테스트에서 걸리게 되어 있습니다. 이것도 통과를 하였다고 하더라도, 모든 변경의 이력은 기록이 남아 있고, Log가 존재하므로 추후 추적이 가능해집니다.

제대로 시스템과 프로세스가 갖추어져 있다면 누가 소스코드를 마음대로 바꾸지 않을까 걱정할 필요가 없습니다. 이를 걱정하고 온갖 프로텍트 장치를 해 놓는 것은 오히려 개발 효율성을 떨어뜨리게 됩니다.

모든 것이 다 Open되어 있고 허술한 것 같아 보이지만, 이렇게 하는 것이 오히려 더 안전하고 투명하게 개발이 진행되며 생산성을 훨씬 더 높이는 방법입니다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다. 


저작자 표시 비영리 변경 금지

Ray.전규현 기반시스템/소스코드관리 Peer Review, 빌드, 소스코드관리, 슈퍼맨3, 테스트

Trackback Address: http://allofsoftware.net/trackback/128 관련글 쓰기
  1. 2009/07/14 09:07
    권혜진의 생각 Tracked from fat's me2DAY

개발자는 코딩만 해야 한다.

2009/07/09 15:32
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

제목을 보시고 무슨 말도 안되는 얘기를 하느냐고 생각하시는 분이 대부분일 겁니다.
이러한 생각의 Gap은 소프트웨어를 개발하는데 있어서 개발자의 역할에 대한 인식의 차이에서 비롯합니다.

현실을 보면 개발자라는 이름으로 정의된 소프트웨어 엔지니어들은 대단히 많은 일을 합니다. 
요구사항 분석도 하고, 설계도하고, 코딩도 하고, 테스트도 하고, 빌드도 하고, 팩키징도 하고, 고객지원도 하고, 전화도 받고, 영업도 지원하고, 서비스 회사인 경우에는 실제 운영서버 관리도하고, 장애 해결도 하고, 정말 여러가지 일을 합니다.

이것을 역할로 바꿔보면, Software Analyst, Software Architect, Coder, QA Engineer, Build Engineer, Release Engineer, Technical support engineer, Technical sales engineer, System administrator 등의 서로 다른 역할 들입니다.

이런 일들을 모두 다른 사람이 해야 한다고 하면 배부른 소리하고 있다고 할 겁니다. 물론 그것은 아니죠. 이중에서 개발자가 Coder의 역할만 하는 것은 아니고 몇 가지 역할을 겸해서 할 수는 있습니다. 심지어는 위의 모든 일을 한 명의 개발자가 수행할 수도 있습니다. 하지만 그렇다고 하더라도, 이 각각의 일들은 원래 다른 역할이라는 것을 알아야 합니다. 특히 코딩과 테스트는 한 사람이 동시에 잘 해내기 어려운 조합이기도 합니다. 따라서 여유가 되고 기회가 된다면 적절한 시점에 똑같은 만능개발자를 수평적으로 인원수만 늘릴 것이 아니고, 각각의 역할로 쪼개야 합니다.

그 중에서 개발자(코더)의 역할은 정해진 설계에 따라서 혹은 할당받은 버그에 대하여 소스코드를 수정하고 소스코드관리시스템에 등록하면 끝나는 겁니다. 나머지는 다른 사람들이 할 일이죠. 이것이 지켜지지 않으면 이중에서 비싼 인력인 개발자가 싼 인력이 수행할 수 있는 일들에 치여서 점점 효율성이 떨어지고, 자잘한 사고도 많이 일어납니다. 개발자는 개발이 전문이지, 테스트 전문가도 아니고, 빌드와 릴리즈 전문가는 더욱더 아니라서 코딩 이외의 일들은 잘 해내지도 못합니다. 따라서 조직이 커지고 있다면 적절한 시점에 역할이 분리되지 않으면 커다란 공장에서 수많은 개발자들이 체계적이지 않은 방법으로 인형에 눈깔 붙이듯이 서로 뒤죽박죽 뒤섞여서 일하게 될 수 있습니다. 

지금은 조직이 작아서 개발자가 여러가지 일을 다하더라도 "모드전환스위치"를 가지고 있어서 서로 다른 일을 할 때는 스위치를 잘 해야 합니다. 그리고 언제든지 일을 떼어줄 준비를 하고 있어야 합니다.

개발자 4명보다 개발자 3명과 테스터 1명이 더 효율적입니다.
개발자 30명보다 개발자 20명과 테스터 6명과 빌드/릴리즈 담당자 1명과 3명의 Technical Support 담당자가 있는 것이 더 효율적입니다.
물론 숫자는 절대적인 것이 아니지만, 회사는 계속 커가는데, 구멍가게나 가내수공업식으로 계속하고 싶지 않으면 역할에 분리에 대해서 고민해야 합니다.

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다. 
저작자 표시 비영리 변경 금지

'소프트웨어이야기' 카테고리의 다른 글

모짜르트와 두 제자  (4) 2009/07/16
레퍼런스 있어요?  (10) 2009/07/15
개발자는 코딩만 해야 한다.  (14) 2009/07/09
살아남은 개발자들  (3) 2009/07/03
도대체 얼마나 자세히 적어 달라고?!  (4) 2009/06/29
악순환 vs. 선순환  (2) 2009/05/22

Ray.전규현 소프트웨어이야기

Trackback Address: http://allofsoftware.net/trackback/127 관련글 쓰기
  1. 멋진 이야기세요~

  2. hangum님 안녕하세요.
    반갑습니다.

  3. 확실히 전문적으로해야 한다는 점에서는 맞긴 하지만..
    문제는 회사에서는 슈퍼맨을 원하죠.. 한사람으로 세사람 역활을 하는 그런 것들을 말이죠..

    하지만 개발자가 코딩을 위해서는 저러한 방법론적인 이론들도 알고는 있어야 합니다
    그러면 또 윗사람은 당연히 그것도 해야 하잖아? 라고 하고.. 참.. 악순환이군요..

  4. 구차니님 안녕하세요.
    저도 여러 슈퍼맨들을 만나 봤습니다. 그들의 대부분은 잡다구리한 것들만 잘하지 진짜 소프트웨어 개발 전문가적인 실력을 가지고 있는 사람은 본적이 없습니다. 가짜 슈퍼맨이죠.
    개발자는 주로 설계, 코딩을 하지만, 그외의 일도 전반적으로 다 잘 알아야죠. 그래야 제대로된 설계를 할 수 있습니다.

  5. 글 내용에서는 개발과 테스팅의 체계적인 분리 필요성을 역설하셨지만, 제목은 그렇지 않네요 ㅋ

  6. Zaphod님 안녕하세요.
    일부러 제목은 이상하게 만들어봤습니다. ^^

  7. 규현님 블로그의 특징은 글이 띄엄 띄엄 올라오는 대신 그 글들 하나 하나가 좋은 듯....

  8. 안녕하세요. 하나님
    잘 읽어주시니 감사합니다. 글을 자주 올리려고 하는데, 최근에 많이 바빴습니다. 다시 열심히 포스팅해야죠. ^^

  9. 그런데 텍스트큐브 블로거는 티스토리 블로그를 관심 블로그로 설정할 수 없나요? 전 텍큐라서....

  10. 제가 텍스트큐브는 잘 몰라서요...
    그냥 RSS Feed를 보시면 되지 않을까요?

  11. 각 개발자별로 1개의 전담분야를 맡아 처리하려면 부서가 최대한 작게 나눠저야 하고(프로젝트를 진행하는) 팀장의 수도 작아야 하죠 ㅎㅎ 안 그러면 팀마다 개발자/DBA/아키텍터.. 등등이 필요로 하게 되니... 네네.. 뭐 일단 현실은 말씀하신 것처럼 개발자가 제안서 작성/해외출장 및 클라이언트 미팅/설계/개발/SQL튜닝/QA/인수인계 문서작성/교육/관리.. 까지 다 하는게 대부분의 중소기업의 현실인듯. 또 그런 멀티 플레이어를 중소기업일수록 선호하는게 사실이구요.

    뭐... 팀원 모두가 유능한 멀티플레이어가 되는 것도 한 가지 방법입니다. :)

  12. 안녕하세요. 우울한 딱따구리님

    맞습니다. 개발자의 역할은 대단히 많은 분야에 걸처있고, 다 조금씩 할 수 있어야죠. 그런데, 개발자가 100명이 넘는 회사에서 모든 개발자가 다 그렇게 서로 뒤죽박죽되어서 일을 하고 있는 경우도 많습니다. 이런 경우 잘하는 개발자들만 죽어나고, 효율도 떨어지고 성과도 안나오죠. 처음에 멀티플레이어라고 하더라도 Role을 구분해서 일하는 습관을 들여 놓지 않으면 나중에게 거대한 가내수공업 공장이 되어 버린다는 경고입니다.

  13. Blog Icon
    국내개발자

    국내개발자는 슈퍼맨이 맞습니다. 워낙 여러가지 일들을 하기를 원해서요. 기본적으로 설계+코딩+테스터는 기본이고 상황에 따라 배포까지 해야하니까요. 그러니 외국에선 싼 가격에 여러가지 일들을 해낼 수 있는 국내 개발자를 선호하는지도 모르겠구요. 외국은 역활 분리가 완벽하게 되어있으니.

  14. 안녕하세요. 국내개발자님 ^^
    보통은 만능개발자로 시작을 하지만, 조직이 커져갈수록 역할 분리를 해야 하고 미리 준비가 되어 있어야 합니다. 국내에서는 그렇게 하기에는 소프트웨어 개발 문화에 대한 저변 자체가 워낙 낮기 때문입니다.

빨리 망해서 없어져야 할 회사들

소프트웨어 업계에는 빨리 망해야 서로 도움이 되는 회사들이 매우 많지만 악착같이 버티면서 소프트웨어 생태계를 좀먹고 있습니다. 이렇게 좀비화 된 "좀비 회사"들은 또다른 "좀비 회사"를 만들어 내는 악순환의 고리를 만듭니다...

[이벤트] 도서 증정 - "소프트웨어 개발의 모든 것"

안녕하세요. 블로그 독자 여러분! 대한민국의 소프트웨어 토양에 좋은 밑거름이 되고자 하는 제 블로그에 많은 호응을 해주셔서 감사드리며 이에 보답코저 아래와 같이 이벤트를 실시합니다. 많은 참여 바랍니다. 제목 : 저자 사인..

세계 최초!
세계 최초! 2010/03/05

소프트웨어 업계만큼이나 "세계 최초"라는 수식어를 자주 듣는 곳도 드물 것입니다. 이러한 수식어가 붙는 이유는 세간의 이목을 끌기 위함이 명백합니다. 하지만 세계 최초라고 하는 것들의 99%는 아래 범주에 속합니다. 나는 세..

개발자의 야근은 공짜?

소프트웨어 회사의 일들은 대부분 사람, 특히 개발자에 의존하는 일이 많습니다. 따라서 인건비는 가장 큰 비중을 차지하는 고정비입니다. 그런데 일단 뽑아 놓은 직원들의 야근은 공짜로 생각하는 경우가 많습니다. 게다가 몇몇 기업..

삼성이 소프트웨어 분야에서도 최고가 되려면?

최근 삼성과 소프트웨어에 대한 글들을 몇 건 올리면서 정말로 다양한 의견을 접하게 되었습니다. 댓글뿐만 아니라 메일을 통해서도 의견을 들을 수 있었습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를..

소프트웨어 회사에 산업 스파이가 존재하는가?

최근에 블로그에 올린 글들의 댓글을 보면 소프트웨어를 잘 개발하는 것이 어떤 것인지 바라보는 시각이 무척 다릅니다. 필자는 주장하는 바가 있어서 소프트웨어 개발에 대한 생각을 꾸준히 공유하고자 합니다. 제 블로그의 미션은 어..

애플은 한국어와 한글을 구분하지 못한다?

아이폰을 사용하기 시작한지 오늘로 꼭 2달이 되었습니다. 2달동안 아이폰을 사용하는 재미, 아이폰 앱 개발 관련 공부하는 재미에 빠져있었습니다. 그런데, 아이폰 다국어 설정에서 이상한 것을 발견했습니다. 언어어 설정에 떡하니..

스마트폰 앱스토어가 진짜 대박이 아닌 이유

요즘 스마트폰이 IT 이슈의 정점에 있어서 스마트폰 관련 글을 계속 올리게 됩니다. 개발자의 한사람으로서 스마트폰의 급속한 확대는 좋은 징조임이 분명합니다. 하지만 종종 스마트폰 어플리케이션을 만들어서 앱스토어에 올리면 쉽게..

삼성이 앞으로도 소프트웨어를 잘 만들 수 없는 이유

저는 이미 삼성의 소프트웨어에 대한 글을 몇개 올린 적이 있습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를 잘 만들지 못할까? 2010/01/23 - [소프트웨어이야기] - 삼성이 바다를 출시해..

삼성이 바다를 출시해서는 안되는 이유

일전에 삼성이 왜 소프트웨어를 잘 개발하지 못하는지에 대한 글을 쓴적이 있습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를 잘 만들지 못할까? 개인적인 생각이지만 바다의 정식 출시가 임박할수록 점..