본문 바로가기

R&D/소프트웨어 개발 이야기

(16)
SW컨설턴트의 개발이야기, 여섯번째.왜 나만의 방법이 실패하는지? (NIH 신드롬) NIH(Not invented here) 신드롬이란? 카츠와 알렌(Katz & Allen)은 기업연구에서 “선진 기업의 연구조직은 흔히 자신들이 직접 개발하지 않은 기술이나 연구 성과에 대해 배타적 성향으로 보인다”고 주장하며 이러한 현상을 NIH 신드롬이라고 정의했다. 소프트웨어를 개발하는데 있어서도 NIH신드롬과 유사한 현상이 많이 발생합니다. 개발하는데 필요한 라이브러리나 개발 방법, 개발툴들을 모두 입맛에 맞게 직접 만들어서 쓰는 경우를 말하는 겁니다. 우리나라의 개발자들이나 소프트웨어 회사들은 특히나 더 자신만의 방법들을 선호하는 경향이 있는 것으로 생각됩니다. 여러가지가 이유가 있겠지만 몇가지만 나열해보면 다음과 같습니다. 라이브러리를 구매하는 비용을 비싸다고 생각한다. 특히나 회사에서 개발에..
SW컨설턴트의 개발이야기, 다섯번째.매일 불난 호떡집 같은 회사 (중요한 일 vs. 시급한 일) 필자가 컨설팅을 진행했던 수많은 회사들 중에서 80% 이상은 불난 호떡집처럼 매일 불끄느라고 정신이 없습니다. 너무 바빠서 새로운 기술을 연구할 시간도 없다고 한다. 프로젝트를 진행할 때도 가장 빠른 방법으로 문서도 작성하지 않고 가장 뛰어난 개발자가 바로 코딩부터 한다고 한다. 고객들은 기다려주지 않기 때문에 요구하자마자 바로 며칠 안에 제품에 기능을 반영해야 한다고 한다. 제품에 버그가 발견되면 하루 이틀 안에 버그를 수정해줘야 한다. 그렇지 않으면 고객들이 엄청나게 컴플레인을 한다. 사소한 버그 수정도 빨리 해야 하기 때문에 신입 개발자들에게는 시킬 수가 없다. 고참 개발자가 2시간이면 고칠 것을 신입 개발자를 시키면 2일이 걸릴 뿐더러 고참 개발자가 신입 개발자에게 일을 시키고 검토해주는데 2시간..
SW컨설턴트의 개발이야기, 네번째. Google을 이끄는 힘 아이디어 내면 "네가 한번 만들어봐" 소프트웨어 업계만큼 아이디어가 넘치는 곳도 찾기 어렵습니다. Google이 탄생하게 만든 힘도 아이디어이고, Google이 지속 성장하여 지금이 Google이 된 힘도 아이디어입니다. Google에서는 업무시간의 20%는 새로운 아이디어를 생각하거나 준비하는데 사용할 수 있고 좋은 아이디어만 있다면 얼마든지 시도해 볼 수 있습니다. Google이 풍족하기 때문에 그렇게 할 수 있다고 말하는 사람들도 있지만, 이는 닭이 먼저냐? 달걀이 먼저냐?의 이슈입니다. 소프트웨어 업계에 종사하고 있는 사람이라면 항상 새로운 아이디어에 대해서 고민하기 마련입니다. 하지만, 좋은 아이디어를 내면 "네가 한번 만들어봐"라고 하는 경우가 많습니다. 또는 "뜬구름 잡고 있네"라고 하는 경..
SW컨설턴트의 개발이야기, 세번째. 지식을 공유하는 자리' 내부 세미나' 소프트웨어를 개발하는 회사라면 당연히 갖추고 있어야 할 개발 문화는 여러가지가 있지요. Peer Review, Sharing, 규칙 준수 ... 이 중에서 좋은 문화 중의 하나가 일상화된 내부세미나입니다. 유수의 소프트웨어 회사들을 보면 회사에 늘상 세미나 공지가 있습니다. 누구나 세미나를 진행할 수 있고, 대부분 직원들이 관심을 가질 만한 주제들이고, 누구나 부담없이 참여를 합니다. 오다가다 들려서 보기도 하고, 관심이 많으면 준비를 해와서 발표자와 토론도 하기도 하기도 합니다. 누가 시켜서 의무적으로 하는 세미나는 아니지요. 그러한 과정에서 발표자에게도 지식을 더욱 깊고 굳건히 할 수 있는 기회가 되고, 참가자는 새로운 지식을 쉽게 익힐 수 있는 기회가 되고, 회사는 항상 연구하고 새로운 기술을 추구..
SW컨설턴트의 개발이야기, 두번째. 신입 개발자가 들어오면 어떻게 하시나요? 신입 개발자가 들어오면 어떻게 하시나요? 회사에서 소프트웨어를 개발하기 위해서는 많은 것을 알아야 함에도 불구하고 딱히 가르칠게 별로 없는 경우를 많이 보았습니다. 체계적인 교육 방법도 마땅치 않고요. 어떻게 신인 개발자를 가르치고 있는지 제가 아는대로 한번 나열을 해보죠. - 멘토(사수)를 지정해서 맨투맨으로 이거 저거 생각나는 대로 알려준다. - 회사에 문서는 정말로 많다. 책꽂이로 한 벽 가득이다. 그 중에서 뭘 보라고해야 할지 잘 모르겠다. - 제품에 관한 변변한 문서가 하나도 없다. 있다 하더라도 부실하거나 옛날 버전이다. 그래서 말로 아는대로 설명해준다. -개발하는 제품의 메뉴얼을 보여주고 제품의 기능을 익히게 한다. -일단 일을 시키고 본다. 물어보는 것이 있으면 그때 그때 알려준다. -소스..
SW컨설턴트의 개발이야기, 첫번째. 닭이 먼저일까? 달걀이 먼저일까? 소프트웨어 공학은 가르칠 수 없다고 합니다. 단지, 시행착오를 통해서 배우던지, 경험자에게 배우는 방법 밖에 없다고 합니다. 그래서 소프트웨어를 잘 개발하는 방법을 배우는 가장 좋은 방법은 잘 되어 있는 소프트웨어 회사에 들어가서 배우는 것입니다. 잘 되어 있는 회사에서 소프트웨어를 개발하다 보면 자연스럽게 몸에 익히게 되는 겁니다. 소프트웨어 개발이 전체적으로 어떻게 돌아가는지 자연스럽게 몸에 익히게 되며, 각 기능 조직은 어떻게 구분이 되며, 개발에 꼭 필요한 기반 시스템은 어떤 것들이 있으며 어떻게 사용하는지 배우게 됩니다. 따로 공부한다는 생각으로 배우는 것이 아니며 자연스럽게 몸에 익게 됩니다. 그런데 우리의 문제는 여기에 있습니다. 잘 되어 있는 소프트웨어 회사가 별로 없다는 겁니다. 제 컨설..