태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

해외 진출하는 족족 실패하는 이유

2012/08/09 02:42 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed




대한민국 이름을 걸고 해외에서 크게 성공한 Software가 없는 것은 안타까운 일이 아닐 수 없다. 내가 아는 한 그런 Software가 없다. 그런 Software가 있다면 알려주기 바란다.

게임 등 일부 분야에서는 성공 사례가 있지만 일부 특수 분야의 일이다.


그렇게 실패하는 이유는 여러가지가 있겠지만 내가 보는 가장 큰 이유는 소프트웨어를 개발하는 기초 역량이 부족해서이다.


누구는 해외 문화를 이해하지 못했다고 하기도 하고, 영업을 잘 못했다고도 하지만 가장 큰 이유는 개발 역량의 차이이다.


국내에서 개발했던 주먹구구의 방식이 해외에서도 그대로 먹힐 것이라고 생각하는 것은 큰 착각이다.


국내에서 성공했던 대부분의 회사들의 성공요인은 국내에서만 먹히는 서비스 전략 때문이었다. 대충 만들어 놓고 고객이 불만을 표시하면 무한 감동 서비스를 제공하는 것이 그것이다. 많은 회사들이 이 전략을 사용해서 국내에서는 성공을 했다.


작은 땅덩어리에서는 고객이 부르면 언제든지 달려갈 수 있지만, 시장이 세계로 넓어지면 그런 고객 감동 서비스는 꿈도 꿀 수 없는 일이 된다. 고객이 부르면 비행기 타고 날아가고 호텔에서 숙박을 해야 하기 때문에 비용과 시간이 너무 많이 들어간다.


해외에서 성공하려면 진짜로 제대로 개발을 해야 한다. 고객이 해달라는대로 개발하는 것이 아니고 제대로 전략을 세워서 제품 기획을 하고 분석/설계를 해서 개발을 해야 한다. 또, i18n Technology(국제화 기술)도 제대로 적용해야 하는데 99%의 회사는 나름대로 방식으로 또 엉터리를 만들어서 적용하기 때문에 해외에서 대패를 하게 된다.


이런 것을 모두 갖추어야 비로소 비슷한 출발선상에서 경쟁을 시작하는 것인데, 국내에서 하던 방법대로 해외서 성공하려고 하는 것은 100m 달리기에서 20~30m 뒤에서 출발하는 것과 다를 바가 없다.


근본적인 역량을 되돌아볼 때이다.


Image by bettlebrox

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

전규현 프로젝트/국제화 국제화

Trackback Address: http://allofsoftware.net/trackback/269 관련글 쓰기
  1. Blog Icon
    지나가다

    제가 아는 성공사례(?) 너무 작은 성공인가요? ㅎㅎ

    http://download.cnet.com/EditPlus/3000-2352_4-10018241.html?tag=mncol;1

  2. 나름 훌륭한 제품이고 반응도 좋은 것 같습니다. 제품의 크기가 혼자 개발이 가능할 정도로 충분히 작아서 큰 문제 없이 개발할 수 있을 것 같습니다. 좋은 제품은 틀림 없으나 Global한 성공을 논하기에는 좀 작아보입니다. 그래도 이런 작은 성공이 많았으면 좋겠습니다.

소프트웨어 개발자의 나아갈 길

2012/08/06 05:16 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed





소프트웨어 개발자의 경력이 제대로 보장 받지 못하는 가장 큰 이유는 회사, 사회, 문화의 문제 때문이다. 그렇다고 개발자 된 입장에서 회사가 바뀌고 사회가 바뀌기만을 기다릴 수는 없다. 이는 마치 닭과 달걀의 관계처럼 누가 먼저인지 알기 어렵다. 어느 한쪽이 먼저 깨끗하게 해결되면 자연스럽게 전체가 해결되지만 그걸 기대하기는 현실적으로 어렵다. 경영자도 회사가 살아남고 경쟁력을 키우기 위해서는 바뀌어야 하지만 개발자도 뭔가 대책을 수립해야 한다.


주변에 좋은 롤모델이 없는 개발자들은 자신의 개발자로서의 경력을 보장 받고 더 뛰어난 개발자가 되기 위해서 어떻게 해야 하는지 알아내기가 정말 어렵다. 그냥 상황이 주어진 대로 열심히 할 뿐이다. 그러다 보면 정치적으로 밀리고 실력에서도 뒤쳐져서 최악의 상황이 되곤 한다. 단지 열심히 밤새워 일했을 뿐이데 결과는 그리 좋지 않고 미래는 더움 암울하다.


그렇다면 쉽지 않은 일이지만 개발자가 어떻게 해야 하는지 알아보자. 물론, 소프트웨어 개발자의 종류가 너무 많고 OS Kernel 개발자 등 특수분야의 개발자들은 특성이 매우 독특해서 여기에 해당이 되지 않을 수도 있지만, 대부분의 개발자에게는 해당하는 얘기일 것이다.


첫째, 관리와 개발 일을 분리하라.


관리자가 될 것이 아니라면 관리 일은 아무리 열심히 해도 개발자 경력에 별 도움이 안된다. 하지만 회사의 사정상 싫어도 관리 일을 떠맡을 수 밖에 없는 경우가 있다. 그런 경우에도 본인의 정체성을 명확히 해야 한다. 개발과 관리 일을 섞어서 하지 말고 구분해야 한다. 즉, 자신이 하고 있는 일 중에서 어떤 일이 관리고 어떤 일이 개발인지를 구분해야 한다. 물론 모호한 경우도 있다. 여기서 개발이 주업이고 관리는 부업임을 명확히 해야 하고, 언제든지 관리 일은 버릴 수 있도록 준비를 해야 한다.


경영자에게도 개발자가 관리일 때문에 부담이 되고 효과적이지 않다는 것을 알려라. 많은 경영자들이 그 사실을 잘 모르고 있기 때문에 자주 세뇌를 시켜야 한다. 그럼으로써 관리 일은 점점 최소화를 시켜나가야 한다.


보고서 작성, 경영회의 참석, 팀원 관리, 일정관리, 고객 접점 업무 등은 거의 관리 일이므로 최소화 노력을 해야 한다.


둘째, 경력과 수준에 맞는 일을 해라.


경력이 많아지면 그게 걸맞는 수준의 일들을 해야 한다. 경력이 늘어가도 똑같은 일을 그저 더 빠르고 능숙하게 하고 있다면 밥값을 못하고 있을 가능성이 높다. 그런 상태라면 개발자 경력을 오래 보장 받기는 어렵다. 결국 도태될 것이다.


경력이 늘어갈수록 누구나 할 수 있는 일들은 후배에게 물려 주어야 한다. 그리고는 설계, 분석 업무의 비중을 높이고 회사의 기술 전략에 신경을 써야 한다. 경력이 더욱 늘어갈수록 자신의 팀 뿐만 아니라 타팀, 더 나아가서 회사 전체의 프로젝트에 기여를 해야 한다.


그러기 위해서 문서화는 필수다. 개발 내용이 문서로 적혀 있어야 서로 리뷰가 가능하고 타팀의 프로젝트도 검토를 해서 나의 전문지식을 불어 넣을 수가 있다. 물론 내 프로젝트도 문서화를 해야 다른 사람들의 도움을 받을 수 있다. 문서화 되지 않은 내용은 뇌를 꺼내서 리뷰할 수는 없다. 아무리 빨리 개발한다고 해도 리뷰 없이 개발되는 프로젝트는 주먹구구로 개발이 되는 것이고 아주 작은 프로젝트이거나 아주 재수가 좋은 경우를 빼고는 폭탄을 안고 있는 것과 같다. 이런 주먹구구식 개발은 대부분 첫번째 프로젝트부터 더 오래 걸리고, 시간이 지날수록 점점 비효율적으로 된다.


그런 주먹구구 환경에서는 개발자가 경력에 맞는 수준의 일을 할 수 없다.


셋째, 권력욕을 버려라.


상황에 따라서 매우 어려울 수 있다. 특히 대기업인 경우 더욱 그렇다. 조직에서 권력을 얻어야 제대로 대우를 받을 수 있다면 이를 뿌리치기는 어렵다. 이런 경우는 차라리 개발자로서의 경력은 포기하는 것이 나은 판단일지도 모른다. 개발자로서 계속 나아가겠다고 결심을 했다면 어쨌든 권력욕은 버려야 한다. 권력을 얻기 위한 거의 모든 행동은 개발 일과는 거의 관계가 없다. 방해만 될 뿐이다.


개발자는 권력보다는 뛰어난 기술력에서 자연스럽게 나오는 파워를 가져야 한다. 물론 조직 문화가 이를 받아들이지 않는 경우도 많이 봐왔기 때문에 쉽지 않은 일임을 잘 알고 있다. 그렇다고 권력을 쫓아서는 개발자의 길과는 멀어질 것이다.


넷째, 끊임 없이 코딩하라.


개발자는 30년을 일해도 감독, 코치가 아니라 선수다. 코딩에서 손을 놓으면 급속도로 개발자의 길과 멀어진다. 주변을 보면 관리나 좀 하고 코딩은 전혀 안하면서 여기저기 감 놔라 대추 놔라 훈수를 두는 무늬만 개발자가 매우 많다. 이들은 개발자가 아니고 개발자였을 때 쌓아 놓은 지식의 약발도 별로 오래 가지 않는다.


물론 경력이 늘어 갈수록 코딩 시간은 줄어들 것이다. 하지만 여전히 코딩은 계속 해야 한다.


다섯째, 새로운 기술을 익혀라.


개발자라면 좋아하는 기술 몇 가지만 평생 써먹기 어렵다. 꾸준히 새로운 기술을 익혀야 한다. 시간이 흐를수록 점점 더 많은 새로운 기술들이 나오고 있다. 이를 따라잡기는 보통 어려운 일이 아니다. 그래서 개발자들이 다른데 신경 쓸 시간이 어디 있겠는가? 그렇다고 모든 새로운 기술을 익히는 것은 불가능하다.


어떤 기술은 용어 정도만 익히기 위해서 10분 정도 투자를 하고, 어떤 기술은 1시간 정도 투자를 해서 뭔지 돌려봐야 하는 것도 있다. 또 어떤 기술은 하루를 투자해서 샘플을 만들어 봐야 하는 기술도 있다. 이를 잘 구분해서 적절하게 시간 투자를 해야 한다. 모든 기술을 다 마스터 할 필요는 없다. 나중에 필요할 때 언제든지 생각이 나게 하면 된다. 필요할 때 필요한 만큼 더 익히면 된다.


오랫동안 써왔던 기술만 고집하면 한계에 다다른다.


여섯째, 소프트웨어 개발 전문가로 포지셔닝을 하라.


본인의 정체성을 명확히 하라. 경영자가 본인을 소프트웨어 전문가로 믿도록 하라. 경영자가 기술 전략을 같이 의논하게 하고 기술 관련된 정책을 제대로 수립할 수 있도록 보좌하라. 만능인 것처럼 행세하는 것은 효과적이지도 않고 신뢰도 떨어진다. 개발이 아닌 일은 다른 사람들이 더 잘할 수 있다. 고객도 잘 알고, 영업도 알고, 전략도 잘 안다고 아무리 아는척 해봤자 밑천이 금방 드러난다. 제일 잘하는 개발로 승부를 하라. 이는 회사 내에서 누구도 넘보지 못한다.


애매한 만능맨보다는 개발 전문가의 위치가 회사 내에서 더욱 확고할 것이다. 구조 조정 시에도 관리자나 애매한 위치의 사람들은 자를 수 있어도 개발 전문가로 잘 포지셔닝하면 쉽게 자를 수 없다. 물론 제대로 생각이 박힌 경영자가 있는 경우에 그렇다.


일곱째, 후배들의 롤모델이 되어라.


세상은 결국 돌고 도는 것이다. 본인에게는 롤모델이 없어서 고생을 많이 했을 것이다. 하지만 후배들에게는 롤모델이 되어서 후배들이 그 고생을 하지 않도록 하라. 더 많은 시행착오를 겪겠지만 이는 선구자이기 때문이다. 선임 개발자가 어떤 식으로 일하는지 보여주고 기술력에서 오는 파워를 보여줘라. 이는 본인을 위해서도 더 일하기 좋은 개발환경을 만드는데 도움이 되는 일이다.


이 글은 Tech it에 기고한 글입니다.


image by Antimidia

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

전규현 소프트웨어이야기

Trackback Address: http://allofsoftware.net/trackback/273 관련글 쓰기

개발자의 취향

2012/08/02 06:24 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed



소프트웨어 프로젝트를 진행할 때 합리적인 결정보다는 개발자의 취향대로 진행되는 경우가 많다.


이 경우 Architecture상의 심각한 문제점을 내포하게 된다.


제대로된 분석과 설계를 통해서 Architecture가 결정되어야 하는데 개발자 취향에 맞는 개발언어를 선택하고 검증이 안된 기술을 선택하면 그 Risk는 고스란히 프로젝트가 떠안아야 한다.


Architecture를 결정할 때 고려해야 하는 요소는 개발자의 취향이 아니다. 회사의 미래 비즈니스 전략을 고려해야 하고, 현재 개발자들의 구성과 역량, 제품의 성격과 로드맵이 중요한 고려사항이다. 


이러한 전략없이 특정기술을 맹신하거나 거부하기도 하고 무조건 새로운 기술을 채용하기도 한다.

그러다보면 각 제품마다 중구난방으로 여러 기술이 쓰이고, 유지보수에 심각한 문제를 초래하기도 한다.


그럼 어떻게 하면 이런 잘못된 결정을 막을 수 있을까? 답은 의외로 간단하다. 분석을 제대로 하는 것이다. 제대로된 스펙문서에는 최종 결론 뿐만 아니라 그런 결정에 이르게 된 근거와 의논 과정도 적어야 한다. 그래야 스펙을 읽는 사람들이 의문가 이의를 제기하지 않는다.


예를 들면 다음과 같은 것들이 있다.

  • 현재는 Windows만 지원하지만 3년안에 Mac을 지원할 가능성이 90%라서 엔진은 ANSI-C로 개발을 하고 UI를 QT Framework를 이용한다.
  • Java와 C로 모두 개발이 가능하고, 프로젝트 리더가 C언어를 더 좋아하지만, 기존 제품들이  Java로 되어 있고 회사에 Java개발자가 대부분이므로 Java를 선택한다.
  • 회사에 자연어 처리 전문가가 있지만 자연어 처리 엔진의 직접 개발 비용과 상용라이브러리를 구매했을 때를 비교했다. 10년 후까지의 유지보수 비용을 고려하여 자체 개발보다는 상용라이브러리 구매를 선택했다.
  • 현재 프로젝트는 아이폰/아이패드 용으로만 계획을 세웠지만, 영업부서와 논의결과 안드로이드를 지원할 가능성이 있어서 제품의 난이도가 그렇게 높지 않아서 Adobe Air를 사용하기로 했다.
이러한 결정 과정은 프로젝트를 진행하면 수십가지 또는 수백 번 진행이 된다. 스펙문서에는 이러한 결정과정까지 적어야 정확한 내용이 된다. 또한 중간에 상황이 변경되면 신속하게 영향평가를 할 수 있고 스펙을 변경할 수 있다.

소프트웨어 프로젝트는 개발자의 취향대로 진행되는 것이고 합리적인 근거를 바탕으로한 Architecture 결정에 따라 진행되어야 한다.

Image by kevin dooley



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

전규현 프로젝트/요구사항분석 분석, 설계

Trackback Address: http://allofsoftware.net/trackback/270 관련글 쓰기

허울뿐인 소프트웨어 개발자 경력 보장

2012/07/30 06:19 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed




과거 필자가 근무했던 회사에서는 “백발을 휘날리며 개발을 할 수 있는 개발자”를 공개 채용한 적이 있다. 그 당시 수많은 경력직 개발자들이 지원을 했고 개발자로서 경력을 보장받고자 하는 열망을 충분히 알 수 있었다. 필자의 회사는 Technical career path를 확실하게 보장을 하고 있었다. 따라서 관리를 하지 않고 개발자로서 꾸준히 성장할 수 있고 그렇게 성장할 수 있도록 기업 문화와 제도가 뒷받침이 되어 있었다. 또한 대우도 관리자에 절대 뒤지지 않았다.


하지만 필자가 컨설팅을 시작한 이후 접한 수많은 회사들 중에서 제대로 개발자 경력을 보장해주는 곳은 없었다. 가장 큰 이유는 경영자의 이해 부족을 꼽을 수 있다. 개발자 경력 보장에 대한 각 기업들의 현황을 먼저 살펴보면 해결책도 보일 것이다.


우선 대기업 쪽을 살펴보자.


성공한 국내 유수의 대기업들은 HR에 대해서 많은 투자가 이루어지고 있다. 따라서 Career path에 대한 명확한 정책이 존재한다. 하지만 그 속을 들여다보면 문제가 매우 많다.


문제 사례 중 가장 흔한 것이 가장 뛰어난 고참 개발자가 관리자가 될 수 밖에 없는 상황이다. 그냥 오래 개발하다 보면 팀장, 부서장, 본부장이 되어서 조직을 관리하게 되는 것이다.


몇몇 기업은 개발자들이 관리에서 벗어나 꾸준히 개발자로 일할 수 있도록 하고 있지만, 이 또한 문제가 많다. 우선 회사에서 그렇게 개발자로서 성장하여 최고 개발자 위치까지 이른 사례를 찾아보기 어렵기 때문에 개발자들이 따를 Role model이 없다. 따라서 개발자들 스스로도 성장 단계별로 어떤 일을 해야 하는지 알지 못하고 우왕좌왕 하게 된다.


대기업 A사는 개발자의 직군에 Architect라는 직군을 만들고 이를 10여개로 세분화하고 각 직군마다의 R&R을 정하고 있다. Data Architect, System Architect, Application Architect 등 여러가지가 있다. 하지만 R&R이 소프트웨어 개발 현실과는 거리가 멀고 Role도 명확하지 않다. 결국 타이틀에 불과하고 일하는 방식은 주먹구구 방식과 큰 차이가 없다.


소프트웨어를 잘 모르는 HR 전문가나 관리자들이 만든 개발자 Career path는 현실성이 떨어져서 실제 적용이 잘 안된다.


개발자로 꾸준히 일을 하려고 해도 조직의 문화상 너무 많은 보고서 작성, 보고, 회의를 해야 하는 경우도 많다. 개발 일은 장시간 집중을 해서 성과를 낼 수 있는 일이라서 중간에 다른 일이 자주 끼어들면 제대로 일하기 어렵다. 보고를 이렇게 많이 해야 하고 보고서를 만드는데 오랜 시간을 투자해야 하는 이유는 기업의 기반시스템이 부족하여 경영자가 수시로 보고를 받아야 현황을 파악할 수 있기 때문이다.


또한 보고서의 내용보다 형식에 민감한 경영자가 많고 편하게 앉아서 자신이 필요할 때마다 아랫사람이 자세히 보고를 해주기를 원하는 경영자가 많다. 따라서 개발자라고 하더라도 이런 잡무가 많아질 수 밖에 없다.


이런 귀찮은 일들을 대신해줄 중간 관리자를 채용해도 전문성이 부족한 관리자들은 결국 일들을 개발자에게 토스하는데 그친다. 또한 중간 관리자가 일을 더 많이 만들어서 시키기 때문에 더 귀찮게 하는 경우도 있다.


대기업 개발자들과 인터뷰를 해보면 개발을 좋아해서 개발을 꾸준히 하고 싶은 개발자들도 개발 환경의 열악함, 개발자의 낮은 대우 등으로 인해서 현실적으로 관리자의 경력을 택하고 있었다.


중소기업도 크게 다르지는 않다. 개발을 아주 잘 이해하고 있는 경영자가 있는 회사가 아니라면 중소기업도 개발자 경력이 잘 보장 되지 않는다. 중소기업은 인력이 부족하다 보니 직종을 상세히 구분하지 못하고 개발자에게 팀장 또는 PM(Project Manager)일을 맡기게 된다. 그러다 보면 자연스럽게 개발과 관리의 경계가 무너지게 된다.


많은 회사들이 개발자 경력을 보장해야 한다는 사실 자체는 인지를 하고 있는 것 같다. 하지만 이를 문자 그대로 받아 들일 뿐, 진정으로 깨닫고 있지는 않은 것 같다. 현재의 기업문화와 개발 환경을 그대로 두고 개발자 경력 보장이 되기는 어렵다.


개발에 꼭 필요한 기반시스템들이 잘 구축되어서 제대로 쓰여야 한다. 그래서 투명한 개발 환경이 되어야 불필요한 보고와 회의가 대폭 줄어들게 된다. 경영자들도 매번 보고를 받지 말고 대부분의 정보는 시스템을 통해서 확인 할 수 있어야 한다. 기업 문화도 전문성을 존중하는 방향으로 바뀌어야 한다. 또한 관리자는 윗사람이라 상명하복 관계라는 생각도 바뀌어야 한다. 관리면 관리, 개발이면 개발 각각 전문성 있는 일을 하는 것일 뿐이다.


물론 개발자도 바뀌어야 하지만 경영자와 기업이 먼저 바뀌어야 할 것이다. 그래야 개발자 경력 보장이 제대로 정착이 될 수 있을 것이다.


이글은 Tech it!에 기고한 글입니다.


Image by Zanthia

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

전규현 개발조직

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

    비밀댓글입니다

  2. 분석과 설계 문서는 항상 적절하게 해야 합니다.

    적절한 정도가 1page가 될 수도 있고 1,000page가 될 수도 있습니다. 이는 프로젝트마다 다릅니다.

    혼자 개발하더라도 문서는 작성해야 합니다. 제품의 규모와 성격에 따라서 기억으로만 모든 것을 처리할 수 없는 경우가 대부분입니다. 1주일만 지나면 상당 부분 잊어버리는 것이 보통입니다. ^^

    또 나중에 다른 사람들과 협업이 필요 할 수도 있습니다.

    우선은 혼자 개발한다면 본인 스스로 설계를 할 수 있을 만큼 스펙을 작성하고 코딩을 할 수 있을 만큼 설계를 하는 것이 좋습니다. 그렇지 않으면 여럿이 개발하면서 발생하는 재작업 등의 부작용이 똑같이 발생합니다.

    문제는 문서를 제대로 적는 것이 어렵다는 것입니다. 이것은 선배들에게 배우던지, 전문가에게 배우던지, 오랜 시간에 걸쳐서 시행착오를 거쳐서 배우는 방법 밖에는 없습니다.

    제가 검토한 대기업부터 중소기업까지의 수많은 개발자가 작성한 스펙, 설계문서는 95% 이상이 100점만점에 30점 이하입니다. 문서를 강제로 쓰라고 해도 작성 능력이 부족한 상황에서 문서 작성에 대한 회의가 드는 것은 당연합니다.

    여기 질문이 있습니다.
    "문서를 작성하면 개발이 더 빨리 끝납니까?"
    여기에 자신있게 "예"라고 대답하지 못하면 문서 작성 방법이나 역량 등 뭔가 잘못된 겁니다.

    이 질문에 "예"를 할 수 있는 방법을 찾아야 합니다.

  3. Blog Icon
    정동진

    너무나 공감이 가는 글입니다.
    저두 몇년을 문서는 귀찮은 작업으로 여겼다가...
    이제서야 꼭 필요한 작업이라고 느끼고 있습니다.
    진작에 깨닫고 '꼼꼼하게 작성을 했어야 하는데' 하는..
    후회가 밀려오고 있습니다.

  4. Blog Icon
    덕일

    기업문화가 얼마나 중요한지 다시금 깨닫게 하는 글이네요

  5. 덕일님 감사합니다.

옛날에는 개발을 더 잘했는데

2012/07/26 02:24 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed




우리나라 많은 회사들은 소규모일 때 상당히 개발을 잘 하는 것처럼 보인다. 짧은 기간에 꽤 멋진 Software를 뚝딱 뚝딱 잘 만들어 낸다. 이러한 제품이 시장에서 통해서 회사가 성장을 하게 되면 그 이후로 이상하게 개발이 점점 더 어려워지게 된다.

 

옛날에는 고참 두 명이 이정도의 Software를 6개월만에 이렇게 잘 만들어 냈는데, 지금은 팀원이 10명이나 되고 프로젝트 기간도 과거보다 더 줬는데, 제품의 버그는 더 많고, 제품도 옛날보다 형편 없어 보인다고 한다. 점점 개발이 더 어려워지는 이유는 무엇일까?

 

두번째 시스템을 만드는 것은 첫번째 시스템을 만드는 것보다 훨씬 힘들다.


두번째 시스템은 첫번째 시스템을 유지보수 하면서 만들어야 한다. 첫번째 시스템에 버그가 많거나 커스티마이징 요구가 많아서 소스코드 브랜치라도 몇 개 존재하면 유지보수에 많은 노력이 들어가서 두번째 시스템에 많은 노력을 들이기 어려워 진다.

 

또한 두번째 시스템은 첫번째 시스템과 호환성을 고려해야 한다.

 

두번째 시스템은 첫번째 시스템을 사용하던 고객들의 수많은 요구를 수용해야 한다. 첫번째 시스템은 간단 명료한 기능의 매력으로 인해서 많은 사용자들이 사용을 했지만, 이를 사용하던 사용자들은 계속 요구사항을 요구하게 되고 이러한 요구사항을 적절히 조절하여 수용하는 것이 쉬운 일이 아니다.

 

두번째 시스템 개발에는 많은 개발자가 투입되고 특히 초급 개발자가 많이 투입되곤 한다. 소수의 개발자끼리 개발을 할 때는 커뮤니케이션 문제가 별로 발생하지 않았는데, 개발자 인원이 많아지면 기존의 주먹구구 방식으로 똑같이 개발을 하면 문제가 발생하지 않을 수 없다. 초급 개발자들은 자기 역할을 제대로 못하는 것 같고, 일이 효과적으로 분배가 되지 않아서 결국 소수의 고참 개발자들이 대부분의 개발을 하는 결과를 초래하기도 한다.

 

두번째 시스템은 아키텍쳐를 전면 개편하기도 한다. 첫번째 시스템을 개발해 놓고 계속 유지보수를 하면서 사용자의 요구사항을 하나씩 추가해 나가기 시작하면 기존의 아키텍쳐로는 한계라고 불평을 자주 하게 된다. 특히, 첫번째 시스템을 개발했던 개발자들이 퇴사한 상태라면 더욱 더 첫번째 시스템을 비난한다. 그러면서 두번째 시스템에는 완전히 새로운 아키텍쳐를 적용하곤 하는데, 그동안 엄청나게 많은 노력을 들인 첫번째 시스템을 버리고 기능도 몇 배로 많아진 두번째 시스템에 완전히 새로운 아키텍쳐를 적용하면 첫번째 시스템이 시장에서 안정화되면서 겪었던 시간과 노력의 몇 배를 다시 투입해야 한다. 이런 경우 프로젝트가 지연되기 일쑤이고, 출시 후에도 많은 버그와 고객의 불평으로 상당기간 고생을 하게 된다.

 

그럼, 어떻게 해야 과거처럼 개발을 착착 해낼 수 있을까요?


조직이 커졌다면 당연히 시스템과 프로세스가 바뀌어야 한다. 과거에 소수 인원이 개발할 때는 주먹구구식으로 개발을 했어도 문제가 없는 것처럼 보이지만, 사실은 문제가 똑같이 있었는데, 워낙 인원이 적으니 서로 의견을 활발하게 주고 받으면서 문제를 해결해 온 것이다. 인원이 조금만 늘어도 이런 행운은 기대할 수 없다. 조직에 걸맞는 시스템, 프로세스를 적용해서 체계적으로 개발을 해야 한다.


첫번째 시스템도 이런 과정을 거쳐서 체계적으로 개발이 되었다면, 두번째 시스템 개발자들에게 비난을 덜 들을 수 있었을 것이다. 두번째 시스템 개발자들이 완전 새로 개발하려는 이유 중 하나가 첫번째 시스템에 대한 문서가 쓸만한 것이 없고, 아키텍처가 뒤죽박죽이라서 개선을 못하고 버리려고 하는 것이다.


회사가 켜졌을 때 문제 해결 차원에서 시스템과 프로세스를 갖출 것이 아니라, 1,2명이 회사를 시작하더라도 체계적으로 개발하는 것이 가장 좋은 방법이다.


이미 첫번째 시스템은 점점 뒤죽박죽이 되어가고 조직은 엉망이라면 시스템과 프로세스를 갖추는 일이 먼저 필요하다.


Image by Idiolector


 

 

 

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

전규현 소프트웨어이야기

Trackback Address: http://allofsoftware.net/trackback/268 관련글 쓰기
  1. Blog Icon
    김수보

    음. 하지만, 대부분 처음 개발할 때 체계적으로 개발되는 경우는 경험적으로 별로 없는 것 같아요.

  2. 김수보님 안녕하세요.

    이렇게 경험을 쌓은 개발자들이 다른 회사로 옮기면 똑같은 일을 또 반복하는 겁니다. 평생 나아지지 않는 것이 흔한 현상입니다. 그게 문제죠.

문서 작성 시 가장 중요한 것은 "이것"

2012/07/23 02:03 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed




소프트웨어를 체계적으로 개발해 보겠다고 맘을 먹으면 가장 먼저 하는 것이 "문서작성"이다.


문서의 개수와 종류와 상관없이 문서작성 시 가장 중요한 것은 무엇일까?

사람마다 다르게 생각하겠지만, 내가 생각하기에 가장 중요한 것은 "눈높이 맞추기"이다.


문서의 "눈높이 맞추기"란 의외로 매우 어렵다.


첫째, 문서의 독자가 누구인지 파악해야 한다.

소프트웨어를 개발할 때 만드는 대표적인 문서들은 MRD(기획), SRS(분석), SDS(설계) 를 들 수 있다.


각 문서마다 독자가 다르다. 심지어는 하나의 문서에서도 각 장마다 독자가 다르기 때문에 각 문서를 읽을 독자의 눈높이 맞추는 것이 쉽지는 않다.


둘째, 독자를 파악했다면 해당 독자에게 문서를 통해서 전달해야 할 내용과 독자가 프로젝트에서의 역할이 무엇인지 생각해야 한다. 그렇게 해서 독자에게 필요한 내용을 전달해야 한다. 


더 많은 내용 또는 부족한 내용을 전달할 경우 문서로서의 가치가 떨어진다.


셋째, 독자의 눈높이에 맞는 용어를 사용해야 한다. 경영자가 읽어야 문서라면 경영자가 이해하는 용어로 적어야 한다. 영업부서가 봐야 하는 부분이라면 영업이 이해할 수 없는 전문용어를 써서는 안된다.


더불어 문서를 작성할 때 문서의 서두에 문서의 독자와 읽는 방법에 대해서 설명을 해주는 것이 좋다. 특히 각 장마다 독자와 읽는 방법을 설명해주면 문서를 읽는 사람은 그 안내에서 따라서 가장 효율적으로 문서를 읽을 수 있다.


"옳은 문서"가 좋은 것이 아니고 "읽기 좋은 문서"가 좋은 것이다. 맞는 내용이라고 하더라도 어렵게 작성했거나, 너무 많이 작성했다면 비효율적인 문서 작성을 하고 있는 것이다.


"읽기 좋은 문서"를 작성하기 위한 노력은 꾸준히 계속되어야 한다. 한두해 걸릴 일이 아니기 때문이다.


Image by evinella


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

전규현 개발문화

Trackback Address: http://allofsoftware.net/trackback/267 관련글 쓰기
  1. "옳은 문서" 보다 "읽기 좋은 문서" 가 답인거군요.
    열정에 취하다 보면, 자주 잊어먹게 되는 일이네요.
    일깨워 주셔서 감사합니다. ^^

  2. 감사합니다. 제임스님 ^^

Template과 Sample의 함정

2012/07/19 10:22 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed




소프트웨어 개발 프로세스나 방법론에 관심을 가지게 되면 Template과 Sample에 눈이 가게 된다.


소프트웨어를 체계적으로 개발해 보겠다는 생각을 하면 가장 먼저 "문서"를 만들어야 겠다는 생각을 하게 된다.

그러면서 자연스럽게 선진 Software 회사에서는 어떻게 문서를 만드는지 관심을 가지게 된다.


그래서 인터넷에서 이런 저런 Template을 찾아서 시도를 해보지만 대부분은 만족스러운 성과를 내지 못한다.


가끔은 세계적인 방법론에서 제시하는 수십가지 복잡한 Template를 가져다가 내용채우기를 시도하다 오히려 더 비효율적으로 변하기도 한다.


우리는 흔히 남이 잘 작성해 놓은 Sample이나 Template를 몇개 보면 그대로 따라할 수 있을 것으로 생각하는 경향이 있다. 


이 방법은 코딩에서는 꽤 효과가 있었다. 하지만 문서작성은 코드 작성보다는 복잡한 이슈들이 있다. 문서에는 문장하나하나가 글자 그대로 써있는 것보다 많은 과정과 노력을 들여서 탄생한 것이다. 따라서 결과물만 보고 그 정도 수준의 문서를 만들어 낼 수는 없다.


Template과 Sample을 보고 따라하는 것이 이를 보지 않은 것보다 못한 경우가 많다. 예를 따라하다보면 전체를 보지 못하고 흉내내는 것에 불과하게 된다.


따라서, Template과 Sample을 오히려 보지 않는 것이 좋고 보더라도 따라할 생각보다는 그 구성은 어떻게 되는지 분석하고 자신의 회사에 맞게 고민을 해보는 것이 좋다.


Template보다는 내용을 적는 방법과 리뷰하는 방법을 익히는 것이 더 중요하다. 제대로 배운다고 하더라도 Template의 진의를 파악하고 제대로 문서를 작성하는데는 꽤 오랜 시간이 필요하다.


Template과 Sample의 함정에 빠지지 말고 핵심이 무엇인지 파악하자.


Image by courgettelawn

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

전규현 개발프로세스

Trackback Address: http://allofsoftware.net/trackback/266 관련글 쓰기

한 SI회사의 프로세스에 대한 오해

2012/07/16 09:45 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed





필자는 업계의 여러 사람과 얘기할 기회가 많다.


최근에 한 대형 SI회사의 한 PM과 얘기를 한 적이 있는데 프로세스 상의 큰 문제가 있었고, 실제 프로젝트팀에서는 잘못된 프로세스로 인해서 어려움을 겪고 있었다.


SI회사의 오랜 바람 중의 하나가 "공정분리"이다. 즉, 분석/설계/구현을 분리해서 프로젝트를 진행하는 것이다.

"공정분리"가 되지 않은 상태에서는 분석/설계/구현이 뒤엉켜서 개발을 진행한다.


"공정분리"는 분석을 잘해서 설계자에게 넘겨주면, 설계자는 설계를 잘해서 개발자에게 넘겨주고 개발자들은 설계서 그대로 코딩만 하면 되도록 하려는 것이다.


최근 해외 프로젝트가 증가하면서 분석/설계/구현을 뒤엉켜서 진행할 경우 코딩하는 개발자까지 해외 파견을 해야 한다. 그래서 공정분리는 점점 필수가 되었다.


그래서 진행한 것이 해외에서 "분석/설계"를 잘 해서 넘겨주면 국내에서는 개발자들은 그대로 "구현"만 하면 되도록 하는 프로세스를 만든 것이다.


실제로 이 프로세스는 잘 작동하지 않고 있다고 한다. 그동안 해오던 방법과 역량이 분석/설계를 해도 "구현"은 이와 상관없이 알아서 진행하고 모르면 분석가에게 물어가면서 코딩하던 수준이었다. 이런 상황에서 이 프로세스가 잘 작동할리가 만무하다.


이렇게 공정을 분리하려면 "분석/설계" vs "구현" 보다는 "분석" vs "설계/구현"이 더 낫다.


설계가 구현에 좀더 가깝고, 잘된 분석서를 가지고 충분히 "설계/구현"을 할 수 있기 때문이다.


여기서 또 오해가 있는 것이 설계를 잘해서 넘겨주면 그대로 코딩만 하면 될 줄 아는 것이다. 현실에서는 이렇게 잘 진행되지 않는다. 이렇게 하기 위해서는 설계를 너무 자세히 적어야 하고 실제 구현시 많은 문제를 발견하게 된다.


더 좋은 방법은 설계는 꼭 필요한 만큼만하고 구현에 적당한 자유도를 주는 것이다. 


이렇게 제대로 "공정분리"를 하기 위해서 대전제가 하나 있다. 


바로 "분석"역량이 뛰어나야 한다는 것이다. 뛰어난 분석가를 많이 보유하고 있어야 한다.

현재의 분석역량은 기껏해야 "기능"분석과 약간의 "비기능"을 분석하는데 그치고 있다. 분석이 무엇인지 짧은 글에 일일이 설명하기는 어렵지만 분석은 이보다 훨씬 크고 어려운 일이다. 비즈니스전략도 포함해야 하고, 설계도 일부 포함한다. 


필자의 생각으로는 이 SI회사는 당분간 프로세스의 시행착오를 좀더 겪을 것으로 생각된다. 잘못된 프로세스를 바로 잡는데 시간이 걸릴 것이고, 분석역량을 끌어 올리는 일에 시간이 좀더 걸릴 것이다.


시행착오를 겪는 시간은 짧을수록 좋다.


image by Greg McMullin 




 

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

전규현 개발프로세스 SI회사, 분석, 설계, 프로세스

Trackback Address: http://allofsoftware.net/trackback/265 관련글 쓰기
  1. 요즘 써주신 글 중에서 가장 좋은 글인 것 같습니다. ^^
    보석 같은 키워드들이 많네요. - 자유도, 분석의 중요성 등
    분석이 참 중요하죠.
    초기 방향을 잘못 잡으면, 팀원이 아무리 열심히 해도 엉뚱한 방향으로 가는구나 하는 느낌이 듭니다.
    그나저나 SI는 워낙 넓은 분야를 커버하다 보니,
    깊이 있는 분석이란 참 뛰어난 분들의 영역인 것 같고요~

    고맙습니다.

  2. 제임스님 안녕하세요.

    SI회사의 분석가들은 분석역량보다는 도메인지식이 뛰어난 사람이 많습니다. 고객의 업무를 고객보다 잘 아는 경우가 많지만 업무지식을 쌓아가는 방식으로 성장하다보니 분석 역량이 떨어져서 고객의 요구사항 파악이 부족하고 스펙관리가 떨어지고 설계/개발자에게 스펙 전달이 잘 안됩니다. 결국에 분석가가 구현단계까지 도움을 많이 줘야 하는 경우가 많습니다.

    이러다보니 세계적인 방법론을 도입해서 문서만 수십가지를 만들어도 별로 나아지는 것은 없이 문서를 많이 만들려고 고생만 합니다.

    세계적인 방법론보다는 제대로된 분석 역량을 익히는 것이 더 중요합니다. 결론은 전문가에게 배우는 거죠. ^^

  3. Blog Icon
    LInE.

    설계자와 개발자의 롤이 명확한(철저히 분리된..) 프로젝트를 한 적이 있는데, 설계단계 진행시 설계자 설득하느라 바쁘고 개발단계 진행 시 개발자와 설계자 커뮤니케이션 문제 때문에 아주 골머리 썩었었습니다.-_ㅜ

    개발자들은 투입되자마자 설계문서를 파악하고 코딩에 들어가야 하는데, 작성가이드를 해 준 설계문서의 항목이 너무 많고 자세하다고 설계자들이 반발.. 하지만 아무리 생각해 봐도 그정도의 설계항목이 본문에 말씀하신 "꼭 필요한 만큼" 이라고 생각이 되어 개발자들이 코딩하려면 그정도는 설계를 해 줘야 코딩들어갈 수 있다고 설득하느라 한참 시간 보내고,

    또 막상 개발자들이 코딩 들어가니 왠걸 진짜 "설계문서에 있는 기능만" 구현을 해 놓더라구요. 예를 들면 단위테스트 진행 시 기본적인 유효성검사도 되어 있지 않아 개발자에게 말을하면 "설계문서에 없었다."... 설계자들은 어떻게 그런것 까지 문서화 하냐, 필수입력이라고 해 놓았으면 당연히 유효성체크 해놔야 하는거 아니냐고 서로 싸우고...

    본문의 내용이 너무나도 공감가서 한마디 적고 갑니다...

    좋은 글 항상 잘보고 있습니다. 항상 감사합니다. ^^

  4. 안녕하세요. LInE. 님

    항상 시행착오를 통해서 배우지만, 시행착오를 가장 적게 겪는 것이 중요한 것 같습니다. 시행착오를 겪다가 너무 오랜 시간이 지나기도 하죠. ^^

  5. Blog Icon
    manwal

    제가 고민하던 내용을 정확하게 짚어 정리해주시니 너무 공감됩니다. 이런 경험들을 기록해두는 것이 매우 중요하다는 생각이 듭니다.

  6. 감사합니다. Manwal님

  7. Blog Icon
    GF

    최근 다른 회사와 프로젝트를 진행하게 되었는데, 그 회사에서는 약 3년을 끌어온 개발건이 있었습니다. 전규현님의 글들에 늘 나오는 대로 스펙과 설계 등의 문서는 아예 없고, 개발팀장이 교체될때마다 주먹구구식으로 진행이 되어왔기에 1년을 예상하고 시작한 프로젝트가 3년이 되어도 완결이 안되고 있더군요.
    이러한 상황에서, SI회사 혹은 컨설턴트를 통해 분석/설계 부터 다시해서 새로 시작하는 것이 나을지요?
    내부에 개발자를 채용해서 진행을 하는 것은 많이 지친듯 보입니다. 사람도 요새는 더 뽑기도 어렵구요...

  8. 안녕하세요. GF님

    이미 망쳐 놓은 경우가 가장 어려운 경우입니다.
    제가 SI회사도 컨설팅을 하고 교육을 하기 때문에 꽤 아는데 SI회사도 분석/설계 역량이 별로 없습니다.

    일단 이대로 진행해서 어떻게든 마무리 하는 방법과 다시 분석/설계를 진행하는 방법을 비교해 봐야 하는데 현재 진행상황이 어느 정도 인지 파악을 먼저 해야 합니다.

    분석/설계를 다시 진행하려면 직접 하시던지, 저희회사에 의뢰를 하는 것이 좋을 것 같습니다. 직접 하시면 시행착오를 겪을 수는 있지만 그래도 내용을 잘 아실 것이기 때문에 가능할 수도 있습니다.

    혹시 진행하시다가 궁금한 점이 있으면 메일로 문의해주세요. 진짜 답답하시면 제 사무실로 한번 찾아오시면 자세히 설명 드리겠습니다. ^^

무늬만 개발자

2012/07/09 06:00 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed





우리나라에서 소프트웨어를 개발한지 10년이 넘은 개발자 중에서 진짜 개발자는 생각보다 적다. 15년쯤 지나면 자신은 스스로를 개발자라고 생각할지 몰라도 진짜 개발자인 경우는 급격히 줄어든다. 대부분은 개발과 관리의 경계에서 애매한 포지셔닝을 하다가 다시는 개발로 돌아오지 못하곤 한다.


그럼에도 자신은 개발자라고 착각을 하는 경우가 많다. 또는 자신을 Architect라고 우기기도 한다.


선임급 개발자를 채용하기 위해서 인터뷰를 하면 이런 "개발자가 아닌 무늬만 개발자"를 자주 볼 수 있다.


매일 수많은 회의에 쫓겨 다니고, 온갖 보고서를 만들고, 수시로 경영진에게 보고하고, 팀원들 관리하고 평가하느라고 시간을 다 보내면서, 스스로는 개발에 관해서 아는 것은 많다고 생각해서 개발할 때마다 간섭하고 스스로 뛰어난 Architect라고 생각한다.


이런 사람들은 개발을 좀 안다고 해도 절대로 개발자가 아니다. 개발과 관리의 차이에 대한 개념도 희미한 상태이다. 대부분은 개발자로 다시 돌아갈 수 없는 상태이다.


절대로 "개발"과 "관리" 둘 다 잘할 수는 없다.


우리나라 대부분의 기업에서 본부장, 부문장, 부서장쯤 되면 이러한 상태에 이르게 된다.  그래도 팀장급에서는 개발자의 모습을 아직도 간직하고 있는 경우가 종종 있다.


하지만 팀장급 이상으로 올라가게 되면 개발자이고 싶은 관리자가 되게 된다. 물론 외형적으로도 완전히 관리자를 선언한 사람도 있겠지만, 여전히 개발자이고 싶은 사람들도 매우 많다.


이렇게 되는 결정적인 이유는 경영자의 개발조직 관리에 대한 오해에서 비롯된다. 경영자는 개발조직을 관리하는 관리자는 개발을 매우 잘 알아야 하기 때문에 가장 뛰어난 개발자들이 관리를 하는 것이 옳다고 생각한다. 그래서 경험 많은 선임 개발자들에게 본부장, 부문장, 부서장을 맡기곤 한다.


개발조직을 관리하는 관리자는 개발에 대해서 개발자만큼 잘 알 필요가 없다. 개발자가 개발에 대해서 아는 정도와 관리자가 알아야 하는 정도는 엄청나게 다르다. 그런데 경영자는 이 둘을 같은 것으로 착각하곤 한다.


개발을 잘하는 개발자는 관리는 전혀 하지 않고 개발에 몰두할 때 가장 높은 가치를 창출한다. 경영자의 착각 속에 개발자는 점점 잘 하지도 못하는 관리 일에 치중하게 된다. 자연스럽게 회사는 개발 파워를 잃게 된다. 그럼 남는 것은 정치적인 경쟁밖에 없게 된다. 불쌍한 개발자들이다.


이렇게 관리자화 된 개발자들은 이직도 곤란하게 된다. 동일한 분야가 아니라면 이직을 해도 회사에 도움이 별로 안된다. 다른 분야로 이직을 한다면 관리 능력이 중요한데 사실 관리는 전문 관리자보다 훨씬 못하기 때문이다. 이미 전문 개발자는 아니기 때문에 다른 분야에서 개발자로서 활약하기도 어렵다. 정말 어중간한 위치기 된다.


결국 그 회사에서 관리자의 길을 걷거나 선택할 옵션이 별로 없게 된다.


물론 개발자 본인이 스스로 이런 선택을 하지 않았지만 결국 이런 결과에 이르는 것이 우리나라 개발자들의 안타까운 현실이다.


개발자가 원하고 실력이 된다면 은퇴할 때까지 개발자의 경력이 보장되는 외국의 상황은 부러울 따름이다.


2008/12/03 - [개발조직] - 우리나라 소프트웨어 회사에는 Technical career path가 없다.


주변의 환경을 무시하고 스스로 개발자로 계속 살아남는 다면 대단한 결심이 필요할 것이다.

하지만 결국 이런 개발자들이 언젠가는 대우를 받을 수 있을 것이다. (당장은 글쎄 …)

그런 환경을 만들고 싶다.


이글은 Tech it!에 기고한 글입니다.


image by  Michael Kappel


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

전규현 사람과 기술

Trackback Address: http://allofsoftware.net/trackback/262 관련글 쓰기
  1. Blog Icon
    정열

    글을 보고 있으니 현재, 제 자신의 상황과 너무 같아서 맘이 불편합니다.
    네! 제가 딱 무늬만 개발자 같습니다. 관리는 배운 적이 없어서 서툴고 그나마 알고 있던 개발지식은 이미 유통기한을 넘긴지 오래된 것들 뿐이고 수박 겉핡기 식으로 대충 본 최신 기술들을 가지고 있으면서 나는 개발자다! 나는 그래도 여전히 개발자다! 하고 자기 합리화를 하고 있었습니다.
    참... 두렵습니다. 앞으로 무엇을 보며 어떤 방향으로 살아가야 정답인지 모르겠습니다.
    이런 애매한 위치에 있는 사람들을 위한 대안(?)은 없는 걸까요?

  2. 안녕하세요. 정열님

    계속 개발자로 일하고 싶다면 경력이 쌓일수록 좀더 High level의 일을 할 수 있도록 역량을 계속 향상 시켜야 합니다. 중간에 관리직과 중간에서 왔다갔다 하다가는 그 기회를 놓쳐버릴 수 있습니다. 꾸준히 자신을 단련하고 향상하는 것이 필요합니다.

  3. Blog Icon
    김재현

    제가 요즘 딱 이 모양새 입니다... 한숨만
    나오네요 ㅜㅜ

  4. 김재현님 안녕하세요.

    어떻게 포지셔닝을 하셨든간에 최선을 다해보세요. ^^

  5. Blog Icon

    저도 한숨이 ...

  6. Blog Icon
    DrunkenJK

    저도 딱 상황이 비슷하네요.
    4년 남짓 첫직장 생활을 이제 정리하고 프리랜서 개발자부터
    차근차근 밟아가려고 용기한번 내봤습니다.
    나중에는 단순 코더가 아닌 개발자로서 대접받는 문화가 형성이 되었으면 좋겠습니다.

  7. 안녕하세요. DrunkenJK님

    개발자도 대접을 받으려면 경력에 걸맞는 실력을 보유해야 겠습니다. 개발자 혼자 역량을 향상할 수 있는 것은 아니고 회사가 개밞문화, 시스템, 프로세스, 제도등을 뒷받침해줘야 그 환경에서 개발자 역량이 향상됩니다.

  8. Blog Icon
    테디

    저도 똑같은 고민을 1년정도 하고 있는것 같군요.
    요즘은 거꾸로 그럼 관리자로 잘 하려면 어떻게 해야 하나 하고 생각해보고 있습니다.
    훌륭하고 유능한 관리자가 되려면 어떻게 해야 할까요?

  9. 안녕하세요. 테디님

    관리자는 제 전문이 아니라서요. ^^
    하지만 좋은 관리자가 되는 방법은 시중에 책도 넘쳐나고 지식을 얻기 쉬운 것 같습니다.

    좋은 개발자가 되는 방법을 알기가 더 어려운 것 같습니다. 그래서 제가 이렇게 용을 쓰고 있습니다. ^^

  10. Blog Icon
    NinJaZeroCool

    안녕하세요 테디님

    글 잘보고 있습니다.

    저도 개발자입니다. 그런데 나이가 40대 접어들면서 새로운것을 받아들이는것이 점점 어려워지네욤
    그리고 자연히 플젝관리 직원관리등하다보니 이도저도 안되는모양세입니다.

    저희는 작은회사라 팀장 이라도 개발에 투입이 됩니다.
    다양치 않아서 늘지 않은상태입니다.

    아직까지는 개발하지만 점점 힘들어지는데요 외국에 보면 머리 햐얀사람도 개발하는것 보면
    부럽기까지 합니다.

    그 노하우를 배우고 싶군요!!! ^^

    오늘도 무더운날씨입니다. 몸건강하세요 ^^~

  11. 안녕하세요. NinJaZeroCool님

    대한민국 모든 개발자들의 고민 같아요. ^^

  12. Blog Icon
    테디

    말씀 감사합니다.
    전 그래도 아직 40대는 아니네요..
    그래서 전 다시 개발에 발을 담그려고 합니다.
    거의 1년이상을 제대로 된 개발을 못했는데 다시 해보려 합니다.
    그래도 남는것은 개발인것 같고 전규현님 말씀처럼 좋은 관리자가 되는 방법은 조금 뒤로 미뤄도 될것 같다는 생각입니다.
    훌륭한 개발자 또는 엔지니어로서 커리어를 확실히 쌓아두는 것이 향후 개발자건, 관리자건 선택의 폭을 넓히고 기회를 만드는 지름길이라 판단했습니다.
    쉽지 않고 자신감도 많이 떨어졌지만 다시 해볼랍니다.
    저와 같은 고민을 하시는 분들 모두 모두 화이팅입니다!!!
    개발이건 관리건 인생의 목표는 '행복'이라 생각합니다.

공유와 강제

2012/07/02 04:51 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed





소프트웨어 회사에서 꼭 필요한 개발문화 한가지를 꼽으라면 주저없이 "공유" 문화를 꼽는다.


"공유"의 문화야 말로 소프트웨어 회사를 가장 효율적으로 만들고 프로젝트를 효과적으로 진행할 수 있도록 하며 개발자들의 역량을 향상시키는 결정적인 문화이다.


"공유"의 문화가 잘 정착된 회사에서는 자연스럽게 문서화를 하며 시스템에 기록을 하고 소스코드에 주석을 남기고 필요한 리뷰를 진행한다.


하지만 공유의 문화가 부족한 회사에서는 자발적으로 공유의 활동이 잘 이루어지지 않는다.


물론 공유의 문화가 부족한 곳에서도 선도적인 개발자들이 공유의 문화를 정착하기 위해서 노력하고 있지만 역부족인 경우가 많다.


그 이유는 다른 개발자들의 협조를 이끌어내기가 어렵기 때문이다.


모든 사람이 다 공유를 하고 있는 상황이 아니라면 공유하는 사람만 손해를 보게 된다.

공유를 위해서 시간과 노력을 조금이라도 더 들였다. 하지만 공유를 하지 않는 사람들은 다른 사람이 공유한 결실은 얻으면서 자신의 것은 공유를 하지 않는다.


바빠서 그러기도 하고,

아직 습관이 안되서 그렇기도 하고,

귀찮아서 그러기도 하고,

공유하면 손해라고 생각하는 경우도 있다.


공유의 문화가 팽배한 회사는 서로 공유하는 것이 서로 이익이라고 몸으로 느끼고 있어서 자발적으로 자연스럽게 공유를 한다.


그럼 어떻게 공유의 문화를 정착할 수 있을까?


공유의 문화가 정착되기 전에는 회사의 규칙으로 강제화 해야 한다.

물론 너무 심하게 강제를 하면 반발하여 실패하기 쉽다.

너무 목표를 높게 잡아도 대부분 실패한다.

장기적인 계획을 하지고 단계적으로 시행해 나가야 한다.


첫번째가 이슈(버그)관리시스템을 적극적으로 사용하는 것이다. 모든 이슈와 버그는 시스템으로 모으고 최대한 메일과 전화를 줄이는 것이 그 시작이다.


두번째는 스펙을 작성하는 것이다. 스펙을 처음부터 제대로 쓰기는 어렵지만, 일단 프로젝트를 시작할 때 스펙문서를 작성하는 것을 규칙으로 두고 써보는 것이 좋다. 차츰 나아질 것이다.


세번쨰는 스펙을 리뷰하는 것이다. 스펙을 적고 리뷰를 해보면 그동안 얼마나 서로 모르고 프로젝트를 했다는 것이 조금씩 드러날 것이다.


이렇게 단계적으로 공유를 위한 제도를 강제로 적용하면 어느새 공유가 당연한 것으로 받아들여지는 때가 올것이다.


image by furiousgeorge81






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

전규현 개발문화

Trackback Address: http://allofsoftware.net/trackback/264 관련글 쓰기
결국 최고 걸림돌은 경영진이다.

소프트웨어 회사가 제대로 개발 역량을 갖추는데 최고의 걸림돌은 소프트웨어에 대한 이해가 부족한 경영진이다. 일반 경영자들이 소프트웨어를 이해할 수 없기 때문에 CTO가 존재한다. 하지만 우리나라 대부분의 소프트웨어 회사에는..

SRS를 개발 후에 연습하는 차원으로 적어보면 도움이 되지 않을까?

소프트웨어를 개발하는데 있어서 가장 어렵고도 중요한 것은 SRS(Software Requirements Specification) 즉, 스펙을 잘 작성하는 것이다. 그럼 SRS 작성법을 배우고 싶은데 어떻게 해야 할까? 남이..

내가 없어도 회사가 잘 돌아가면 왠지 불안하다.

그동안 이래저래 바쁘다는 핑계로 블로그에 글을 못올리고 있다. 앞으로 짧막하게라도 글을 올리려고 한다. 내가 만약 일주일동안 회사를 안나오면 회사가 잘 돌아갈까? 그럼 한달동안 안나오면 어떻게 될까? 대부분의 소프트웨어 회사..

넣는 것 보다 빼는 것이 더 어렵다.

초창기에 좋은 소프트웨어로 성공하는 업체들이 지속적으로 성장하지 못하고 고전을 면치 못하는 이유는 여러가지가 있다. 그중 하나가 제품이 점점 과도하게 비대해지는 것을 꼽을 수 있다. 성공하는 회사들의 초기 제품은 간략하고 핵..

[공지] 요구사항 분석 세미나를 실시합니다. - 마감되었습니다.

소프트웨어를 개발하는데 있어서 가장 어려운 것을 하나 꼽으라면 "요구사항분석"입니다. 소프트웨어를 개발하는데 있어서 가장 중요한 것을 하나 꼽으라도 "요구사항분석"을 선택합니다 하지만 우리나라에서 "요구사항분석" 역량을 제대..

투명한 개발 문화의 효과

흔히 투명한 개발이 효율적이고 좋다고 한다. 그 진정한 의미를 알아보자. 투명한 개발이란 개발에 관련된 거의 모든 정보와 지식이 공유되는 것을 말하지만 추가로 내가 강조하고 싶은 것이 따로 있다. 거의 모든 결정의 과정 및..

소프트웨어공학은 실전이다.

이 전글에 댓글을 달려다가 좀더 정리를 해야 할 것 같아서 본글로 올린다. 2013/02/27 - [프로젝트/품질관리] - 거의 다 만들었어요. 알파, 베타의 정의를 가지고 이렇게 강하게 주장하는 경우는 처음봐서 약간 당황스..

거의 다 만들었어요.

"거의 다 만들어서 2주후에 개발이 끝나요" 이 말을 이해할 수 있는가? 우리 주변에서 소프트웨어를 개발할 때 흔히 들을 수 있는 말이다. 개발자들도 이렇게 얘기하고 관리자나 경영자도 대충 알아듣는다. 하지만 이런 대화는 여..

고쳤으니 테스트 해주세요.

여기 두가지 테스트 방법이 있다. 우리 회사는 어떤 방법을 사용하고 있나 생각해보자. 첫째, 테스트 도중에 버그를 고쳐서 좀더 안정된 버전을 테스트팀에 계속 전달하는 방식이다. 테스트 한사이클을 도는데 2주일이 걸린다고 생각..

인해전술이 오히려 프로젝트를 망친다.

일정이 촉박하다고 프로젝트를 빨리 끝내고 싶은 마음에 프로젝트 초기부터 대거 인력을 투입하면 오히려 프로젝트를 망칠 가능성이 더 높아진다. 프로젝트 초기에 분석/설계 단계에는 그렇게 많은 인력이 필요하지 않다. 많은 인력을..