본문 바로가기

소프트웨어이야기

악순환 vs. 선순환 지난번 글 (이 바닥을 못 벗어 난다.)의 추가 글입니다. 회사가 Risk가 큼에도 불구하고 Domain 지식이 점점 더 매달릴 수 밖에 없는 이유와 선순환을 하려면 어떻게 해야 하는지 좀더 현실감 있는 예를 보여주려고 합니다. 회사마다 상황이 모두 다르기 때문에 각자의 상황과 1:1로 다 일치하지는 않지만 참고하실 수는 있을 겁니다. 그럼 악순환과 선순환에 대해서 알아보죠. Domain 지식에 점점 매달리게 되는 악순환의 고리 주먹구구식 개발 개발자에 의존한 코딩 중심의 개발 주도 없거나 빈약한 개발 프로세스 및 개발 문서 회사의 지식은 개발자 머리 속에 보관 개발자 간 지식의 공유가 어려움 후배 개발자들에게 지식 전달이 잘 안됨 프로젝트가 커질수록 협업이 점점 어려워짐 점점 더 경험 많은 개발자에 의.. 더보기
이 바닥을 못 벗어난다. 우리나라 소프트웨어 개발자들은 자신이 처음부터 일해온 바닥을 못 벗어나는 경향이 있습니다. 처음에 게임회사에서 일을 시작한 개발자는 계속 게임회사에서 일하고, 금융회사, 보안회사, 장비회사, SI회사 등 쉽게 그 바닥을 못 벗어나곤 합니다. 이러다 보니 개발자가 이직 시 선택의 폭이 좁아지고, 분야가 조금만 바뀌어도 자신의 Value가 확 줄어드는 현상이 일어나곤 합니다.이런 일이 비일비재하게 일어나는 것을 보면 개발자의 전문성이란 어디에 있는 것인지 궁금하지 않을 수 없습니다. 금융에 대한 전문지식을 많이 가지고 있고, 게임에 대한 많은 지식을 가지고 있는 것을 개발자의 전문성이라고 볼 수도 있습니다. 또 그러한 Domain 지식이 없으면 개발을 할 수 없다고 단정적으로 얘기를 하는 개발자도 많습니다... 더보기
나는 혼자가 아니다. 지금 내가 생각하고 행동하는 것은 나 스스로의 힘이 아닙니다. 과거의 수많은 대가들이 이룩해 놓은 지식, 경험과 지혜를 간접적으로 배우면서 자라온 내가 있고 그 바탕 위에 내가 존재 합니다. 이런 성현들의 지식이 없다면 지금의 내가 존재 할 수 있을까요? 원시인과 별 차이 없는 내가 있겠죠. 소프트웨어를 개발하다 보면 수많은 문제에 부딪히는데 그 대부분은 이미 과거에 소프트웨어 개발의 대가들이 다 겪은 후에 그 해결책을 다 만들어 좋은 것들입니다. 그렇지 않고 소프트웨어 역사상 처음 발생하는 이슈는 거의 없습니다. 그런데 많은 개발자들의 개발 행태를 보면 마치 최초의 선구자 같이 행동을 합니다. 과거에서 배우지 않고 자신의 지식과 경험 테두리 안에서 별 희안한 방법들을 생각해 냅니다. 피아노를 배우려고 .. 더보기
이거 팔면 돈 되겠는데! 오래 전 여러 기업을 거느린 그룹들이 기가 막힌 아이디어를 생각해 내게 됩니다. 여러 종류의 회사를 거느리고 있었고, 회사들의 전산시스템을 구축하였습니다. 그 당시 여러 군소 회사들에 비하여 상당히 선진화된 MIS 시스템 등을 보유하게 되었고, 구축 과정을 통해서 경험 있는 소프트웨어 엔지니어들을 보유하게 됩니다. 물론 이를 구축하는데 돈을 많이 썼지요. 그러다가 문득 "이거 팔면 돈 되겠는데!"라는 생각을 하게 됩니다. 상당히 다양한 회사를 보유하고 있기 때문에 우리나라에 이와 비슷한 회사가 널렸다고 생각하고 이 소프트웨어를 조금씩 수정해서 팔면 큰 투자를 하지 않고 돈을 쉽게 벌 수 있을 것으로 생각합니다. 이러한 아이디어가 전세계 유래를 찾아보기 힘든 대형 SI회사를 탄생하게 만들었고, 우리나라의 .. 더보기
외주를 주면 된다고요? "우리가 못하면 외주를 주면 된다." 이렇게 생각하십니까? 아니면 인력이 모자라거나 시간이 부족하여 외주를 주십니까? 대부분의 개발자라면 외주에 대한 쓰라린 기억이 있을 겁니다. 한 포탈업체가 인도에 포탈 시스템 외주를 줬다가 통째로 버리고 국내 업체에 다시 외주를 줘서 개발한 적이 있습니다. 그리고도 국내 업체에 질질 끌려 다녔었지요. 인도에 외주를 줄 때는 스펙을 제대로 전달 하지 못했고, 개발 기간에도 전혀 관리와 리뷰를 하지 않고 최종 결과물만 받아 본 사례입니다. 이런 케이스 많죠? 그리고 국내 업체에 외주를 줄 때도 자체적으로 기술을 보유하지 못하고 외주에 의존하다 보니 지속적으로 문제가 됩니다. 결국 스스로 만들 능력이 없는데, 외주를 주는 것은 성공할 확률도 낮고, 경험있는 외주 업체를 만.. 더보기
소스코드가 그렇게 중요한가요? 소스코드를 신주단지 모시듯 하는 회사나 개발자들을 자주 볼 수 있습니다. 소스코드가 자신들의 모든 기술이 함축된 집합체라고 생각들을 합니다. 저는 이런 회사나 개발자들 딱 접하는 순간 그 수준을 한번에 알 수 있습니다. 다른 것들은 별로 물어볼 필요도 없이 그로 인해서 회사가 어떤 식으로 개발을 하고 있다는 것을 쉽게 짐작할 수 있습니다. 그러한 회사들은 소스코드를 개발자를 제외한 다른 직원들은 접근하지 못하도록 하기 위해서 보안장치를 두고 개발자는 자신이 작성한 소스코드를 공유하기 꺼려하기도 합니다. 개발의 내용은 SRS나 설계서에 포함되어 있기보다는 그냥 코드에 숨어 있어서 이를 작성한 사람이 아니면 전체를 파악하기 정말 어렵습니다. 해당 개발자가 아니면 유지보수가 어렵고 신입사원이 들어와도 공유가 .. 더보기
소프트웨어 개발자의 권리 지난번 글에서 소프트웨어 개발자윤리(의무)에 대해서 얘기를 한 적이 있습니다. 그때 많은 분들이 개발자의 권리도 좀 생각해보자고 하였습니다. 이에 개발자의 권리와 개발자에 대한 경영자와 고객의 의무를 정리해 봤습니다. 의견이 있는 분들은 댓글 남겨주세요. 개발자의 권리 ○ 우리도 남들 잘 때 잘 수 있다. ○ 우리도 희망적인 미래를 꿈꿀 수 있다. ○ 우리도 가족과 저녁식사를 할 수 있다. ○ 나이가 먹어도 계속 개발을 할 수 있다. ○ 전문가로 성장할 수 있는 기회를 제공 받아야 한다. ○ 우리에게는 자기계발을 할 수 있는 시간과 기회가 제공되어야 한다. 개발자에 대한 경영자의 의무 ○ 개발자를 부품이 아닌 전문가로 생각해야 한다. ○ 개발자에게 최상의 개발 환경을 제공해야 한다. ○ 개발자에게 적절.. 더보기
짝퉁 고수 이 바닥은 이상하리만치 짝퉁 고수들이 많습니다. 자신이 대한민국에서 무슨 기술이 제일 뛰어나다고 소개하는 사람을 종종 만나는데, 대한민국를 개발자 다 만나봤나 반문하고 싶습니다. 또 조금 사용해봤거나 심지어는 어디서 단어만 들어봤어도 그건 아는 거다라고 얘기하는 사람이 정말로 많습니다. 컨설팅을 하면서 개발자들의 정확한 수준을 파악하기 위해서 기술력 조사를 하는데, 자신이 전문가라고 한 항목에 대해서 beginner라도 알 수 있는 내용을 물어봐도 모르는 경우는 허다하더군요. 수많은 사람들이 자신이 고수라고 허위광고를 하고 다니는 이유는 사람들을 속이기 쉽기 때문입니다. 알맹이는 없는 표면적인 지식을 가지고 사람들을 현혹하면 더 많은 연봉을 받을 수도 있고, 더 좋은 프로젝트를 낚아챌 수도 있습니다. 하.. 더보기
개발자 윤리 장전 소프트웨어 개발자라는 직업은 특수성이 많은 것 같습니다. 뭘 좀 잘못해도 쉽게 눈에 안띄고, 문제가 되어도 딱히 누가 잘못한지도 잘 모르겠고, 맘 먹고 동료들이나 경영자를 속이고 있어도 쉽게 알아차리기 힘들고, 자신의 실력보다 과대포장을 해도 눈치채기 어렵습니다. 또 하루종일 일을 하고 있어도 정말 열심히 하는 것인지 노는 것인지 알아내기 어렵고, 이러한 소프트웨어 개발자들이 빌딩을 만들거나 비행기를 만든다면 빌딩이 무너지거나 비행기가 추락하겠죠. 하지만 소프트웨어 필드에서는 그러한 오류가 종종 숨겨지고, 원인을 밝히기 어려운 경우가 태반입니다. 결국 소프트웨어 개발자들은 스스로의 발전을 위해서도 윤리의식을 가지고 있어야 합니다. 이러한 자세는 개발자 스스로에게도 도움이 된다는 것을 강조하고 싶습니다. .. 더보기
[오늘의 한마디] 경기에서는 개의 크기가 아니라, 팀의 조화가 중요하다. 얼마전 "스노우버디즈"라는 가족 영화를 보았는데, 비록 개가 한 소리(?)지만 좋은 말이 있어서 인용을 해볼까 합니다. "경기에서는 개의 크기가 아니라, 팀의 조화가 중요하다." 어린 강아지들이 개썰매 대회를 준비하면서 스승이 해준 말입니다. 하물며 개들이 알고 있는 것을 인간들이 모르면 안되겠지요. ^^ 아주 소규모 (2,3명 이하)의 개발팀이라면 각 개인의 역량이 프로젝트를 성공시키는 가장 큰 요소가 되겠지만, 3,4명만 넘어가는 개발팀에서도 팀의 조화가 아주 중요한 요소가 됩니다. 특히 팀이 커질수록 프로젝트의 성공은 한두명의 역량보다는 팀워크에 달려 있다고 해도 과언이 아닙니다. 혼자서는 개발을 잘하고 아는 것은 많지만 협력해서 일할 줄 모르는 개발자는 큰 프로젝트에서는 배제를 하게 됩니다. 그런.. 더보기