환상이 아닌 현실에서도 멋진 개발자가 되기를 바라며
정말 즐겁고, 재미있어서 시작한 소프트웨어 개발. 하지만, 그렇게 재미있게 시작한 소프트웨어 개발과 관련된 활동이 일이 되는 순간. 가장 ‘지루하고 재미없는 일’이 될 수 있다는 것에 대해서 아시는지?
정말, 대부분의 소프트웨어 개발업(?)이라는 것이 정말 재미없고 지루할 수 있다는 것에 대해서 어린 친구들은 알고 있는지...
필자도 처음 컴퓨터를 국민학교(요즘 초등학교) 6학년 때부터 만지작거리면서 품었던 오래된 꿈이 있었다.
‘소프트웨어 개발’을 하면서도 생계를 유지할 수 있기를 바랐다.
밥먹고 살 수 있는 소프트웨어 개발자!
그리고, 이렇게 재미있고, 즐겁고, 흥미로운 세계에만 빠져서 살게 해 달라고 간절히 기도하면서, 프로의 세계에 들어왔다. ( 그리고, 25년이 지났다. )
물론, 재미있고 즐거운 일도 많았다.
밤을 새워가며 목표로 한 애플리케이션을 디자인하고 설계하고 구현하고 테스트하는 즐거운 삶이 이어졌다.
규모가 커지고, 프로젝트 리딩을 해보고, 정말 내가 만들고 싶은 소프트웨어를 만들기 위해서 사업이라는 것도 해봤다.
당연, 사업과 개발자의 인생은 일치하는 것이 아니었다. 사업을 홀라당 날려먹고, 막장이라고 불리는 SI현장에도 들어가 봤다.
당연, 역시, 대한민국의 SI현장은 녹녹한 곳이 아니었다. 그나마, 플랫폼을 만들고, 기술지원을 하는 팀에 들어갔음에도 불구하고, SI는 상상 이상의 모습들을 경험하게 했다.
그때의 경험을 간접적으로 느껴보기 위해서 필자는 다음의 3권의 책을 추천한다.
이글을 읽는 독자가 여유가 된다면 한 번 읽어 보기 권한다.
특히, SI현장이나 기업의 소프트웨어가 망가지는 모습은 두 번째 책에 너덜하게 많이 묘사돼있다.
소프트웨어 아키텍트가 알아야 할 97가지
소프트웨어 누가 이렇게 개떡같이 만드는 거야?
위대한 게임의 탄생
재미있는 책이고, 재미있는 소프트웨어 개발 세상에 대해서 이야기를 하는 내용을 언급하고 있는 내용으로 구성되어 있다. 책의 내용을 간단하게 설명한다면 다음과 같다.
‘소프트웨어 아키텍트가 알아야 할 97가지’는 40여 명의 경험이 풍부한 소프트웨어 아키텍트들이 소프트웨어를 개발하면서 느끼게 한 소프트웨어 아키텍처에 대한 자신의 생각과 충고에 대한 글들이 모아진 책이다.
재미있는 소프트웨어 개발과 자신의 기술적인 요소를 어떻게 적극적으로 활용하는 방법, 능력 있는 팀을 만드는 방법까지 능수능란하게 중요한 원칙들에 대해서 위트 있는 소재로 언급한 내용들이 서술되어 있다.
이 책은 소프트웨어 아키텍트에 도달한 달인들이 자신들의 생각과 경험을 통해서, 소프트웨어 개발의 밝은 측면을 보여준 책이다.
두 번째 ‘소프트웨어 누가 이렇게 개떡같이 만드는 거야?’라는 책은, 엄청난 비용과 시간을 투자하여 만든 보안시스템이 보안담당자에게 걸려온 전화 한 통에 의해서 무력화되는 어이없는 상황에 대해서 여과 없이 보여준다. ( 실제, 그런일이 비일비재하게 벌어진다. 한국사회에서는... )
세 번째 ‘위대한 게임의 탄생’이라는 책은, ‘유저를 행복하게 해줄 수 있는 게임은 불행한 개발자에게서 나오지 않는다’라는 말처럼, 1편과 2편의 매우 재미있고, 흥미로운 게임 개발의 세계에 대해서 보여주고 있다.
1편은 주로 해외 게임들, 2편은 국내 게임 개발과 관련된 내용들로 재미있게 구성되어 있는데.
개인적으로 2편이 더 재미있고 흥미로웠다. 소프트웨어라는 것이 소프트웨어 개발자들 이외의 세계와 연결되어진 통로와 실제 생활들을 적나라하게 보여주는 아주 극과 극을 달리는 중요한 세 개의 서적이 되겠다. 전문가의 입장, 황당한 현실, 그리고. 멋진 개발의 모습.. 이 3권이면 소프트웨어 개발의 전체를 간단하게나마 소개할 수 있다고 본다. ( 동네 도서관에서도 쉽게 빌려 볼 수 있는 책이다. 필독을 권해본다. )
하지만, 필자가 경험한 한국의 개발환경은 참으로 지루하고, 재미없고, 난해하며, 힘든 상황이 반복된다. 정말로, 현실의 소프트웨어 개발은 참으로 아주 지루하고 재미없고, 기계적인 반복 작업의 연속이라고 설명된다.
물론, 재미있는 흥미요소들을 모두 제외하고, 무미건조한 프로세스로만 살펴보게 되면 그렇다는 것이다.
그렇다, 이런 재미없고, 반복적인 실제 소프트웨어 개발을 하는 방법과 절차만 남겨보면 그러한 셈이다.
소프트웨어 개발과정을 도식화하면 위의 그림과 같다.
‘정해진 명세’에 따라서, ‘지시된 설계’를 만들고, ‘구현’하고 ‘테스트’를 하는 과정을 무한 반복하는 것이 소프트웨어 개발을 포장 없이 표현한 것이다. 실제, 소프트웨어 개발의 환경은 이렇게 ‘무의미한 작업’의 계속된 반복 인지도 모른다. ( 정말 재미요소를 빼면 그렇다. )
필자도 ‘기업용 애플리케이션’을 만드는 데 있어서 이런 단순 반복적인 공정을 통하여 만들어진 산출물이 가장 효과적이라는 것에 대해서 부인하지 않는다. 대부분의 기업용 애플리케이션은 다양성과 창의성은 필요 없고, 구체적이고 확실한 결과물만을 원하는 경우가 많다.
실제 그 도메인과 업무의 매력이 충분하게 느껴지지 않는다면, 소프트웨어 개발은 정말 지루하고 재미없는 일이 되는 것이 맞다. 어떤 회사에서 어떤 것을 어떻게 만들고, 누구와 같이 일하느냐가 정말 중요하게 된다. 그런 것이 없다면, 소프트웨어 개발은 정말 재미없는 일이 될 가능성을 가지고 있다.
학생들이 소프트웨어 개발에 대해서 환상과 착각하는 여러 가지 이유 중의 하나가, 소프트웨어 개발은 정말 ‘창의적인’것을 요구하는 것이 많을 것 같다고 착각하는 것이다. ( 대부분의 국내 소프트웨어 개발은 ‘창의적인’것은 그다지 필요 없다. )
물론, 사용자에 대한 고려, UX, 서비스의 풍부함을 연구하고 이를 구현하여 서비스를 자유롭게 발전시키는 식의 개발이 가능한 곳도 있으며, 이러한 환경에서 프로그래밍을 구사하고, 그것을 표현하는 일을 하는 사람들도 없는 것은 아니다. 하지만, 과연 그러한 일을 하는 사람이 얼마나 될 것인가? 특히, 대한민국에서?!!!
새롭게 시작하는 후배들이여, 구로 디지털단지에서 오전에 출근하는 개발자들과 오후에 퇴근하는 개발자들을 전철역에 서서 바라보아라. 얼마나 척박한 개발자의 삶을 살고 있는지 생각해보라는 것이다.
언제부턴가, 소프트웨어 개발자들의 전통적인 개발자 커뮤니티는 쇠퇴하기 시작했다. 과거에는 소프트웨어 개발자 커뮤니티를 보지 않고, 바라다보지 않고 있으면, 개발일을 못하던 시대가 있었다. 물론, 아직도 그러한 개발자 사회가 있기는 하다. 자바 개발자 커뮤니티는 여전히 튼실한 사용자 커뮤니티를 유지하고 있으나, 그밖에 커뮤니티들은 대부분 과거의 영광들을 모두 잊어버렸다.
더 심각한 것은 ‘현재의 개발자들은 기술을 공유하고, 자신의 생각을 토론할 수 있을 만큼의 여유가 사라졌다는 점’이다. 지금, 구로디지털단지역에서 내리고 오르는 개발자들이 출퇴근 시간에 스마트폰을 가지고도 개발자 커뮤니티에 글을 올리거나 접속할 마음의 여유가 사라졌다는 것이 가장 슬픈지도 모르겠다. 물론, 이러한 개발자 커뮤니티에 의존하지 않더라도, 쉽게 정보를 찾을 수 있는 시대가 된 것도 또 하나의 원인인지 모르겠다. 하지만, 현재에도 매우 활성화된 개발자 커뮤니티들이 존재하고 있고, 왕성하게 활동한다. 그러한 왕성한 활동을 보이는 조직의 공통점이 몇 가지 있다.
그것은 ‘신입/초보’에 대한 배려를 잊지 않고 있는 곳이다. 물론, 이러한 개념을 확대하면, 초보 사원들에 대한 ‘배려’를 잊지 않는 소프트웨어 개발자 기업이 최고의 기업이라 할 수 있겠다.
잉여 개발과 독립 개발을 꿈꾸는 사람들이 스타트업을 시작하는 시대가 됐다.
정말 개발일을 즐기고 싶다면, 차라리. 직업적인 프로그래머가 되지 않는 것이 방법이기도 하다. 아예, 독립 개발과 잉여 개발을 취미로 시작하면서, 자신의 독자적인 설루션을 찾거나 만드는 방법도 최고의 방법이다.
굳이, 소프트웨어 개발을 회사에 입사해서 직업적인 관점에서 접근하는 것만이 최선의 시대가 되지 않았나 한다. 요 근래 뛰어난 개발자들을 보면, 전공을 소프트웨어 관련으로 공부하지 않고서도 전문가의 경지에 이른 사람들이 더 많아졌다.
아이러니하게도 융합의 시대에 타 도매 임의 전문적인 지식을 가지고 소프트웨어 기술을 효과적으로 활용할 줄 아는 인재가 최고의 인재로 대우받는 시대가 된 것 아닌가 하다. ( 실제 필자의 주변에도 의사, 수의사 등 다른 전공을 했지만, 최고의 소프트웨어 엔지니어가 된 사람들이 부지기수이다. )
이제, 각자 창업을 하거나, 개별적으로 자기가 하고 싶은 일이나 설루션, 서비스를 각자 알아서 개발하더라도, 이를 충분하게 홍보하고, 주변에서 활용할 수 있게 하는 다양한 서비스들이 매우 많이 생겨났다. 그래서, 소프트웨어 개발을 굳이 회사에 입사해서 할 필요가 없어진 것도 사실이다. 하지만, 소프트웨어 개발자가 되는 것과 창업을 하는 것은 완전 다른 영역이다.
요리사가 요리만을 잘한다고 전문 레스토랑을 오픈하고 손님을 맞이할 수 있을까? 절대 그렇지 않다. 요리와 전문 레스토랑 경영은 사실상 다른 영역이고, 실제 산업계에 들어가 보더라도, 전문 경영인의 세계와 전문 요리의 세계는 완전하게 구분되어있다.
물론, 드라마나 영화에서처럼 둘 다 잘하는 천재들이 실제 세계에도 가끔 존재하기는 하나, 말 그대로 그것은 소수의 타고난 천재들만 가능하다. ( 뭐, 실제 보면.. 정말 대단한 사람들을 볼 수 있다. )
대부분의 요리사들처럼, 개발자들도 경영에는 빵점이거나 소질이 없는 경우가 많다. 창업의 세계는 완전하게 별개의 영역이므로, 나중에 다시 한번 소프트웨어 개발과 창업에 대해서 언급할 때에 따로 이야기를 하도록 해보자.
소프트웨어 개발만 하고 싶어요. 학교 공부는 좀 적게 할 방법이 없나요?
소프트웨어 개발을 하는 사람이, 글을 잘 쓰거나, 그림을 잘 보거나 이해하는 것들의 주변적인 지식이 필요 없을까? 아니다. 소프트웨어 개발을 제대로 멋지게 하려면 그러한 인문적인 지식이 오히려 남들과 다를 정도로 탁월하고 상식 또한 시야가 매우 넓어야 한다.
필자가 아는 뛰어난 소프트웨어 개발자들 대부분이 특정 분야에서는 매니악을 넘어선 오타쿠 수준이고, 독서능력과 수학적인 능력, 거기에 어학적인 능력까지 탁월한 소프트웨어 개발자들이 더 멋지게 성장하는 모습을 많이 보아왔다. 오히려, 10대 때에 미치도록 다른 분야에서 탁월한 성과나 효과적인 지식들을 습득한 사람들이 더 뛰어난 개발자가 되는 것을 많이 보게 된 것이다. 그것은, 자신의 재능과 지식을 소프트웨어 개발이라는 매우 기능적인 것으로 통합한 것이기 때문이다. 소프트웨어 기술은 이렇게 ‘지식’과 ‘정보’를 자유롭게 다루는 기술이다. 그래서, ‘지식’과 ‘정보’가 없이는 아무리 뛰어난 소프트웨어 기술도 못 없는 망치일 뿐이다.
하드웨어 개발도 결국, 소프트웨어 파워가 중요하다.
SSD의 핵심은 낸드 플래시 메모리이다. 그리고, 그 낸드 플래시 메모리의 저장방법은 조금은 복잡하지만 쉽게 설명하면, 플로팅 게이트라 불리는 메모리 셀 구조에 있어서 전압을 가해서 전압이 낮으면 1, 전압이 높으면 0으로 할당하여 저장하는 방법이다. 전압을 상승하고 내려서 0, 1을 쓰는 방법을 사용해서 데이터를 저장한다. 그리고, 그 사이에 ‘절연막’을 통과하는데, 이 ‘절연막’이 손상되어지면 더 이상 쓰기 기능이 작동하지 않으므로, SSD의 수명이 종료되는 방법이다. ( 아주 자세한 내용을 정말 ~~ 간단하게 줄인 것이다. )
현재는, 이 0, 1의 전압을 좀 더 세분화하여 3단계로 구분하는 방법까지 개발되었고, 이렇게 세분화하다 보니, 쓰기를 한 번 더 하는 방법을 통하여 유지하는 방법까지 개발되어서 2013년도 이후에는 좀 더 용량은 커지지만, 속도는 조금 떨어지는 방식의 SSD도 출시되었다.
이러한, SSD의 핵심 또한 소프트웨어라고 볼 수 있다. 똑같은 하드웨어의 구조를 어떻게 소프트웨어로 구사하느냐가 그 절대적인 용량이나 속도를 비약적으로 증대시킬 수 있다.
정말로 소프트웨어 공학적인 요소와 품질요소를 중요시 여기는 고품질의 영역이 필요한 항공기나 원전과 같은 곳의 중요한 컨트롤 소프트웨어들의 역할은 한두 줄로 설명할 수 있는 내용의 것들이 아니다. 말 그대로, 소프트웨어가 거의 전부나 다름없다.
자동차도 이제는 거대한 소프트웨어 덩어리에 속한다. 소프트웨어 파워는 정말 대단하다.
소프트웨어 개발자를 꿈꾸는 부모님들에게 한마디 하자면...
필자도 대학교 2학년 큰아들 녀석을 둔 아이의 아빠입니다. 개인적으로는 소프트웨어 개발자가 되었으면 바람도 있고, 그 녀석의 어머니도 마찬가지 바람이었습니다. 정말, 소프트웨어 개발자의 미래가 충분하게 희망적이기 때문이죠.
하지만, 큰아들 녀석은 '문예창작학과'로 진학했습니다. 프로그래머인 아빠에게는 큰 영향을 받지 않았나 봅니다. 하지만, 이렇게 글을 쓰는 아빠의 모습이 일부 영향을 주지 않았나 합니다.
아이가 커가면서 프로그래머가 되라고 강요는 하지 않았습니다. 다만, 초등학교 시절에 정보처리 기능사 시험을 볼 정도로 개인적으로 가르 치키는 했습니다. 처음에 정보처리 기능사 시험을 패스할 정도로 열의를 보이는 모습을 보여서 어린 녀석이 행렬을 풀어내는 것이 너무 좋았지만, 그 녀석이 나이를 먹고 나서 다시 물어보니.
아빠랑 대화하고 같이 무언가를 하는 것 때문에 하는 척했다고 하더군요. 아빠의 과도한 욕심 맞습니다. 그래서, 요즘은 자기가 좋아하는 일을 하면서 살았으면 좋겠다는 생각을 하고 있습니다. 멋진 작가가 되기를 바랍니다.
부모 된 입장으로써 아이가 ‘행복’하기를 바란다는 것은, 타인에게 존중과 인정을 받는 삶을 만들어주는 것이라고 생각합니다. 물론, 돈도 어느 정도 필요한 일이겠지만요. 부모 된 입장으로써 아이에게 조언을 해주는 것은 포기하면 안 됩니다. 최소한, 아이가 행복하게 어떤 일을 선택할 수 있게 하는 것 까지는 해줘야 할 것이라고 생각합니다.
분명, 대한민국 IT의 불합리한 글과 미래에 대한 수많은 이야기들이 주변에 많이 이야기되고 있는 것은 알고 있습니다. 하지만, 이미 전 세계적으로 소프트웨어 개발자는 최고의 직업이며, 앞으로도 더욱더 중요한 역할을 담당할 것으로 믿어 의심치 않고 있습니다.
이미, IT기술은 모든 비즈니스의 중심적인 역할을 담당하고 있고, 빅데이터라는 새로운 개념은 비즈니스의 기회까지도 IT를 통해서 만들어 나간다고 할 정도로, 소프트웨어의 세계는 매우 미래지향적인 직업입니다.
다만, 대한민국의 대부분의 소프트웨어 개발자들의 2/3 정도는 일반적이고 ‘따분하고’, ‘지루한’, 기업용 소프트웨어를 개발하는 직업에 종사하고 있습니다. 하지만, 이런 일은 계속 줄어들 것이며, 향후 정말 자동화되거나 패키지 시장으로 진입하는 시대가 올 것입니다. 냉정하게 꿈꾸는 자가 이야기하자면, ‘SI 서비스업’은 결코, 우리가 이야기하는 IT나 소프트웨어 개발자들을 표현할 수 있는 세계가 아닙니다. 말 그대로 ‘인력 중심의 서비스업’ 일 뿐이죠.
과거의 전산화 소프트웨어들이 단지 효율성을 높이기 위한 도구였다면, 현재의 소프트웨어들은 인간의 삶과 질을 향상하기 위한 소프트웨어들로 발전하고 있다는 것을 말하고 싶다는 점이다.
제대로 된 소프트웨어 개발자가 되려면 무엇을 공부해야 하는가?
최소한 제 주변에 있는 고급 개발자들이 동의하는 첫 번째는 바로 ‘소프트웨어 이론’이 정립되어진 사람입니다. 자료구조라고 이야기하는 소프트웨어와 관련된 기초이론이 튼튼해야 한다는 것이 그 첫 번째 일 것입니다. 아무리 빠르게 변하는 소프트웨어의 세계이지만, 기본적인 기초이론은 아마도, 변하지 않을 것입니다.
둘째는 오픈소스와 같은 개발 커뮤니티에서 공동으로 꿈을 꾸는 그 무언가를 한번 만들어 보는 것입니다. 이는, 적극적으로 무언가를 위해서 자신의 시간을 투자하고 ‘잉여’를 제대로 활용할 줄 아는 사람으로 변화하게 합니다. 적극적인 자신의 모습이 변화되는 모습을 느끼게 될 것입니다.
마지막 세 번째는 폭넓은 상식과 인문학적인 개념입니다. 이제, 소프트웨어는 사람과 사람을 이해하지 못하면, 제대로 그 무언가, 어떤 서비스를 제대로 구현하지 못하는 시대가 되었습니다. 이제는, 세상의 새로운 가치를 창출하거나, 사람들이 즐거워할 그 무언가를 위해서 자신의 ‘잉여’를 풀 줄 아는 사람이 최고의 인재로 대우받는 세상입니다.
특히, 마지막 세 번째는 이제 막 중/고등학교를 다니거나, 소프트웨어 개발에 눈을 뜬 어린 개발자들에게 꼭 하고 싶은 말이기도 합니다. 이제, 소프트웨어 개발은 ‘인문학’적인 소양이 없으면, 더욱 성장할 수 없는 시대가 되었고, 필자가 예전에 꿈꾸었던 소프트웨어 개발을 꿈꾸던 시대와는 조금은 다른 세상이 된 것이다.
필자가 소프트웨어 개발을 꿈꾸던 시대에는 인문학적인 소양이 없어도, 오로지 컴퓨터 소프트웨어 언어만 익숙하면, 소프트웨어 개발이 가능한 정말 낭만적인 시대였습니다. 왜냐하면, 당시의 소프트웨어 개발의 대부분은 지루하고 재미없는 기업용 소프트웨어의 개발이 대부분이던 시대였으니까요.
하지만, 현재는 그렇지 않습니다. 개발은 쉬워지고, 더 다양한 디바이스와 커넥티드 되는 센서 기술들도 우리 주변의 사물들과 소통하는 시대가 되었습니다. 물건과 정보, 가치들을 제대로 이해해야만 소프트웨어를 정말 잘 만들 수 있는 시대가 된 것입니다.
그래서, 현재의 어린 개발자분들은 좀 더, 인문학적인 소양도 같이 끌어올려야만, 제대로 된 소프트웨어 개발이 가능할 것입니다. 물론, 여기서 이야기하는 '인문학적'인 내용이란 인간, 사회, 제도, 법, 윤리 등을 이야기하는 것입니다. 모두, 학교에서 기본적인 것들을 가르치고 있죠.
그리고, 회사와 동아리의 차이점에 대해서 알아야 합니다.
소프트웨어 개발자들의 세계는 생각보다 오픈되어 있을 것 같지만, 실제 사회에 들어와 보면, 그렇지 않다는 것을 처음 느끼는 순간 매우 큰 좌절에 빠지기도 한다. 안타깝지만. 회사 동료들 사이에서는 적절한 거리를 유지하는 것을 배워야 하는 것을 알아야 한다.
학교 때의 동아리의 선배처럼 인정으로 이끌어주는 환상은 말 그대로 환상일 뿐이다. 회사라는 조직에서는 ‘이윤추구’라는 절체절명의 명제를 실현해야 하기 때문에, 다른 사람의 아이디어나 성과를 집어삼키는 경우는 너무도 많다, 아니. 거의 대부분이라고 해야 맞을 것이다.
물론, 그런 식의 아귀다툼과 같은 회사는 잘 발전도 못하고, 비전도 없는 회사가 되기 때문에 만일 그러한 회사에 승선(?)한다고 하면, 빨리... 그 배를 버리는 것이 아주 현명할 것이다. 대부분의 국내의 기업에서는 내가 가진 스킬과 리소스를 오픈하지 않고 꽁꽁 숨겨두는 스킬을 발휘해야 하는 회사에 가야 할 것인지도 모른다. 그리고, 개발자 직업이 가지고 있는 고충에 대해서도 심도 있게 고민해야 합니다.
이제는 평생직장이 아니라, 평생 직업만이 존재하는 세상이 되었다는 것, 정말로, 사람들이 바라는 자유로우면서도 돈을 많이 주는 자리는 존재하지 않는다는 것이다.
개발자! 소프트웨어 개발자!
나이 40을 넘겨보니, 소프트웨어 개발 이외에도 정말 많은 것을 공부하고, 알게 되었을 때에 더 깊고 재미있는 세계를 알게 한 것이 소프트웨어 개발의 세계였다는 생각을 해본다. 보통 소프트웨어 개발에 눈을 뜬 젊고도 어린 개발자들은 특정 전문적인 분야나 스킬에 집중해서 그 부분만을 미친 듯이 파고드는 경향이 간혹 있다. 물론, 필자도 그런 경향이었다.
정말 즐겁게 이 소프트웨어 개발일을 하고 싶다면, 폭넓은 시야와 지식을 갖추는 것이 최선이며 최고의 길이라는 것을 깨닫기까지는 20년이라는 세월이 훌쩍 지났는지도 모르겠다. 그리고, 아무리 한 분야만 집중하는 개발자라고 하더라도 몇 가지 경험을 꼭 해봤으면 좋겠다.
하나. 전문화된 영역이 아니라 전체 영역으로 소프트웨어 개발을 살펴볼 수 있는 틀이 갖추어진 정형화된 기업( 보통, 큰 기업에서 이런 현상을 대부분 가진다. )보다는 아직, 그 틀이 많이 갖추어지지 않은 기업에서 자신의 역량으로 그 틈을 메워보려 하는 것.
둘. 신입 때에 100만 원의 급여를 따라다니다 보면, 냉정하게 10년 20년 후에 1천만 원 이상의 손해를 보는 것이 신입 때의 잘못된 선택이다. 언제나, 자신을 대우해주고, 자신을 존중해주는 기업을 찾으라는 것이다.
셋. 소프트웨어 개발자는 게으르다. 그래서, 언제나 자동화를 하려 한다. 하지만, 이러한 자동화라는 측면은 사람의 능력을 확장시키는 자동화라고 생각한다. 계속적으로 발전 가능성이 있는 자동화이지, 사람을 기계화시키는 자동화라는 개념이 아니라는 것이다.
넷. 행복을 찾으라는 것이다. 아무리, 소프트웨어 개발이 좋다고 하더라도, 가족. 사람만 하겠느냐는 것이다. 우리가 아무리 ‘돈’을 받고 무언가를 만들어주는 ‘공돌이’의 역할만을 한다고 하더라도. 나의 행복과 타인의 행복, 그리고. 내가 만든 소프트웨어를 통해서 사람들이 행복을 얻을 수 있게 하는 것이.. 소프트웨어 개발자로서의 최고의 행복이 아닐까? 개인적으로 ‘게임’ 업체에 있는 친구에게 가끔 하는 이야기가 그것이다. ‘마약’ 장수가 되지 말고, ‘즐거움’을 줄 수 있는 게임을 만들라고 이야기한다. 필자도, 과거에 작은 실수로 ‘온라인 포커 게임’과 같은 소프트웨어를 만들라고 지시한 적이 있다. 다, 무식함(!) 때문이다.
소프트웨어 개발자는 ‘즐거움’은 만들어도, ‘마약 장수’가 되면 안 된다.
세상이 자본주의가 극단적으로 변해가고, ‘돈’을 선택할 수밖에 없는 삶을 살아가야 한다고 하지만, 내가 만드는 소프트웨어가 그런 억압의 수단이거나 ‘불법’적인 수단이 되는 것은 피해야 하지 않을까?
아무 생각 없이 온라인 도박 사이트를 만들고, 마약과도 같은 불법적인 소프트웨어를 만드는 소프트웨어 개발자들이 후배들 중에는 생겨나지 않기를 바란다. 물론, 우리가 만들고 있는 소프트웨어는 자본주의를 가속화한다는 것은 이미 어쩔 수 없는 일이라고 하지만, 소프트웨어 개발자들은 잊어서는 안된다. 우리는 언제나 사람을 생각하고, 사람을 지향하는 소프트웨어를 만들고 있음을.
그리고, 내가 행복한 만큼, 다른 사람도 행복할 수 있는 소프트웨어를 만드는 것만이 진정한 소프트웨어 개발자가 되는 한걸음 한걸음 아닐까?
마지막으로, 꿈꾸는 자가 ‘인재를 구 할 때에 사용하는 말’로 끝맺음을 하겠다.
‘소프트웨어 개발에 있어 '창의력'을 만들기 위해서는, 적절한 '잉여'가 필요하다고 생각합니다. 그리고, 적절한 보상과 비전이 같이 있어야죠. 프로젝트에 헌신한다는 것은 매우 어려운 일이니까요. 대부분의 소프트웨어 개발은 계획대로 되는 것이 아니라는 것을 잘 알 수 있습니다. 소프트웨어 개발자의 최고의 인재상은 잉여를 부여하면, 무언가를 도전할 수 있는 생각을 가진 사람입니다. 소프트웨어 개발은 그런 잉여를 바탕으로 완성되는 것이라고 생각하니까요.
이 글을 읽는 당신께서 소프트웨어 기술도 있고, 성격까지 좋은 사람이라면 정말 좋겠습니다. 만일 그러신 분이 소프트웨어 개발자로 성장하신다면 그에 대한 충분한 보상을 다짐할 수 있는 조직이나 단체, 회사는 손쉽게 찾으실 것입니다. 정말입니다.
그리고, 소프트웨어 개발회사가 꿈꾸는 인재는 그렇습니다. 가끔은 푸른 하늘을 보러 농땡이 치러가자고 팀장을 꼬드기는 그런 재미있는 동료들이 있는 그런 곳이면 좋겠습니다. 아무리, 소프트웨어 개발이 좋다고 하더라도. 푸른 하늘만 할까요? 그런 마음의 여유가 넘치는 소프트웨어 개발자가 되시고, 그런 회사와 조직을 만드십시오.
소프트웨어 개발을 통해서 맹목적인 목표나 아주 거창한 세계 정복 계획은 세우지 않고 있지만, 재미있고. 인간사회에 도움이 되는 그런 서비스를 개발하고 싶어서 모인 집단(?)을 찾으십시오. 그런 사람들과 무언가 끄적거리며 도전해보실 그런 뜨끈한 마음을 가진 개발자를 이 늘었으면 좋겠습니다.
충분한 능력에 어울리는 대우를 받는 시대, 그것이 소프트웨어 개발자의 미래입니다. 약속합니다. 뭐, 가끔은 팀워크가 좀 불성실해도, 내가 맡은 일은 책임질 수 있는 자신감이 있는, 비딱한 개발자도 좋습니다. 능력 없는 것보다는 성격이 약간 불완전한 것도 그 사람의 개성이니까요. 우리 모두 그런 소프트웨어 개발자가 되어서 실무에서 일하면서 만나면 웃음 한번 지을 수 있는 사람들이 되었으면 합니다.