본문 바로가기

프로젝트

문서가 없으면 작은 프로젝트인 경우 문서를 거의 만들지 않고 개발을 하면 더 효율적이라고 생각할 수도 있다. 가끔은 그렇게 생각할 수도 있다. 너무 시간이 없다는 핑계를 대기도 한다. 하지만 이렇게 해서 모든 프로젝트에 문서가 거의 없으면 개선을 하려고 하는 회사에서 도움을 요청해도 막상 도와주기가 매우 어렵다. 문서가 거의 없어서 모든 것을 물어보면서 파악을 해야 한다. 있는 것이라고는 거의 쓸모 없는 문서와 소스코드인데 소스코드는 회사와 제품을 파악하는데 별 도움이 안된다. 문서가 제대로 있다면 80%는 문서를 보고 20%만 물어 보면 된다. 이때 개발을 하고 나서 나중에 만드는 문서는 그 효율성이 반으로 줄어든다. 나중에 만드므로 일단 충실도가 떨어지고 개발하기 전에 만들때 고려해야 할 요소들은 프로젝트가 이미 .. 더보기
경영진이 너무 촉박한 일정을 제시합니다. 나는 프로젝트 일정에 대해서 항상 "일정은 개발자가 산정해야 한다"고 얘기를 해왔다. 그런데 많은 개발자들과 얘기를 해보면 자신들은 도저히 그렇게 할 수 있는 상황이 아니라고 한다. 일정은 위에서 확정이 되어서 내려오기 때문에 개발자가 정할 수 없다고 한다. 또한 항상 촉박한 일정을 지시하기 때문에 스펙이나 설계는 작성할 수도 없고 코딩부터 한다고 한다. 자신들도 체계적으로 개발을 하고 싶지만 도저히 그럴 시간이 없다고 한다. 경영진이 일정을 제시하는 것과 개발자가 일정을 산정하는 것은 완전히 상반된 얘기가 아니다. 경영진은 어떤 프로젝트를 진행하기 위해서는 일정이 필요하다. 경영진이 일정을 정했다고 해서 불가능한 일정이 가능해지는 것은 아니다. 프로젝트는 들어가야 할 시간은 다 들어간다. 자칫 서두르다.. 더보기
해외에 소프트웨어를 팔려면 이것이 꼭 필요하다. 연초에 소프트웨어의 국제화와 지역화를 언급하면서 조만간 이에 대한 글을 올리겠다고 했는데, 벌써 10개월이 지났네요. 2010/02/11 - [소프트웨어이야기] - 애플은 한국어와 한글을 구분하지 못한다? 그래서 간단하게 정리를 해보려고 합니다. 일단 다음의 기본 용어는 알아두는 것이 좋습니다. i18n(internationalization) - 국제화를 말하며 i와 n사이에 18개의 알파벳이 있어서 i18n으로 줄여말합니다. 소프트웨어가 여러 언어(locale)를 지원하기 용이한 형태로 만드는 것을 말합니다. i가 소문자인 이유는 알파벳엘(l) 또는 숫자일(1)과 혼동되기 때문입니다. L10n(localization) - 지역화를 말하며 l과 n사이에 10개의 알파벳이 있어서 L10n으로 줄여말합니다... 더보기
애플이 아이폰4에서 한글을 바꾼 이유는... 얼마전 아래와 같은 아이폰의 Localization에 대한 글을 올린적이 있습니다. 2010/02/11 - [소프트웨어이야기] - 애플은 한국어와 한글을 구분하지 못한다? 심각한 내용은 아니었고, 아이폰의 다국어 설정 화면에서 우리말을 선택하는 항목이 "한국어"라고 적혀 있어야 하는데 "한글"이라고 적인 것에 대한 포스트였습니다. 그뒤로 'Localization(L10n)과 Internationalization(i18n)에 대한 글을 한번 작성해야 지'하고 마음만 먹고 있었는데 너무 바빠서 블로그에 글 자체를 자주 못올리고 있습니다. 그런차에 아이폰을 iOS4.0으로 업그레이하니 제 블로그의 글 때문은 절대로 아니겠지만(^^), 아이폰의 다국어 설정 화면에서 "우리말"을 지칭한 항목이 "한국어"로 바뀌었.. 더보기
개발문서를 만들기는 했는데 업데이트가 안되는 이유 필자는 여러 소프트웨어 회사들의 컨설팅을 진행하면서 먼저 회사의 분석을 위해서 그 동안 소프트웨어를 개발하면서 만들어 놓은 문서를 요구합니다. 사실 문서만 봐도 회사의 개발현황을 대부분 알 수 있습니다. 그런데, 제대로 작성된 문서를 제시하는 회사는 거의 없다시피 합니다. 물론 Wiki나 Google Docs등의 온라인 문서를 포함해서 제대로 작성된 문서는 거의 없습니다. 가끔 문서를 제시하는 회사들이 있기는 하나 수년간 전혀 업데이트를 하지 않아서 쓸모가 없어진 것들 뿐입니다. 정리를 해보면 다음과 같습니다. 문서가 아예 없거나 없다시피 한 회사 몇 년동안 업데이트 안된 문서들만 있는 회사 (오늘의 주제) 쓸모없는 문서들을 너무 많이 만든 회사 야심차게 문서 한번 잘 만들어보겠다고 결심하고 개발 시에 .. 더보기
애플은 한국어와 한글을 구분하지 못한다? 아이폰을 사용하기 시작한지 오늘로 꼭 2달이 되었습니다. 2달동안 아이폰을 사용하는 재미, 아이폰 앱 개발 관련 공부하는 재미에 빠져있었습니다. 그런데, 아이폰 다국어 설정에서 이상한 것을 발견했습니다. 언어어 설정에 떡하니 "한글"이라고 나와 있는 겁니다. 대부분의 사람들은 그냥 지나쳤겠지만, 저야 소프트웨어 전문가이고 Localization의 중요성을 알고 있는터라서 눈에 확 거슬리더군요. 아시는 분들도 많겠지만, 여기에는 "한글"이 아니고 "한국어"라고 나와야 맞습니다. 그럼 "한글"과 "한국어"가 다른지 알아보겠습니다. "한국어"는 몇 천년전부터 조상 대대로 사용해 오던 우리 말입니다. "한글"은 1443년 세종대왕께서 만드신 자랑스러운 우리 고유의 문자체계입니다. 한글이라는 이름도 1910년 주.. 더보기
SRS에 대한 인식의 변화 그 동안 본 블로그를 통해서 소프트웨어 개발에서 SRS(Software Requirements Specification)가 얼마나 중요한 역할을 하는지에 대해서 수 차례 역설한 적이 있습니다. 2009/08/03 - [프로젝트/요구사항분석] - 이건 기능이 아닌데 2009/07/30 - [프로젝트/요구사항분석] - 고객이 요구사항을 너무 자주 바꿔요. 2009/05/04 - [프로젝트/요구사항분석] - Track me, if you can 2009/04/22 - [프로젝트/요구사항분석] - 개발자들이 바글바글한 외딴섬에 떨어진다면 2009/02/12 - [프로젝트/요구사항분석] - 요구사항 분석의 출발점 2009/02/04 - [개발프로세스] - 소프트웨어 개발 단계에서 가장 중요하다고 생각하는 것은? .. 더보기
회의 때문에 일할 시간이 없다. 경영자들은 "우리는 업무 공유가 안돼. 커뮤니케이션이 안돼" 라고 하면서 물리적으로 소통을 증가시키는 방법을 찾곤 합니다. 억지로 회의를 가지게 하고, 영업팀과 개발팀을 옆에 붙여 놓거나, 회사의 파티션의 높이를 낮추는 등의 조치를 취하기도 합니다. 회의시간을 늘인다고, 옆에 있다고 커뮤니케이션이 잘되지는 않습니다. 오히려 잦은 회의는 업무시간만 줄어들고 성격이 다른 부서들이 서로 뭉쳐 있으면 소음 때문에 개발에 방해만 됩니다. 커뮤니케이션은 적절한 프로세스와 시스템을 통해서 해결해야 합니다. 스펙을 작성하고 리뷰할 줄도 모르는데 제품이 어떻게 만들어지고 있는지 공유가 안된다고 한탄할 수는 없습니다. 프로젝트 관리 시스템이 있다면 회사의 모든 사람들이 프로젝트 진행과정을 물어보지 않아도 훤히 알 수 있습.. 더보기
이건 기능이 아닌데 의례 스펙, 기능요구사항 등을 정리한 문서를 보면 기능만 잔뜩 나열되어 있는 것은 매우 흔한 일입니다. 소프트웨어를 만든다고 하면 구현해야 할 기능만 알면 제대로 잘 만들 수 있을 것으로 생각하기 십상입니다. 상식적으로 생각해도 기능면 제대로 구현하면 되겠지요. 여기에 UI는 살짝 추가하고요. 하지만, 분석을 할 때 기능보다 더 중요한 것이 비기능 요구사항입니다. 즉, 기능은 아닌데, 요구사항 즉, 스펙인 겁니다. 기능이 중요하기는 하지만, 기능 하나가 잘못되면 이를 고치는 것은 그렇게 어렵지 않습니다. 그런데 비기능에서 잘못되면 소프트웨어를 완전히 뒤엎어야 하는 일이 발생할 수도 있습니다. 이렇듯 비기능이 기능보다도 더 중요한 측면이 있는데, 눈에 바로 보이지 않는 다는 이유로 간과되기 쉽습니다. 그럼.. 더보기
Copy & Paste의 종말 직업상 다른 개발자들이 작성해 놓은 코드를 볼 기회가 정말 많습니다. 그러다보면 자주 접하는 것이 복사된 코드들입니다. 소소코드 Copy & Paste는 개발자의 대단히 큰 잘못입니다. 즉, 소스코드를 복사해 놓는 것은 쉽지만 그로 인해서 지속적으로 회사와 후배들이 부담을 져야 하기 때문입니다. 즉, 회사의 생산성을 갉아 먹는 행동입니다. 그런 개발자는 해고가 되어야 마땅하지요. 한쪽 제품이나 컴포넌트에서 사용한 함수나 소스코드들을 복사해 와서 다른 제품이나 컴포넌트에서 사용하는 것입니다. 동일하게 그대로 사용하는 경우도 있고, 약간 수정해서 사용하는 경우도 있습니다. 이런 일이 반복되다보면 비슷한 코드들이 회사의 전체 소스코드 중에서 여기 저기 산재하게 됩니다. 그러다가 버그가 발생하는 그중 일부는 고.. 더보기