본문 바로가기

분류 전체보기

코드리뷰 정착이 어려운 이유 코드리뷰는 소프트웨어를 개발하는데 있어서 가장 좋은 문화중의 하나이지만 또한 가장 정착시키기 어려운 것 중의 하나입니다. 코드리뷰를 도입하거나 정착하기 어려운 이유는 다음과 같습니다. 공개적으로 망신을 당하거나 자신을 비판하는 것에 대한 두려움 과거의 부정적인 코드리뷰에 대한 경험 자신이 실력이나 약점이 드러나서 평가가 나빠질 것에 대한 두려움 자신의 코드는 완벽하다는 밑도 끝도 없는 확신 및 자신에 대한 너그러움 코드리뷰가 개발 일정을 지연시킨다는 생각 코드리뷰보다는 테스트가 더 효율적이라는 믿음 남을 비평하거나 비평 받는 것을 싫어하는 문화 실제로 준비 없이 코드 리뷰를 시행하면 위와 같은 모든 일이 일어나서 개발자들의 거부감을 불러 일으키게 됩니다. 주기적으로 시간을 정해놓고 끝장 코드리뷰를 하고 .. 더보기
소스코드가 그렇게 중요한가요? 소스코드를 신주단지 모시듯 하는 회사나 개발자들을 자주 볼 수 있습니다. 소스코드가 자신들의 모든 기술이 함축된 집합체라고 생각들을 합니다. 저는 이런 회사나 개발자들 딱 접하는 순간 그 수준을 한번에 알 수 있습니다. 다른 것들은 별로 물어볼 필요도 없이 그로 인해서 회사가 어떤 식으로 개발을 하고 있다는 것을 쉽게 짐작할 수 있습니다. 그러한 회사들은 소스코드를 개발자를 제외한 다른 직원들은 접근하지 못하도록 하기 위해서 보안장치를 두고 개발자는 자신이 작성한 소스코드를 공유하기 꺼려하기도 합니다. 개발의 내용은 SRS나 설계서에 포함되어 있기보다는 그냥 코드에 숨어 있어서 이를 작성한 사람이 아니면 전체를 파악하기 정말 어렵습니다. 해당 개발자가 아니면 유지보수가 어렵고 신입사원이 들어와도 공유가 .. 더보기
소프트웨어 개발자의 권리 지난번 글에서 소프트웨어 개발자윤리(의무)에 대해서 얘기를 한 적이 있습니다. 그때 많은 분들이 개발자의 권리도 좀 생각해보자고 하였습니다. 이에 개발자의 권리와 개발자에 대한 경영자와 고객의 의무를 정리해 봤습니다. 의견이 있는 분들은 댓글 남겨주세요. 개발자의 권리 ○ 우리도 남들 잘 때 잘 수 있다. ○ 우리도 희망적인 미래를 꿈꿀 수 있다. ○ 우리도 가족과 저녁식사를 할 수 있다. ○ 나이가 먹어도 계속 개발을 할 수 있다. ○ 전문가로 성장할 수 있는 기회를 제공 받아야 한다. ○ 우리에게는 자기계발을 할 수 있는 시간과 기회가 제공되어야 한다. 개발자에 대한 경영자의 의무 ○ 개발자를 부품이 아닌 전문가로 생각해야 한다. ○ 개발자에게 최상의 개발 환경을 제공해야 한다. ○ 개발자에게 적절.. 더보기
자기 중심적인 사고에 갇힌 개발자 개발자들은 모든 생각의 중심을 본인으로 생각하는 경우가 흔합니다. 소프트웨어를 개발하면 모든 판단의 기준을 본인으로 하는 것이지요. 우주가 자신을 중심으로 돌고 있다고 생각하는 개발자들입니다. 적용하는 기술도 본인이 잘 알고 익숙한 것으로, 또 사업적인 관점으로 고려를 하기보다는 본인의 취향에 따라서 섯부른 판단을 하는 경우가 많습니다. 특히나 이렇게 자기 중심적인 사고방식에 꽉 막혀 있는 개발자들과는 대화조차 어려운 경우가 많습니다. 보통 고집도 센 것이 아니어서 같이 일하기 피곤합니다. 이런 개발자들이 실력이 뛰어난 것처럼 보여서 어쩔 수 없이 붙들어 두고 있는 경우가 많은데 일찌감치 팀에서 제외를 하던가 해고를 하는 것이 더 나을 겁니다. 소프트웨어를 개발하면서 벌어지는 수많은 판단과 결정은 이렇게.. 더보기
소스코드관리 상세 조사 결과 리포트 지난번 소스코드관리 방법 조사 후 좀더 상세하게 각 회사나 개발팀이 소스코드를 관리하면서 어떤 방법들을 사용하는지 즉 그 성숙도를 알아보기 위해서 약 2주에 걸쳐서 2차 조시를 실시했습니다. 질문항목이 26개나 되는 상당히 긴 투표였지만, 많은 분들이 응해주셔서 나름대로 의미있는 수치를 얻을 수 있었습니다. 투표에 참여해주신 모든 분께 감사드립니다. 투표위젯에 참 참여자 수를 보는 방법이 없어서 가장 많은 득표를 한 항목으로 미루어 짐작해서 35명이 투표에 참여한 것으로 생각하고 있습니다. 질문은 다음과 같았습니다. 각 항목별로 총 득표수는 다음과 같습니다. 아래 조사는 소스코드관리시스템을 사용하는 회사를 기준으로 계산을 할 것이므로 1번 항목은 100%입니다. 그럼 각 항목 별로 분석을 해보도록 하겠습.. 더보기
몇억짜리 툴은 쉽게 사면서 더 좋은 공짜툴은 제대로 쓸 줄 모른다. 주변의 회사들을 보면 몇 억짜리 툴을 사서 활용도 제대로 못하는 경우를 정말 많이 봤습니다. 제가 이전에 올린 글을 보면 소프트웨어를 개발하는데 있어서 그 팀의 성숙도에 따라서 무엇을 우선 도입해야 하고 무엇은 좀더 성숙도가 높아진 다음에 도입해야 하는지 설명한 적이 있습니다. 이중에서 가장 중요한 소스코드관리시스템과 버그관리시스템은 좋은 무료 툴들이 정말 많습니다. 하지만 이러한 무료 툴조차 쓰지 않거나 쓰더라도 아주 기초적인 기능만 사용을 하고 제대로 활용을 못하면서 정작 문제를 엉뚱한 곳에서 찾으려고 합니다. 그래서 비싼 툴을 팔고 있는 영업사원들에게 현혹되어서 몸에 걸맞지 않은 액세서리를 걸치듯 효용성도 떨어지는 툴을 사놓고 제대로 활용 못하는 경우가 많습니다. 쓰다 보면 그리 좋지 않다는 것을 .. 더보기
짝퉁 고수 이 바닥은 이상하리만치 짝퉁 고수들이 많습니다. 자신이 대한민국에서 무슨 기술이 제일 뛰어나다고 소개하는 사람을 종종 만나는데, 대한민국를 개발자 다 만나봤나 반문하고 싶습니다. 또 조금 사용해봤거나 심지어는 어디서 단어만 들어봤어도 그건 아는 거다라고 얘기하는 사람이 정말로 많습니다. 컨설팅을 하면서 개발자들의 정확한 수준을 파악하기 위해서 기술력 조사를 하는데, 자신이 전문가라고 한 항목에 대해서 beginner라도 알 수 있는 내용을 물어봐도 모르는 경우는 허다하더군요. 수많은 사람들이 자신이 고수라고 허위광고를 하고 다니는 이유는 사람들을 속이기 쉽기 때문입니다. 알맹이는 없는 표면적인 지식을 가지고 사람들을 현혹하면 더 많은 연봉을 받을 수도 있고, 더 좋은 프로젝트를 낚아챌 수도 있습니다. 하.. 더보기
좋은 PM은 훌륭한 리스크 관리자 프로젝트에서 가장 중요한 활동 중에 하나가 리스크 관리입니다. 프로젝트 실패의 원인의 대부분이 리스크 관리를 하지 않거나 하더라도 부실하게 하는 데 있습니다. 성공하는 프로젝트관리자는 우수한 리스크 관리자입니다. 성공하는 프로젝트는 대부분 성공 가능한 범위 및 일정을 가지고 리스크를 잘 관리한 프로젝트입니다. 반면, 성공 가능한 범위 및 일정을 가지고 시작한 프로젝트라도 리스크 관리에 거의 신경을 쓰지 않으면 예상치 못한 돌발 변수에 프로젝트는 실패하기 쉽습니다. 프로젝트 리스크 관리를 하다 보면 소프트웨어 프로젝트는 정말 가시밭길을 걷고 있다는 생각이 듭니다. 웬만한 크기의 프로젝트에서 리스크 수십 개를 찾아내기란 그리 어렵지 않기 때문입니다. 하지만 미리 발견되고 관리되는 리스크들은 그 위험을 현저히.. 더보기
사라진 소스코드 바이너리는 있는데 소스코드는 없어서 낭패를 보신 적은 없으신가요? 소스코드 백업은 흔히 소홀히 하기 쉽습니다. 사고가 발생한 후에야 문제가 되고, 사고가 그렇게 자주 발생하는 것은 아니죠. 자주 발생하지는 않지만, 일단 발생하는 타격이 아주 큽니다. 일상 생활에서는 보험을 들지만, 소프트웨어를 개발하는 현장에서는 보험을 드는 격인 백업을 제대로 하는 경우는 흔히 보기 어렵습니다. 소스코드는 이러한 경우에 흔히 사라지거나 깨지게 됩니다. 이 때 백업이 없으면 낭패가 됩니다. HDD는 그리 드물지 않게 깨집니다. 그냥 운영 중에 HDD가 깨져버리는 경험은 많이들 있을 겁니다. 장비를 사무실 내에서 옮기거나, 회사가 이사를 갈 때는 HDD가 깨지는 경우가 더 흔합니다. 컴퓨터바이러스 등의 악성 코드에 의해서 .. 더보기
Merge Tool(머지툴) 비교 - (3way merge 기능) - 수정 소프트웨어를 개발하다 보면 소스코드의 브랜치가 일어나고 이를 Merge(머지)하는 일은 피하기가 어렵습니다. 이 Merge(머지)과정을 자동화 툴을 이용하면 상당히 많은 시간을 절약할 수 있습니다. 특히 Merge의 자동화를 위해서는 3way-Merge가 필수적인데, 시중에서 3way머지가 지원된다고 하는 툴 4가지와 SVN에서 지원하는 Unified diff, 이렇게 총 5가지를 비교해봤습니다. 그 결과는 아래와 같이 평가를 하였습니다. KDiff3, P4Merge와 Araxis Merge가 우수하게 나왔습니다. 2way merge툴은 같은 레벨에서 비교 대상이 되지 않기 때문에 비교하지 않았습니다. 2way merge툴보다는 꼭 3way merge툴을 쓰기를 권장합니다. 3way merge툴은 실무에.. 더보기