Copy & Paste의 종말
'프로젝트 > 구현' 카테고리의 다른 글
| Copy & Paste의 종말 (8) | 2009/07/31 |
|---|
-
2009/08/01 14:16개발자가 Copy&Paste를 하는 이유에 대해서 Tracked from neinhart


All of Software소프트웨어 경영/개발 컨설턴트와 소프트웨어 공학 전문가들이 말하는 소프트웨어 개발 이야기...
여러분들의 의견 적극 환영합니다.
by Ray.전규현 [메일보내기] |
SW개발역량분석 서비스(Free) |
| Copy & Paste의 종말 (8) | 2009/07/31 |
|---|
| SRS에 대한 인식의 변화 (6) | 2009/11/13 |
|---|---|
| 이건 기능이 아닌데 (4) | 2009/08/03 |
| 고객이 요구사항을 너무 자주 바꿔요. (4) | 2009/07/30 |
| Track me, if you can (0) | 2009/05/04 |
| 개발자들이 바글바글한 외딴섬에 떨어진다면 (20) | 2009/04/22 |
| 요구사항 분석의 출발점 (6) | 2009/02/12 |
포스팅 잘 읽었습니다. CMMI에서도 요구사항에 대해서 요구사항을 먼저 "개발" 하고 그 다음 레벨이 요구사항 "관리"입니다. 지속적으로 요구사항이 바뀌기 때문이지요. 본문의 내용과 비슷한 맥락이라 허접 답변 남기고 갑니다. ^^
어쩌면 가장 중요한 차이점은,
요구사항이 변경되고 나서 재계산되는 시간, 비용의 차이가 아닐까 생각이 됩니다.
한국에서는 변경되도 마감일이나 비용이 변하지 않으니 말이죠..
구차니님 안녕하세요.
요구사항이 변경되면 그에 따른 영향평가가 따라야 하고, 계약이 변경되어야 하는데, 우리나라에서는 스펙따로 계약 따로이기 때문에 요구사항이 2배로 늘어도 계약은 변하지 않는 문제가 있죠.
| Mensa(멘사)회원들보다 똑똑한 Waitress (24) | 2009/11/02 |
|---|---|
| CEO 가장 자주 하는 거짓말은 뭘까? (14) | 2009/10/27 |
| 변화하지 못하는 회사들의 공통점 (11) | 2009/07/28 |
| 변화하는 회사들의 공통점 (2) | 2009/07/26 |
| 오늘의 잡담 - 개발자와 영어 (11) | 2009/07/20 |
| 모짜르트와 두 제자 (4) | 2009/07/16 |
하나님 반갑습니다.
제 블로그에 관심을 가져줘서 감사합니다. 앞으로도 좋은 글 올리도록 노력하겠습니다. 하나님 블로그는 구독해서 보고 있습니다. ^^
안녕하세요. 김민석님
개발자의 책임은 5번 한개 정도 같군요. 나머지는 회사 경영자나 전체를 두고 한 얘기입니다. ^^ 사실이 그렇구요.
점점 배울수록 작아지는 자신의 모습에 우울증에 빠지지 않는것도 중요 한것 같습니다.
어떻게 배우면 배울수록 더 배워야 하는게 늘어나는지 참으로 미스테리입니다 ㅠ.ㅠ
| CEO 가장 자주 하는 거짓말은 뭘까? (14) | 2009/10/27 |
|---|---|
| 변화하지 못하는 회사들의 공통점 (11) | 2009/07/28 |
| 변화하는 회사들의 공통점 (2) | 2009/07/26 |
| 오늘의 잡담 - 개발자와 영어 (11) | 2009/07/20 |
| 모짜르트와 두 제자 (4) | 2009/07/16 |
| 레퍼런스 있어요? (10) | 2009/07/15 |
안녕하세요. Hoya님
회사를 하면서 가장 중요한 것 중의 하나가 "운"이라고 생각합니다. ![]()
하지만 "운"만 가지고는 정말 성공하기 어렵고, "운" + "실력"이 필요하겠죠. 그래야 조금이라도 성공할 확률이 높아지죠.
"운"가지고 처음에 반짝 했다가 2round에서 망하는 회사 많이 봤죠.
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
| 변화하지 못하는 회사들의 공통점 (11) | 2009/07/28 |
|---|---|
| 변화하는 회사들의 공통점 (2) | 2009/07/26 |
| 오늘의 잡담 - 개발자와 영어 (11) | 2009/07/20 |
| 모짜르트와 두 제자 (4) | 2009/07/16 |
| 레퍼런스 있어요? (10) | 2009/07/15 |
| 개발자는 코딩만 해야 한다. (14) | 2009/07/09 |
whitekid님 안녕하세요.
Naver에서 가끔 코딩 관련 질문을 보면 프로그래밍의 기본도 모르고 어떻게 이런 것 물어보고 개발을 할 수 있나 생각할 때가 많습니다. 하지만 그런 사람도 많아야 잘하는 사람들이 더 차별되겠죠?
수업시간에 프리젠테이션으로 교수님이 이야기 하시는 객체지향 한학기 지나도록 이해를 못했는데 군대가서 원서를 정독하니 이해를 하겠더라구요 -ㅁ-
아직은 IT쪽에 대한 포스팅의 질이 낮은 편이라.. 아무래도 영어자료를 찾게되고, 번역내용들 역시 검증되지 않고 오역이 너무 많아서 그냥 원서로 보게 되더라구요.. 후우..
안녕하세요. 구차니님
소프트웨어 관련 번역서들은 수준이 정말 낮은 것들이 많습니다. 대부분은 원서와 비교를 해보면 그 뜻이 다른 것들이 많습니다. 영어만 잘한다면야 원서를 읽는 것이 훨씬 좋죠.
영어의 필요성은 굳이 영어로 된 자료를 읽는데만 필요한 건 아니더군요.
해외업체랑 일을 하게 되면 결국은 공통어가 필요하고 이 공통어는 십중팔구영어가 되는 것 같습니다.
회의도 영어로 해야하고, 그날의 회의결과도 곧바로 정리해서 MOM 싸인받아야 하고, 이메일로 의사소통도 해야 하고, 영어 PT도 해야 하고...
그나마 상대방 클라이언트가 영어 네이티브면 어떻게든 말을 알아들어 줄텐데, 양쪽 모두 네이티브가 아닌 경우에는 좀 난감할 겁니다. 특히 본인도 영어를 못하고 상대방 담당자도 버벅이게 되면... 이건 재앙의 수준이라고 할지.. ㅎㅎ
오랫만에 들러서 글 읽고갑니다. ![]()
우울한딱따구리님 오랫만입니다.
영어 Free talking까지 능숙하게 되면 좋죠. 외국 개발자와 같이 개발하는 경우가 꽤 있나보네요. 영어 공부 많이 하셔야 하겠습니다. ^^
"우리 팀은 각자 맡고 있는 소스코드가 다 달라서 서로 충돌 날 일이 전혀 없어요"
"이 소스코드를 수정해야 하면 나한테 얘기해, 내가 고쳐 줄게"
"내가 지금 고치고 있으니 너도 고치려면 내가 끝낼 때까지 기다려"
"지금 이거 한창 고치고 있으니 중간에 다른 것은 끼어들 수 없어요. 이거 다 끝날 때까지 기다려주세요."
이와 같은 현상이 친숙하나요? 그럼 Parallel Development(병행개발)와는 거리가 멉니다.
개발을 이런 식으로 순차적으로 기다렸다가 해야 한다거나 다른 사람이 이 소스코드를 고치고 있지 않은지 걱정을 하고 있거나 이것 때문에 소스코드를 고칠 때 항상 Lock을 걸어야 한다면 이만 저만 불편한 것이 아닙니다. 개발 속도도 떨어지게 됩니다.
아키텍처적인 이슈를 제외하고는 개발자들은 서로 같은 소스코드를 얼마든지 동시에 수정할 수 있고, 소스코드가 충돌이 일어나더라도 얼마든지 쉽게 해결할 수 있어야 합니다. 또한 동일한 소스코드를 기반으로 길고 짧은 프로젝트를 동시에 진행하면서 나중에서 손쉽게 Merge를 할 수 있어야 합니다. 이런 식으로 개발을 하지 않으면 대형 프로젝트는 너무 오래 걸릴 수 밖에 없습니다.
또한 이 때문에 각 개발자들이 Component Owner식으로 자신만 소스코드를 다룰 수 있다면 개발자들간에 소스코드 공유가 취약해지며 서로 단절된 개발을 하기 십상이 됩니다.
하지만 이런 Component Owner방식에 익숙한 환경에서는 이것이 너무 당연하게 생각이 되므로 이것을 바꾸려는 생각을 하기란 쉽지가 않습니다. 지금이 방식이 익숙하고 별 문제가 없어 보이고 또 이런 환경에서 발생한 문제들을 온갖 편법으로 피해 왔기 때문에 바꾸기가 쉽지 않습니다. 하지만 이로 인해 발생하는 문제들은 무시할 수 없습니다.
Parallel Development를 제대로 수행하려면 소스코드관리시스템을 단순히 소스코드 저장소 용도로 사용해서는 부족합니다. 소스코드관리시스템을 제대로 사용하기 위한 프로세스와 규칙이 필요하며 Branch와 Tag, Merge를 용도에 맞게 능숙하게 사용할 수 있어야 합니다.
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
| 베이스라인 (2) | 2009/08/04 |
|---|---|
| 이 소스코드는 나 밖에 못 건드려! (10) | 2009/07/19 |
| 누가 소스코드를 몰래 바꿔놨다. (0) | 2009/07/13 |
| 소스코드관리 상세 조사 결과 리포트 (6) | 2009/03/08 |
| 사라진 소스코드 (4) | 2009/02/28 |
| Merge Tool(머지툴) 비교 - (3way merge 기능) - 수정 (18) | 2009/02/25 |
지금 회사에서 svn을 쓰고 있습니다. 그냥 깔아서 쓰고 있죠. 문서공유와 프로젝트 소스코드를 관리하기 위함입니다.하지만 svn담당자는 branch가 뭔지,tag가 뭔지, merge기능이 뭔지 모르더군요. 그냥 계정주고 인스톨만 하면 끝인줄 압니다. 안타깝죠~.그렇게 깔아놓고 후배들에게 무언가를 가르칩니다. 안타깝죠.~
안녕하세요. SVN을 그렇게 사용한다면 SVN이 주는 혜택의 5%정도밖에 못보는 거죠. "소스코드관리시스템을 사용하고 있습니까?"라는 질문에 "Yes"라고 답하기 곤란한 경우죠.
안녕하세요. 구차니님
결론이 버전컨트롤이라기보다는 이것은 소프트웨어를 개발하는데 있어서 아주 기초가 되는 사항이기 때문에 결론보다는 시작이라고 해야 적당한 것 같습니다. 단순히 소스코드를 공유하고 백업 받는 기능을 익히는데는 5분이면 족하지만, 그 외에 중급/고급 기능은 제대로 익히는데 몇년이 걸리기도 합니다.
안녕하세요. whitekid님
불변의법칙이죠. 먼저 커밋하는 사람이 장땡이죠. ^^
거대한 프로젝트에서는 나중에 커밋하는 사람이 Merge하는데 며칠이 걸리기도 합니다. 아무리 툴의 지원을 받아도 그런 경우도 있죠.
저희는 ClearCase를 쓰고 있는데...
"소스코드관리시스템을 이용하고 계십니까?" 라는 질문에 "No"라고 해야 할듯 싶네요..에공~
| 변화하는 회사들의 공통점 (2) | 2009/07/26 |
|---|---|
| 오늘의 잡담 - 개발자와 영어 (11) | 2009/07/20 |
| 모짜르트와 두 제자 (4) | 2009/07/16 |
| 레퍼런스 있어요? (10) | 2009/07/15 |
| 개발자는 코딩만 해야 한다. (14) | 2009/07/09 |
| 살아남은 개발자들 (3) | 2009/07/03 |
좋은 말씀입니다. 문제는 잘못된 길로 들어섰다는 것을 깨우치는 회사가 드물더군요... 깨우치게 하는 것이 가장 큰 장벽인것 같습니다.
Jake님 오랫만입니다.
스스로 꺠우치기는 어떻게 보면 불가능하죠. 그래서 책을 통해서 공부를 하거나, 경험자들의 도움을 받거나 하죠. 그래도 Open mind라면 잘못된 길로 들어 섰어도 고치기가 쉽습니다.
| 오늘의 잡담 - 개발자와 영어 (11) | 2009/07/20 |
|---|---|
| 모짜르트와 두 제자 (4) | 2009/07/16 |
| 레퍼런스 있어요? (10) | 2009/07/15 |
| 개발자는 코딩만 해야 한다. (14) | 2009/07/09 |
| 살아남은 개발자들 (3) | 2009/07/03 |
| 도대체 얼마나 자세히 적어 달라고?! (4) | 2009/06/29 |
솔찍히 기초만 다지라고 해서 될일은 아니라고 생각이 됩니다.
교육기반 자체가 암기식이고 왜? 라는물음을 배제한 채 다 커버린 교육의 결정체인 개발자에게 초심으로 돌아가라는건 개인에게만 너무 책임을 전가하는 행위라고 보여집니다.
물론, 살아남기 위해서라도 스스로가 기반을 다져야 하는 것은 옳지만 말이죠.
안녕하세요. 구차니님
기초라는 것이 개발자가 혼자서 어떻게 해 볼 수 있는 것이 아니고, 회사의 조직, 프로세스, 관리방식, 시스템등을 말하는 것입니다. 그런 것 없이 개발자들보고 알아서 잘 해보라는 것은 무리죠. 제대로된 환경에서 개발을 해야 개발자들이 또 역량이 올라고요. 지금은 너무 당양한 것들을 안하면서 뭔가 근사한 것만 찾는 회사가 많아서 문제입니다.
저도 컨설팅일을 하고 있지만 레퍼런스라는 것은 중요한게 맞는것 같습니다.
특히 같은 업종이나 같은 나라의 레퍼런스라는 것은
이미 경험을 해봤고, 문제가 무엇임을 알고 있기 때문에, 좀더 프로젝을 제대로 돌아가기 때문에 레퍼런스가 중요한 것 같습니다. 그리고 C레벨 경영자가 ROI를 따지는 것은 당연한 일이구요. 돈받고 무언가를 팔려면 그만한 가치를 하고 증명을 하는게 당연한 일이겠지요.
국내 소프트웨어 수준에 대해서는 외국 컨설턴트와 많이 일을 해봤지만 구현 기술에 있어서는 어느 나라 못지 않습니다. 프로세스 부분에 특히 관리 부분에서는 문제가 많지만 국내 고객 요건이 해외에 비해서 훨씬 까다롭고 더 높은 수준의 요구사항이 많기 때문에 국내 환경이 꼭 나쁘다 수준이 낮다고는 할 수 는 없을것 같습니다.
조대협님 안녕하세요. 반갑습니다.
조대협님의 블로그는 즐겨보고 있습니다.
레퍼런스란 참 중요하죠. 그런데 제가 하는 컨설팅은 레퍼런스를 찾기가 참 어려운 분야입니다. 국내에서는 제대로 하고 있는 회사를 찾기가 어렵고, 외국에서는 당연한 것들이니까요. 새로운 솔루션을 제안하는 것이면 쉬울텐데, 소프트웨어 개발 문화를 향상하고, 개발프로세스를 정비하고, 스펙을 쓰고, 소스코드를 관리하고 하는 것들은 워낙 기초이고 당연한 것들이어서, 꼭필요하다는 것을 증명하기가 짜증나는 경우입니다. 그럼에도 왜 그렇게 해야 하는지 증명하기를 요구하는 경우도 있습니다. 그리고 이런 부분까지 너무 ROI를 따지는 경영자들은 대부분 소프트웨어 개발자체를 너무 이해하고 있지 않기 때문에 성과를 내기도 어렵고 왠만하면 일하고 싶은 생각이 없죠.
또 지적한바와 같이 국내 소프트웨어 회사들의 구현 기술이 뛰어난 것은 동의합니다. 그런데, 이를 뒷바침하여 글로벌 경쟁력 있는 소프트웨어를 만들어내고 유지할 수 있는 프로세스, 시스템, 조직등이 저변이 취약하여 일정 수준 이상을 뛰어넘지 못하고 있는 것을 보면 안타까죠.
컨설턴트이던 개발회사이든 레퍼런스는 클라이언트가 안심하고 일을 맞길 수 있느냐 없느냐를 결정하는데 중요한 사항 중 하나라고 생각합니다.
예를 들어 개발회사 A가 국내 최대 이통사에 솔루션 K를 납품하고 운영한 경험이 있다고 하더라도 이건 가입자 2천만명을 처리한 경험이 있다라는 이야기밖에 되지 않죠.
이런경우 가입자 6천5백만명을 갖고 있는 해외 모 이통사에서는 해당 업체 A에 뭔가를 맞기기에 불안할 수밖에 없을겁니다. 수치상으로도 3배가 넘는 트래픽을 감당해야 하니...
그래서 많은 회사들이 양질의 레퍼런스를 늘릴 기회가 된다면 적자를 감수하고서라도 프로젝틀를 진행하려고 하는게 아닐지요.
글 잘 읽고 갑니다. ![]()
안녕하세요. 우울한딱따구리님
당연한 말씀입니다. 그렇게 중요한 시스템을 도입한다고 한다면 레퍼런스가 아주 중요하죠. 그런데 저희 컨설팅 분야는 그렇게 수치적으로 뭔가 보여주기가 어려운 측면이 있습니다. 소프트웨어 회사를 분석해서 조직 및 프로세스를 개선하고 교육을 시키고 하는데, 뭔가 증명해 보이기는 어렵죠. 제가 만난 수많은 회사들의 소프트웨어 개발 역량은 대부분 10점만점에 1,2점인데 비해서 마음만은 8,9점이죠. 이런 회사들도 설득할 수 있는 증거들이 필요할 것도 같네요. ^^
컨설팅 전/후 효과에 대한 분석을 위해 어떤 요소들을 측정하나요? 생산성과 운영비용에 대한 측정, 결함율 분석, 잠재 리스크 및 리스크에 대한 비용과, 프로세스 개선 뒤의 생산성 향상 및 운영비용 감소, 결함율 감소, 리스크 감소 등에 대하여 정량적 혹은 정성적으로 어떻게 분석하는지 궁금합니다.
이것이 정량적으로 측정이 거의 불가능합니다. 하지만 가끔 이런 것들에 대한 정량적인 자료들이 있기는 하더군요. 코드리뷰 전후의 소프트웨 결함 및 처리 비용 비교, 전문적인 테스트 팀이 있는 경우와 없는 경우의 비교 등등 하지만 그 숫자들을 액면 그대로 믿기 어렵고 그 성과가 회사마다 너무 다르고 또 너무 당연한 것들이기 떄문에 컨설팅 후에 그 성과를 수치적으로 평가를 하지는 않습니다.
Reference는 둘째 치더라도 정성/정량적인 사항은 담당자 선에서 보고서엔 필수적으로 포함을 시켜야 하기때문에 요구할꺼에요. 또 컨설팅 입장에서의 고객 Case Study, 고객 만족도/반응도 를 제시하여 주는 것도 좋은 마케팅 툴 중에 하나죠.. 국내 Infra가 취약하긴 하지만.. 그래도 취약한 Infra의 담당자 및 임원을 객관적인 자료로 제안/설득 및 향후 도입효과를 측정해주는 것도 컨설팅 회사의 주요 Activity이지 않나 싶습니다.
안녕하세요. Peter님
지금까지는 어떻게 보면 불모지와 같았었는데, 점차 그런 자료들이 필요해보이는 군요. 저희 회사에서도 그동안의 경험으로 많은 자료가 축적이 되었으므로 점차 그런 정량적인 데이터를 만드는 것을 시도해볼 필요가 있어보이네요. 감사합니다.
| 베이스라인 (2) | 2009/08/04 |
|---|---|
| 이 소스코드는 나 밖에 못 건드려! (10) | 2009/07/19 |
| 누가 소스코드를 몰래 바꿔놨다. (0) | 2009/07/13 |
| 소스코드관리 상세 조사 결과 리포트 (6) | 2009/03/08 |
| 사라진 소스코드 (4) | 2009/02/28 |
| Merge Tool(머지툴) 비교 - (3way merge 기능) - 수정 (18) | 2009/02/25 |
| 모짜르트와 두 제자 (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 |
확실히 전문적으로해야 한다는 점에서는 맞긴 하지만..
문제는 회사에서는 슈퍼맨을 원하죠.. 한사람으로 세사람 역활을 하는 그런 것들을 말이죠..
하지만 개발자가 코딩을 위해서는 저러한 방법론적인 이론들도 알고는 있어야 합니다
그러면 또 윗사람은 당연히 그것도 해야 하잖아? 라고 하고.. 참.. 악순환이군요..
구차니님 안녕하세요.
저도 여러 슈퍼맨들을 만나 봤습니다. 그들의 대부분은 잡다구리한 것들만 잘하지 진짜 소프트웨어 개발 전문가적인 실력을 가지고 있는 사람은 본적이 없습니다. 가짜 슈퍼맨이죠.
개발자는 주로 설계, 코딩을 하지만, 그외의 일도 전반적으로 다 잘 알아야죠. 그래야 제대로된 설계를 할 수 있습니다.
안녕하세요. 하나님
잘 읽어주시니 감사합니다. 글을 자주 올리려고 하는데, 최근에 많이 바빴습니다. 다시 열심히 포스팅해야죠. ^^
각 개발자별로 1개의 전담분야를 맡아 처리하려면 부서가 최대한 작게 나눠저야 하고(프로젝트를 진행하는) 팀장의 수도 작아야 하죠 ㅎㅎ 안 그러면 팀마다 개발자/DBA/아키텍터.. 등등이 필요로 하게 되니... 네네.. 뭐 일단 현실은 말씀하신 것처럼 개발자가 제안서 작성/해외출장 및 클라이언트 미팅/설계/개발/SQL튜닝/QA/인수인계 문서작성/교육/관리.. 까지 다 하는게 대부분의 중소기업의 현실인듯. 또 그런 멀티 플레이어를 중소기업일수록 선호하는게 사실이구요.
뭐... 팀원 모두가 유능한 멀티플레이어가 되는 것도 한 가지 방법입니다. ![]()
안녕하세요. 우울한 딱따구리님
맞습니다. 개발자의 역할은 대단히 많은 분야에 걸처있고, 다 조금씩 할 수 있어야죠. 그런데, 개발자가 100명이 넘는 회사에서 모든 개발자가 다 그렇게 서로 뒤죽박죽되어서 일을 하고 있는 경우도 많습니다. 이런 경우 잘하는 개발자들만 죽어나고, 효율도 떨어지고 성과도 안나오죠. 처음에 멀티플레이어라고 하더라도 Role을 구분해서 일하는 습관을 들여 놓지 않으면 나중에게 거대한 가내수공업 공장이 되어 버린다는 경고입니다.
국내개발자는 슈퍼맨이 맞습니다. 워낙 여러가지 일들을 하기를 원해서요. 기본적으로 설계+코딩+테스터는 기본이고 상황에 따라 배포까지 해야하니까요. 그러니 외국에선 싼 가격에 여러가지 일들을 해낼 수 있는 국내 개발자를 선호하는지도 모르겠구요. 외국은 역활 분리가 완벽하게 되어있으니.
안녕하세요. 국내개발자님 ^^
보통은 만능개발자로 시작을 하지만, 조직이 커져갈수록 역할 분리를 해야 하고 미리 준비가 되어 있어야 합니다. 국내에서는 그렇게 하기에는 소프트웨어 개발 문화에 대한 저변 자체가 워낙 낮기 때문입니다.
소프트웨어 업계에는 빨리 망해야 서로 도움이 되는 회사들이 매우 많지만 악착같이 버티면서 소프트웨어 생태계를 좀먹고 있습니다. 이렇게 좀비화 된 "좀비 회사"들은 또다른 "좀비 회사"를 만들어 내는 악순환의 고리를 만듭니다...
안녕하세요. 블로그 독자 여러분! 대한민국의 소프트웨어 토양에 좋은 밑거름이 되고자 하는 제 블로그에 많은 호응을 해주셔서 감사드리며 이에 보답코저 아래와 같이 이벤트를 실시합니다. 많은 참여 바랍니다. 제목 : 저자 사인..
소프트웨어 업계만큼이나 "세계 최초"라는 수식어를 자주 듣는 곳도 드물 것입니다. 이러한 수식어가 붙는 이유는 세간의 이목을 끌기 위함이 명백합니다. 하지만 세계 최초라고 하는 것들의 99%는 아래 범주에 속합니다. 나는 세..
소프트웨어 회사의 일들은 대부분 사람, 특히 개발자에 의존하는 일이 많습니다. 따라서 인건비는 가장 큰 비중을 차지하는 고정비입니다. 그런데 일단 뽑아 놓은 직원들의 야근은 공짜로 생각하는 경우가 많습니다. 게다가 몇몇 기업..
최근 삼성과 소프트웨어에 대한 글들을 몇 건 올리면서 정말로 다양한 의견을 접하게 되었습니다. 댓글뿐만 아니라 메일을 통해서도 의견을 들을 수 있었습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를..
최근에 블로그에 올린 글들의 댓글을 보면 소프트웨어를 잘 개발하는 것이 어떤 것인지 바라보는 시각이 무척 다릅니다. 필자는 주장하는 바가 있어서 소프트웨어 개발에 대한 생각을 꾸준히 공유하고자 합니다. 제 블로그의 미션은 어..
아이폰을 사용하기 시작한지 오늘로 꼭 2달이 되었습니다. 2달동안 아이폰을 사용하는 재미, 아이폰 앱 개발 관련 공부하는 재미에 빠져있었습니다. 그런데, 아이폰 다국어 설정에서 이상한 것을 발견했습니다. 언어어 설정에 떡하니..
요즘 스마트폰이 IT 이슈의 정점에 있어서 스마트폰 관련 글을 계속 올리게 됩니다. 개발자의 한사람으로서 스마트폰의 급속한 확대는 좋은 징조임이 분명합니다. 하지만 종종 스마트폰 어플리케이션을 만들어서 앱스토어에 올리면 쉽게..
저는 이미 삼성의 소프트웨어에 대한 글을 몇개 올린 적이 있습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를 잘 만들지 못할까? 2010/01/23 - [소프트웨어이야기] - 삼성이 바다를 출시해..
일전에 삼성이 왜 소프트웨어를 잘 개발하지 못하는지에 대한 글을 쓴적이 있습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를 잘 만들지 못할까? 개인적인 생각이지만 바다의 정식 출시가 임박할수록 점..
제가 생각하는 copy&paste의 문제는 이해부족에서 온다고 생각합니다.
체계적으로, 기존에 다른 사람이 작성한 코드를 분석하지 못했기때문에,
(이유는 여러가지가 있겠죠? 실력부족, 문서화안됨, 스파게티코드, 시간부족 등)
기존에 잘 돌던코드는 그대로 두고 플러스 알파만 내가 했다... 뭐 이런거 아닐까요?
또 비슷한 측면에서,
자신이 작업하던 코드의 경우에도, 설계가 세밀하게 진행되지 않은 상태에서,
일단 만들어보면서 얼기설기 작업해나가다 보면,
적절한 타이밍에 리팩토링 시기를 놓쳐버린 상태가 되는 경우가 있습니다.
시간비용 + 귀차니즘 때문에, Copy&Paste로 떡칠이 되기 시작하는 거죠.
마지막으로는 코딩스타일에서 올 수 있겠네요.
현재 제가 주로 작업하는 분야가 C언어를 사용한 임베디드 분야 (wipi등)쪽 인데,
판단문과 분기문이 수도 없이 떡칠되기 시작하면서, 소스가 주렁주렁 ㅎㅎㅎ
state머신이나 적절한(펑션포인터등 사용) 분기체계가 아닌,
switch-case, if-else 등으로 관성이 붙어버리는 거죠.
이상태에서 상용으로 소스는 릴리즈나가고 -_-;;;;;
대형 리팩토링 했다가는(이것도 안습) 되던 소스도 망가지고,
고객사에서는 최대한 손대지 말고 요거 하나만 고쳐달라고 하죠.
저희는 견디다 못해서....
고객사에서 version 2 만들자고 할때, 그쪽 목적은 기능개선, UI개편이었는데,
저희내부에서 아키텍처 부터 다시 잡아서 첨부터 다시 만들었습니다.
후우... 그나마 이제는 좀 살만해졌네요.
며칠전부터, 이 블로그를 처음부터 정주행하고 있는데,
오늘 정주행 완료하고 나니까, 현실적으로 와 닿는 얘기들이 왜이리 많은지요 ㅠㅠ
계속 분발해야겠습니다.
현실적 고민이 뭍어나오는 좋은 글들 감사합니다.
p.s. 3일에 걸쳐 블로그글을 다 읽고 났더니.. 진작에 신경쓸걸 하는 울컥한 마음에, 댓글이 횡설수설 합니다. 양해부탁드립니다.
하늘이아빠님 안녕하세요.
장문의 댓글을 남기셨네요.^^
결국은 "조삼모사"죠. 그런데, 아침에 4개 먹기를 원하는 개발자나 경영자가 너무 많죠. 아침에 4개 먹으면 저녁때 3개가 아니고 1개 먹기도 어려운 것이 현실입니다. 아침에 3개만 먹으면 저녁에 4개 아니고 7,8개를 먹을 수도 있습니다.
확실히 와닿네요!! 고객사별로 소스가 따로 노는데 그 소스 통채로 복사해와서 붙여넣고 다른 고객사 나갈 때 커스터마이징한 소스도 그대로 붙어서 나가지요~ 보고 있으면 숨이 꽉꽉 막힙니다~
두렁청해님 안녕하세요.
고객사별로 소스가 따로 노는 회사는 어느 순간 성장의 한계에 부딪히게 됩니다. 그 순간이 오면 이미 되돌릴 수 없는 상태가 된 겁니다.
몇개 부분에서 리팩터링을 해야할 필요성을 느낌에도 불구하고
계속 일에 치여서 다른 부분을 작성하다 보니 주렁주렁 늘어나는 코드를 보면서 눈물만 머금게 되는군요 ㅠ.ㅠ
음.. copy&paste문제는 아마도 설계상의 문제가 가장 크지 않을까 생각이 듭니다.
비슷한 기능이지만 약간의 다른 처리를 요구하는 함수가 발생할 때,
전용 함수로 만들면 간단하게 해결되는데
copy&paste하지 않기 위해서 두가지 기능을 하나로 합치다 보면 범용 함수가 되고
그렇게 되면 상당히 귀찮아 지니 말이죠. 물론 범용 함수가 좋고
여러개의 함수를 합쳐서 하나로 쓰는 것도 좋지만 대부분의 외각체크 루틴들은 거의 copy&paste 식으로
비슷비슷하게 쓰여지는데, 이 부분을 명확하게 처리할 방법이 없는거 같더라구요.
머.. 저의 프로그래밍 실력의 부족이 가장 큰 원인이겠죠 ㅠ.ㅠ
구차니님 안녕하세요.
범용함수란 그리 좋은 선택이 아니죠. 함수는 한가지 일만 하면서 간결하게 작성되어야 하죠. 그리고 리팩토링 시기를 놓치면 점점 혼란스러워지죠. 뭐든지 제때에 해야죠.
C&P 를 하고 향후에도 계속 C&P 를 하는 것이 과연 '개발자의 잘못' 으로 '해고되어야 마땅한' 일인지는.. 모르겠군요. 개발자 중 C&P 를 좋아서 하는 사람이 있을까요?
C&P 에 대해 이리저리 생각하면..
* 어찌 되었건 회사 입장에선 가장 빨리 답을 냈고 (해당 기능에 대해선 가장 빨리 답을 낼 가능성이 높습니다.)
* C&P 를 한 다음에 부정적 피드백이 바로 날라오는 것도 아닙니다. (CPD 나 simian 같은 것을 회사차원에서 daily test 로 돌리지도 않고) 매일 매일 다음 할 작업으로 로드가 걸린 개발자 입장에선 일종의 시간 벌기가 됩니다. 밑의 돌 빼서 위에 꽂기 같은.
* C&P 를 하는 당시에는 '이건 잠깐이고 언젠가 다시 리팩토링 할꺼야' 라 생각한 뒤, 실제로 리팩토링을 하지 않거나 하지 못하게 될 상황이 바로 닥치게 될 경우가 많습니다. 예전에 어떤 분 말씀처럼 '지금 당장 정리 하지 않으면 지는거다' 라고 강하게 생각하지 않고선 쉽지 않습니다.
* 코드리뷰의 경우 리뷰를 1주일 이내 단위로 자주 하는 것이 아닌 이상 C&P 가 고쳐질 것이라고는 생각치 않습니다. 리뷰의 주기가 길 경우, 이미 리뷰 받고 난 뒤엔 돌이킬 수 없게 되는 경우가 많습니다. 리뷰 중 자주 나오는 말 중 하나가 '이번엔 어쩔 수 없으니.. 다음번엔..' 일겁니다. 소 잃고는 외양간 고치려고 해봤자 고칠 맘은 안생깁니다.
안녕하세요. 질문도 답도 댓글에 다 포함되어 있군요.
개발자 중에는 C&P의 폐해를 모르고 마구 해대는 사람들도 많습니다. 이미 많은 고민을 하고 계시네요.