정말 즐겁고, 재미있어서 시작한 소프트웨어 개발. 하지만, 그렇게 재미있게 시작한 소프트웨어 개발과 관련된 활동이 일이 되는 순간. 가장 ‘지루하고 재미없는 일’이 될 수 있다는 것에 대해서 아는가?
대부분의 소프트웨어 개발업(?)이라는 것이 정말 재미없고 지루할 수 있다는 것에 대해서 아는가?
필자도 처음 컴퓨터를 국민학교(요즘 초등학교) 6학년 때부터 만지작거리면서 품었던 오래된 꿈은 ‘소프트웨어 개발’을 하면서도 생계를 유지할 수 있기를 바랐다. 이렇게 재미있는 세계에만 빠져서 살게 해 달라고 간절히 기도하면서, 프로의 세계에 들어왔다.
물론, 재미있고 즐거운 일도 많았다. 밤을 새워가며 목표로 한 애플리케이션을 디자인하고 설계하고 구현하고 테스트하는 즐거운 삶이 이어졌다. 규모가 커지고, 프로젝트 리딩을 해보고, 정말 내가 만들고 싶은 소프트웨어를 만들기 위해서 사업이라는 것도 해봤다.
사업을 홀라당 날려먹고, 막장이라고 불리는 SI현장에도 들어가 봤다. 역시, 대한민국의 SI현장은 녹녹한 곳이 아니었다. 그나마, 플랫폼을 만들고, 기술지원을 하는 팀에 들어갔음에도 불구하고, SI는 상상 이상의 모습들을 경험하게 했다.
그때의 경험을 간접적으로 느껴보기 위해서는 다음의 3권의 책을 추천한다. 여유가 난다면 한 번쯤 읽어 보기 바란다. SI현장이나 기업의 소프트웨어가 망가지는 모습은 두 번째 책에 너덜하게 많이 묘사돼있다.
소프트웨어 아키텍트가 알아야 할 97가지
소프트웨어 누가 이렇게 개떡같이 만드는 거야?
위대한 게임의 탄생
재미있는 책이고, 재미있는 소프트웨어 개발 세상에 대해서 이야기를 하는 내용을 언급하고 있는 내용이다.
‘소프트웨어 아키텍트가 알아야 할 97가지’는 40여 명의 경험이 풍부한 소프트웨어 아키텍트들이 소프트웨어를 개발하면서 느끼게 한 소프트웨어 아키텍처에 대한 자신의 생각과 충고에 대한 글들을 모아두었다. 재미있는 소프트웨어 개발과 자신의 기술적인 요소를 어떻게 적극적으로 활용하는 방법, 능력 있는 팀을 만드는 방법까지 능수능란하게 중요한 원칙들에 대해서 위트 있는 소재로 언급한 내용들이 서술되어 있다. 이 책은 소프트웨어 아키텍트에 도달한 달인들이 자신들의 생각과 경험을 통해서, 소프트웨어 개발의 밝은 측면을 보여준 것이라면.
두 번째 ‘소프트웨어 누가 이렇게 개떡같이 만드는 거야?’라는 책은, 엄청난 비용과 시간을 투자하여 만든 보안시스템이 보안담당자에게 걸려온 전화 한 통에 의해서 무력화되는 어이없는 상황에 대해서 여과 없이 보여준다.
세 번째 ‘위대한 게임의 탄생’이라는 책은, ‘유저를 행복하게 해줄 수 있는 게임은 불행한 개발자에게서 나오지 않는다’라는 말처럼, 1편과 2편의 매우 재미있고, 흥미로운 게임 개발의 세계에 대해서 보여주고 있다.
1편은 주로 해외 게임들, 2편은 국내 게임 개발과 관련된 내용들로 재미있게 구성되어 있는데. 개인적으로 2편이 더 재미있고 흥미로웠다. 소프트웨어라는 것이 소프트웨어 개발자들 이외의 세계와 연결되어진 통로와 실제 생활들을 적나라하게 보여주는 아주 극과 극을 달리는 중요한 세 개의 서적이 되겠다. 전문가의 입장, 황당한 현실, 그리고. 멋진 개발의 모습.. 이 3권이면 소프트웨어 개발의 전체를 간단하게나마 소개할 수 있다고 본다.
하지만, 실제, 현실의 소프트웨어 개발은 참으로 아주 지루하고 재미없고, 기계적인 반복 작업의 연속이다.
재미있는 흥미요소들을 모두 제외하고, 무미건조한 프로세스로만 살펴보자. 그렇다면, 이런 재미없고, 반복적인 실제 소프트웨어 개발을 하는 방법과 절차만 남게 된다.
소프트웨어 개발과정을 도식화하면 위의 그림과 같다. ‘정해진 명세’에 따라서, ‘지시된 설계’를 만들고, ‘구현’하고 ‘테스트’를 하는 과정을 무한 반복하는 것이 소프트웨어 개발을 포장 없이 표현한 것이다. 실제, 소프트웨어 개발의 환경은 이렇게 ‘무의미한 작업’의 계속된 반복 인지도 모른다.
( 정말 재미요소를 빼면 그렇다. )
필자도 ‘기업용 애플리케이션’을 만드는 데 있어서 이런 단순 반복적인 공정을 통하여 만들어진 산출물이 가장 효과적이라는 것에 대해서 부인하지 않는다. 대부분의 기업용 애플리케이션은 다양성과 창의성은 필요 없고, 구체적이고 확실한 결과물만을 원하는 경우가 많다.
실제 그 도메인과 업무의 매력이 충분하게 느껴지지 않는다면, 소프트웨어 개발은 정말 지루하고 재미없는 일이 된다. 학생들이 소프트웨어 개발에 대해서 착각하는 여러 가지 이유 중의 하나가, 소프트웨어 개발은 정말 ‘창의적인’것을 요구하는 것이 많을 것 같다고 착각하는 것이다. ( 대부분의 국내 소프트웨어 개발은 ‘창의적인’것은 그다지 필요 없다. )
물론, 사용자에 대한 고려, UX, 서비스의 풍부함을 연구하고 이를 구현하여 서비스를 자유롭게 발전시키는 식의 개발이 가능한 곳도 있으며, 이러한 환경에서 프로그래밍을 구사하고, 그것을 표현하는 일을 하는 사람들도 없는 것은 아니다. 하지만, 과연 그러한 일을 하는 사람이 얼마나 될 것인가? 특히, 대한민국에서?!!!
새롭게 시작하는 후배들이여, 구로 디지털단지에서 오전에 출근하는 개발자들과 오후에 퇴근하는 개발자들을 전철역에 서서 바라보아라. 얼마나 척박한 개발자의 삶을 살고 있는지 생각해보라는 것이다.
언제부턴가, 소프트웨어 개발자들의 전통적인 개발자 커뮤니티는 쇠퇴하기 시작했다. 과거에는 소프트웨어 개발자 커뮤니티를 보지 않고, 바라다보지 않고 있으면, 개발일을 못하던 시대가 있었다. 물론, 아직도 그러한 개발자 사회가 있기는 하다. 자바 개발자 커뮤니티는 여전히 튼실한 사용자 커뮤니티를 유지하고 있으나, 그밖에 커뮤니티들은 대부분 과거의 영광들을 모두 잊어버렸다.
더 심각한 것은 ‘현재의 개발자들은 기술을 공유하고, 자신의 생각을 토론할 수 있을 만큼의 여유가 사라졌다는 점’이다. 지금, 구로디지털단지역에서 내리고 오르는 개발자들이 출퇴근 시간에 스마트폰을 가지고도 개발자 커뮤니티에 글을 올리거나 접속할 마음의 여유가 사라졌다는 것이 가장 슬픈지도 모르겠다. 물론, 이러한 개발자 커뮤니티에 의존하지 않더라도, 쉽게 정보를 찾을 수 있는 시대가 된 것도 또 하나의 원인인지 모르겠다. 하지만, 현재에도 매우 활성화된 개발자 커뮤니티들이 존재하고 있고, 왕성하게 활동한다. 그러한 왕성한 활동을 보이는 조직의 공통점이 몇 가지 있다.
그것은 ‘신입/초보’에 대한 배려를 잊지 않고 있는 곳이다. 물론, 이러한 개념을 확대하면, 초보 사원들에 대한 ‘배려’를 잊지 않는 소프트웨어 개발자 기업이 최고의 기업이라 할 수 있겠다.
잉여 개발과 독립 개발을 꿈꾸는 사람들이 스타트업을 시작하는 시대가 됐다.
정말 개발일을 즐기고 싶다면, 차라리. 직업적인 프로그래머가 되지 않는 것이 방법이기도 하다. 아예, 독립 개발과 잉여 개발을 취미로 시작하면서, 자신의 독자적인 설루션을 찾거나 만드는 방법도 최고의 방법이다.
굳이, 소프트웨어 개발을 회사에 입사해서 직업적인 관점에서 접근하는 것만이 최선의 시대가 되지 않았나 한다. 요 근래 뛰어난 개발자들을 보면, 전공을 소프트웨어 관련으로 공부하지 않고서도 전문가의 경지에 이른 사람들이 더 많아졌다.
아이러니하게도 융합의 시대에 타 도매 임의 전문적인 지식을 가지고 소프트웨어 기술을 효과적으로 활용할 줄 아는 인재가 최고의 인재로 대우받는 시대가 된 것 아닌가 하다. ( 실제 필자의 주변에도 의사, 수의사 등 다른 전공을 했지만, 최고의 소프트웨어 엔지니어가 된 사람들이 부지기수이다. )
이제, 각자 창업을 하거나, 개별적으로 자기가 하고 싶은 일이나 설루션, 서비스를 각자 알아서 개발하더라도, 이를 충분하게 홍보하고, 주변에서 활용할 수 있게 하는 다양한 서비스들이 매우 많이 생겨났다. 그래서, 소프트웨어 개발을 굳이 회사에 입사해서 할 필요가 없어진 것도 사실이다. 하지만, 소프트웨어 개발자가 되는 것과 창업을 하는 것은 완전 다른 영역이다.
요리사가 요리만을 잘한다고 전문 레스토랑을 오픈하고 손님을 맞이할 수 있을까? 절대 그렇지 않다. 요리와 전문 레스토랑 경영은 사실상 다른 영역이고, 실제 산업계에 들어가 보더라도, 전문 경영인의 세계와 전문 요리의 세계는 완전하게 구분되어있다.
물론, 드라마나 영화에서처럼 둘 다 잘하는 천재들이 실제 세계에도 가끔 존재하기는 하나, 말 그대로 그것은 소수의 타고난 천재들만 가능하다. ( 뭐, 실제 보면.. 정말 대단한 사람들을 볼 수 있다. )
대부분의 요리사들처럼, 개발자들도 경영에는 빵점이거나 소질이 없는 경우가 많다. 창업의 세계는 완전하게 별개의 영역이므로, 나중에 다시 한번 소프트웨어 개발과 창업에 대해서 언급할 때에 따로 이야기를 하도록 해보자.
스위처 마케팅 담당자의 일기 (0) | 2020.03.09 |
---|---|
스타트업과 상식에 대하여... (0) | 2020.03.09 |
내 통장과 회사 통장의 차이 (0) | 2020.03.08 |
성장하는 스타트업은 어떻게 일하고 있을까? (0) | 2020.03.08 |
160330_페이스북 포스팅 복기 (0) | 2020.03.08 |