본문 바로가기
IT 놀이터/General

[소프트웨어 공학] 소프트웨어 회사가 성공하기 위한 다섯 가지 조건

by 돼지왕 왕돼지 2012. 3. 16.
반응형



안녕하세요 돼지왕 왕돼지입니다.

오늘은 "소프트웨어 회사가 성공하기 위한 다섯 가지 조건" 이라는 주제로 이야기하고자 합니다.

이 글은 "글로벌 소프트웨어를 꿈꾸다." 라는 책의 내용을 요약한 것입니다.


01. 혁신하든가 사라지든가.

 - 혁신을 해야 한다는 것을 알면서도 위기에 닥치기 전까지 혁신을 하지 않는 이유는, 혁신에 대한 고통이 대단하기 때문이다.

 - 소프트웨어 회사의 혁신의 대상은 오랫동안 습관처럼 해오던 잘못된 모든 것들. 소프트웨어 공학에서 하라는 것을 이런 저런 핑계로 하지 않았던 것들이다. 그동안 피해왔던 문서쓰기, 아키텍처 재정립, 지저분한 소스코드 청소, 기반 시스템 정립, 소스코드 리뷰 등이 혁신의 대상으로서 지켜져야 할 것들이다.

- "혁신은 자발적으로 참여하면 더 큰 혜택을 받는다." - 어차피 일어날 혁신이라면 주도적으로 하라.

- 회사가 어려울 때 의외로 개발자들에게는 시간적 여유가 생기며, 이 때가 혁신의 기회이다.




02. 변하지 않으면 죽는다.

가장 먼저 크게 변해야 하는 것은 경영자. 버리는 것!


 - 하드웨어 마인드를 버려라. 밀어붙이기는 소트트웨어 산업에서 가장 큰 위험요소이다.
   ( 하드웨어 마인드를 가져야 할 때는, 소프트웨어의 변경은 하드웨어만큼 큰 비용이 든다는 사실 )
 - 소프트웨어는 아무나 개발 할 수 있다는 생각을 버려라. 개발자의 능력에 따라 결과는 28배 차이난다.
 - 관리자나 영업이 개발자를 좌지우지하지 않게 하라. 경영자 자신이 소프트웨어에 대한 통찰력을 가져야 한다.
 - 빠른 개발의 경영전략을 버려라.
 - 일정을 협상하지 말라.
 - 2% 부족한 것을 간과하지 말라.
 - 조급한 생각을 버려라.


개발자가 바꿔야 할 것은 해야할 것!


 - 자신의 능력을 정확히 알고 행동해야 한다.
 - 급할수록 더 천천히 가야 한다. 계획없이 무작정 코딩을 시작하는 것은 모든 문제의 근원. "신중하고 천천히 행하라. 빨리 뛰는 것이야말로 넘어지는 원인이다."
 - 처음부터 제대로 배워야 한다."엉터리로 배운 사람은 아무것도 모르는 사람보다 더 어리석은 법이다."
 - 항상 자신을 변화시키려고 노력해야 한다. "어떤상황이 바라기를 바란다면, 우리는 우리가 변화시킬 수 있는 단 한가지, 바로 우리 자신에게 초점을 맞춰야 한다."




03. 소프트웨어 회사는 두번의 재건축이 필요하다.

- 첫번째는 소기업에서 중소기업으로. 두번째는 중소기업에서 대기업으로 가는 시기이다.

- 기반 시스템, 조직, 프로세스, 기술, 문화 등을 전반적으로 바꿔야 한다. 




04. 미국회사는 기본이 70점, 한국 회사는 20점에서 시작한다.

- 미국은 회사가 70% 를 제공한다. 반면 한국은 회사가 20%를 제공한다.

- 개발자가 집중해서 효율적으로 일할 수 있게 해주는 것이 회사의 의무이고, 그것이 개발자를 위한 것임과 동시에 회사를 위한 것이다. 회사가 제공하는 70%는 기반 시스템 설치, 프로세스 정립, 코딩의 표준화, 문서화 방법, 개발 방법론, 공유 문화 정립 등이 있다. 




05. 꼬여버린 프로세스, 코드, 기반 시스템

무조건 비싼 시스템이 좋은 것은 아니다. 전체 그림을 볼 줄 알아야 한다. 가장 최악의 경우는 시스템을 직접 개발하는 것이다.





06. 공유를 싫어하는 사람은 소프트웨어 회사에 적합하지 않다.

진정으로 소프트웨어 회사에 중요한 인재는 정해진 프로세스, 개발원칙을 잘 지키면서 공유하고 협업하며 묵묵히 일하는 사람이다. 표면적으로 남보다 아는 것이 많고, 실제 개발은 못해도 아는 척만 하는 사람은 경영진에게는 똑똑해 보일지 모르며 인정을 받고 중요한 위치에 오르기도 하지만, 소프트웨어 회사에 적절한 사람은 아니다.




07. 회사에 필수적인 소프트웨어 전문가

- 한국에 나이들은 개발자가 없는 진짜 이유는 기술습득에 시간을 사용하지 않고, 관리업무에 시간을 소비하기 때문. 관리업무도 하고 기술습득도 하려면 둘 다 시간이 모자라서 뒤떨어질 수밖에 없다. 이것은 관리직을 우대하는 문화 때문이다.

- 기술 아키텍트는 상대적으로 양성하기가 쉽다. 반면 전체 개발 프로세스를 이해하고 어떠한 제품도 처음부터 끝까지 개발할 수 있는 체계와 정책을 수립할 수 있는 경험과 지식을 균형 있게 소유한 넓은 의미의 '지휘자 아키텍트'가 바로 최고의 개발자며 또 이들이 절실하게 필요한 것이 한국 소프트웨어 업계의 현실. 




08. 소프트웨어 회사가 성공하기 위한 다섯 가지 조건.


아래의 다섯 가지 조건이 다 같이 잘 조화를 이루며 이루어져야 성공한다. 한쪽만의 비대칭적 발전은 전체적 불균형을 초래하여 좋은 결과를 가져오기 힘들다.

기반 시스템


- 이슈관리 시스템, 테스트관리 시스템, 소스관리 시스템, 빌드/릴리즈 관리 시스템, 프로젝트 관리 시스템, 작업 관리 시스템, 고객관리 시스템, ERP 등 수 많은 시스템도 중요하지만 그 중 소스관리 시스템과 이슈 관리 시스템은 매우 필수적이다.


조직


- 개발자가 분석, 설계, 코딩, 빌드, 테스트, 기반 시스템 관리 등 모든 업무를 다 하는 것은 전문성이 없다는 말과 100% 일치. 전문성 있는 조직이 있어야 한다.


프로세스


- 프로세스 = '정해진 순서에 의해 정해진 산출물을 만들어 내면서 개발을 진행하는 것' 


기술


- 개발자의 고유 영역. 기술은 단기적으로 필요한 만큼만 배우면서 사는 것이 효율적이다. 하지만 아무리 지나쳐도 직접적인 해는 없다.


문화


- 참여, 공유, 개방의 문화가 필요하다. 소스코드를 작성하면, 동료검토를 하고, 항상 누구나 볼 수 있게 해주는 것이 소프트웨어 업계의 문화. 스펙이나 설계문서 등도 마찬가지다. 




도움이 되셨다면 손가락 꾸욱~


반응형

댓글