소프트웨어 혹은 SW 정책 관련하여 몇 가지 주장들에 대한 의견.

소프트웨어를 하는 사람으로서 의견을 표하고 싶은 몇 가지 소프트웨어 정책들이 있어서 얘기를 해보려고 한다.

소프트웨어는 국내에서는 스마트 혁명이라고 할 아이폰의 등장 이후 너무 갑작스레 중요한 화두가 되어버린 것 같다.

스티브 잡스의 말했던 기술(technology)과 인문 교양(liberal arts)의 교차로라는 말 또한 지나치게 이상하게 비틀려 확대 해석되는 일까지 생겼다.

그리고 IT 선진국이지만 Software는 그닥 선진국일 수 없는 국내 현실을 두고 여러 가지 의견과 진단들이 나왔다.


이러한 현상은 소프트웨어를 알지 못하는 (혹은 알 수 없고 알 필요도 없는) 공공 부문과 하드웨어 방식의 기업들에 의해 뒤틀린 또하나의 갈라파고스 현상이라고 생각한다.
현실에서 존재하지 않는 망상적인 "한국적 소프트웨어"라고 할까?

국내의 몇 가지 현상들에 대해 의견을 제시하려고 하는데 먼저 한 가지 확실히 해둘 것이 있다.
소프트웨어에 대한 문제는 국가의 경제 상태나 정책과 밀접하게 연결된 부분이 많아서 정치적인 문제가 개입될 수 있다.

내 의견은 정치적 관점과 완전히 무관하지는 않다. 하지만, 분명하게 해두고 싶은 부분은 내 의견의 가장 기본적인 출발점은 "사실이란 정치적 관점 등의 해석에 의해 바뀔 수 없다"라는 과학적 사고이다.

과학적 사고란 가설을 세우고 실험을 통해 검증 가능한 것들을 다룬다.
물론 실험이 어렵고 검증이 어려운 영역도 있지만, 정치적 관점이 사실을 정의하지 않는다는 것이다.

"어떤 정치적 입장에 유리한 것을 사실이라고 보는" 듯한 전도된 사고는 사절이다.

특히 SNS는 매우 전파력이 강하기 때문에 감성적으로 가까운 것들이 사실인 것처럼 쉽게 전파되는 경향이 있다.
감성적으로 전파되는 것들에 대한 논리적인 필터들 역시 쉽게 전파될 수 있으면 좋겠지만, 사람이란 모든 사안들에 대해 이성적 검증에 시간을 투입할 여유가 많지 않으므로 감성적 공감을 통해 전파하는 게 훨씬 우세하다.
나 또한 이런 부분에 많이 노출되어 있음을 부정하지 않겠지만, 적어도 소프트웨어에 관련된 부분은 감성적 판단보다는 내가 가진 소프트웨어에 관련된 논리를 기반으로 논리적인 판단에 의존하려고 노력한다.

한마디로 내 의견들이 대부분의 정치적인 사람들과 또 소프트웨어 관련된 일을 하는 사람들을 불편하게 할 수 있다는 것이다.

물론 SNS를 통해 내게 전달된 의견들에 대한 의견 불일치들이 이 블로그를 없는 시간 쪼개서 시작하게 된 이유이기도 하다.

1. 왜 소프트웨어가 중요한가
왜 국가적으로 소프트웨어가 중요하다고 말하는가? 그리고 창조경제를 말하는 정부 정책의 핵심이 왜 소프트웨어이어야 하는가?

창조 경제가 무엇인지에 대해 자세히 알지 못하고 또 현재까지 드러난 정책을 봐서는 실체가 있는지 알기도 어렵다. 다만 경제 정책의 큰 화두를 creativity로 잡았다는 데에 대해서 공감을 한다.

소프트웨어는 프로그램이다.
사람이 작성한 지시들의  집합이다.

왜 이것이 이렇게 중요한가?
왜 소프트웨어가 Smart와 Creative한 속성을 가지는가?

나는 사람이 하기 때문에 그렇다고 본다.
사람의 지혜에 따라 달라지기 때문이다.
소프트웨어는 상대적으로 적은 비용으로 프로그램을 교체할 수 있다. 유사 기능을 가진 다른 프로그램을 선택할 수도 있고, 버그를 수정한 패치를 적용할 수도 있고, 새로운 기능을 탑재한 버전으로 업그레이드할 수도 있다.

하드웨어를 업그레이드하는 것은 공장의 제조 라인을 수정하는 것부터 시작한다.
교체는 또 얼마나 어려운가?

소프트웨어 중에서도 애플리케이션 소프트웨어와 시스템 소프트웨어 혹은 플랫폼 소프트웨어는 구분된다.
시스템 소프트웨어는 애플리케이션 소프트웨어를 실행시켜주는 플랫폼 환경 역할을 하는 소프트웨어이다.

플랫폼 소프트웨어는 플랫폼의 규격을 준수한다면 어떤 애플리케이션 소프트웨어든지 설치하여 실행할 수 있는 능력을 가지고 있다.

애플리케이션 소프트웨어를 추가로 설치하면 무궁무진한 새로운 기능을 가질 수 있다는 뜻이다.

사람의 지혜가 더 지혜로울수록, 또 창의가 더 새로울수록 생각하지도 못했던 기능들을 더 가질 수 있는 게 소프트웨어이다.

물론 하드웨어 없이 시스템 소프트웨어가 실행될 수는 없고, 없는 하드웨어 기능을 사용할 수는 당연히 없지만 일단 하드웨어를 갖추면 시스템 소프트웨어도 기능을 업그레이드할 수 있으며, 원하는 기능을 갖춘 애플리케이션 소프트웨어를 언제든지 탑재할 수 있는 확장성과 유연성이 제공된다.

게다가 소프트웨어의 능력이 엄청나게 커지고 있다.
이 역시 사람들의 지혜의 발전이다.
사람의 인지, 판단 능력을 소프트웨어가 대체할 수 있을 가능성이 매우 높아질 정도로 소프트웨어 기술이 발전해왔다.

어떤 문제를 해결하기 위해 소프트웨어적인 접근을 할 때, 그 수단의 수준이 급격하게 높아졌다는 뜻이다.

하드웨어의 발전 또한 사람의 능력이 중요하지 않은 게 아니지만, 소프트웨어는 시작부터 끝까지 사람이 개입함으로 인해, 사람의 창의적 수준에 따라 발전 속도가 엄청나게 빠를 수 있고 또 그 다양성 측면에서 하드웨어와 비교할 바가 아니다.

다시 생각해보자. 왜 소프트웨어가 중요할까?
국가 정책 관점에서 소프트웨어 육성은 어떤 의미를 가질까?

산유국도 아니고 땅덩어리가 넓은 것도 아니지만 엄청난 교육열과 나쁘지 않은 수학적 두뇌, 집중력을 가진 민족으로서 어느 정도 기술 혁신이 포화 상태에 이르고, 차별적 우월성을 주장하는 데 한계에 이른 하드웨어 부분에 이어 새로운 미래 분야라고 한다면 소프트웨어가 중요한 역할을 하지 않을 수 있을까?

여태 우리는 소프트웨어에서 특별한 성취를 해오지 못했다. 하지만, 미래의 경쟁은 소프트웨어와 같은 창의적 영역에서 발생한다.
우리가 더 잘하지 못한다고 해서 포기해도 되는 게 아니다.
지금도 하드웨어와 소프트웨어의 융합이 여러 영역에서 진행되면서 차별적 우월성은 점점 더 하드웨어 기술이나 공정이 아닌 소프트웨어 특히 시스템 소프트웨어 영역에서 결정되고 있다.

단언컨대 미래는 점점 더 사람의 창의적 지혜가 중요한 영역이 더 큰 역할을 할 것이라고 생각한다.

창의적 지혜가 가장 많이 발휘될 수 있고, 쉽게 산업화될 수 있는 부분이 소프트웨어이다.

2. 무엇이 소프트웨어에서 중요한가
우리는 그다지 소프트웨어에서 잘하지 못했다.
국가가 투자를 적게 한 건 아니라고 생각한다. 다만 방법이 틀렸다.
소프트웨어가 성공한 나라는 미국, 핀란드, 굳이 하나 더 꼽자면 이스라엘 정도인 것 같다.

인도는 미국의 소프트웨어 백업 국가라고 얘기를 하지만, 아직 소프트웨어적으로 성공한 나라로 칭하기에는 이른 것 같다.
인도인들이 미국 소프트웨어 산업에서 점점 더 중요한 역할을 하지만, 정작 인도에서는 그닥 창의적인 소프트웨어를 만들지 못하고 있다.
SI 프로젝트를 열심히 하는 것은 알겠지만...
중국은 개개인들의 능력은 매우 대단하다. 소프트웨어 인구도 많고.. 하지만 아직 문화적인 이유로 그룹 창의의 수준에 이르지 못하고 있는 것 같다.

소프트웨어 중 가장 중요한 부분은 앞에서 언급한 플랫폼으로 사용되는 시스템 소프트웨어가 있고, 그외에 어떤 문제를 해결해주기 위한 솔루션으로서의 소프트웨어를 들 수 있다.

어떤 문제를 어떻게 풀 것인가?
어떤 사람은 복잡하지만 좀더 많은 경우에 동작하는 답을 찾기도 하고 어떤 사람은 단순하지만 특정 영역에서 더 잘 동작하는 답을 찾기도 한다.
독특한 아이디어가 들어가서 전혀 다른 답을 찾을 수 있는 것이 소프트웨어적인 해법들이다.

나는 소프트웨어의 문제 풀이 방식을 악제(惡題, wicked problem)의 방식으로 풀어야 한다고 본다. (다음 블로그 참고 : 소프트웨어 국가 정책을 악제(惡題, wicked problem)적 특성에 맞게)

소프트웨어는 사람의 집단적 창의력을 충분히 활용할수록 더 나은 솔루션을 만들 수 있는 영역이라고 생각한다.

경쟁력 있는 소프트웨어를 육성한다는 것은 집단적 창의를 갖춘 우수한 소프트웨어 팀을 많이 만드는 것이다.

단순히 창의는 소프트웨어만의 문제가 아니라 하드웨어든 융합이든 모든 영역에서 마찬가지라고 생각하지만, 소프트웨어에서 가장 큰 차별성을 만들 수 있다고 생각한다. 소프트웨어를 포함하는 융합에서도 마찬가지이다.

그럼 왜 우리는 성공하지 못했는가?
먼저, 수많은 시행착오를 통해 단련될 소프트웨어의 팀을 만들 때까지 기다려주지 않는다.

또, 그렇게 차별화를 만들 수 있는 우수한 두뇌들은 소프트웨어를 선택하지 않고, 의대, 법대를 선택해왔다.

일제 잔재와 군사독재 문화가 여전히 기업과 사회에 강하게 침투해 있어 경직된 조직 문화가 창의를 선택할 수 없게 만든다.

전문성을 갖춘 팀에서 내용을 가장 잘 아는 사람이 판단해야 하지만, 가장 모르는 사람이 판단하는 문화를 갖고 있다.
분업적 조직과 분업적 사고로 융합된 판단을 할 수 없는 조직 문화를 몇 안되는 국내 소프트웨어 기업에서도 선호한다.
즉, 기획 따로, 개발 따로인 문화이다.
기획에서 용역을 주면 개발을 해주는 식의 구조가 그나마 잘나간다는 소프트웨어 기업에도 만연해 있다.
기획부터 개발까지 기술과 고객 문화를 정확하게 공유하면서 최선의 결정을 내리는 문화가 전혀 없다. 사람의 결정이란 세부적 사항에서는 약하더라도 주요한 영역에서는 세부적인 부분까지 이해하고 전체적인 상들을 가지고 있어야 좋은 결정이 가능하다. 다른 사람의 머리를 빌어서 생각을 할 순 없기 때문이다.

모든 조직과 과정을 통해 끊임없는 feedback을 받아 진화시킬 수 없다면 소프트웨어적인 솔루션을 만들 수 없다.

3. 소프트웨어는 소프트웨어 공학이나 SI와 그닥 상관이 없다
소프트웨어와 소프트웨어 공학의 관계는 매우 특이하다.
많은 사람들은 소프트웨어 공학의 발전을 통해 좋은 소프트웨어가 나오는 것으로 오해하고 있다.
유감스럽게도 소프트웨어 공학은 소프트웨어에 크게 기여를 하는 학문이 아니다.
나는 이것을 이렇게 표현한다.
"소프트웨어 공학은 소프트웨어 품질의 하한을 보장하기 위한 학문이다."

하지만, 경쟁력은 소프트웨어 품질의 상한을 높임으로써 만들어지고, 이것은 철저하게 사람들의 창의(내 기준으로는 집단적 창의)에 의존한다.

우리나라 SW 국가정책의 많은 부분이 소프트웨어 공학을 적용하려고 애쓴다.
소프트웨어 시장이 없고, 고객이 없는 현실을 반영한다고 본다.
미국에서 국가가 소프트웨어를 만들거나, 소프트웨어 스타트업 육성을 위해 관여하겠다고 했을 때 옆에서 지원이나 잘하라고 실리콘밸리에서는 화를 냈다.

눈에 보이는 수치를 미리 표현하기 어렵고 예측하기 어려운 소프트웨어의 상한쪽 품질을 국가 정책이 해결하기는 어렵다.
그런 시장이 만들어지도록 진흥책을 써야지, 국가가 직접 소프트웨어를 만들겠다고 나서면 그 소프트웨어가 정말 경쟁력 있는 창의적 솔루션이 될 수 있을 것인지, 아니면 민간 영역에서 진정한 창의적 솔루션을 만들어도 시장에 들어오지 못하게 가로막는 걸림돌이 될 것지 예상을 못한다면 그건 참으로 무책임한 정책이 될 것이다.

앞의 논지에 따라 나는 다음을 얘기할 수 있다.
"SI나 단순 개발은 소프트웨어의 핵심도 경쟁력도 아니다."

물론 SI가 대규모의 프로젝트를 효율적으로 수행함에 있어 중요한 역할을 하고 SI가 무용한 것은 결코 아니지만, 소프트웨어의 핵심 경쟁력은 SI가 다루는 영역과는 거리가 있다.

4. 그들은 소프트웨어를 잘할 수 있을까?
이 질문은 참 껄끄러운 질문이다.

먼저 그들에 이미 소프트웨어 기업으로 성공해온 제니퍼소프트를 대입해보자.
개인적으로 제니퍼소프트를 정말 좋아하고 응원한다.
이원영 대표의 기업 철학을 정말 좋아한다.

다만, 이것은 내가 갖고 있는 우려이다.

제니퍼소프트가 이루어온 것들은 앞으로도 기술 혁신을 통해 계속 정진하지 않으면 금새 무너질 수가 있다.
너무 당연한 이야기이다. 그리고 그 기술이 SW 환경의 변화와 혁신이 가속되면서 금새 바뀐다. 어떤 소프트웨어 기업도 기술의 혁신 없이 존재할 수 없다.

소프트웨어 기업이 제품의 새로운 버전을 내놓거나 새로운 제품을 내놓는 것은 회사의 운명과 직결된다.
기술 변화를 잘 감지하고 준비하여,  글로벌 기업과 기술에서 경쟁할 수 있기를 기원한다.

회사의 복지 정책이 너무 유명세를 타면서 혹시나 내부의 기술 경쟁력에 소홀히 하지는 않나 하는 우려에서 언급해봤다.

화이팅!

소프트웨어 기업이 아닌 재벌 전자업체들도 스마트 혁명 이후 소프트웨어를 매우 열심히 하고 있다. 그들에 이들 전자업체를 넣으면 어떻게 될까?

나는 조급함과 공격적 목표의 차이를 얘기하고 싶다.
더 많이 알수록, 더 중요한 기술을 가질수록, 더 큰 지혜와 창의를 활용할수록 더 신속하고 나은 소프트웨어를 만들 수 있다고 생각한다.
그것과 조급함에 떠밀리는 것은 차이가 있다고 본다.

스마트한 소프트웨어를 만들 팀을 형성하였는가? 그들의 기술과 논리를 충분히 이해하고 의사 결정을 할 수 있는가?

내 판단으로는 아직 그럴 준비가 안된 것 같다. 정말 지금까지 대단한 캐치업 능력을 보여주긴 했지만 지속적으로 연착륙할 수 있을지 모르겠다.

5. 그외. 오픈 소스가 답인가? 인문학이 중요한가?
"오픈소스가 답이다."
나는 이 주장에 대해 좀 한심하다는 생각을 한다.  어느 문제에 대한 답이란 말인가?
소프트웨어 정책은 오픈소스가 답이라는 뜻이라면 소프트웨어 포기가 답이라는 뜻으로 이해가 된다.
그저 아파치와 같은 오픈 소스 재단의 몇몇 모듈에 핵심이 아닌 몇 개 버그들을 수정하는 커미터가 된다고 해서 대단한 일인가.
오픈 소스를 위한 잉여의 시간이 만들어지지 않는 국내 개발자들을 위해 국가가 일부 시간에 대해 책임져주겠다는 건지 무엇인지 모르겠다.
공개와 공유의 가치를 소프트웨어에 적용한 오픈 운동의 거대한 역할을 무시하자는 게 아니다.
시스템 소프트웨어 영역부터 다양한 소프트웨어들이 오픈되면서 선진 기술이 공유되고, 참조할 정보들이 풍부해졌다.
하지만, 그 공유된 기술을 기반으로 혁신할 생각을 하지 않고 오픈 소스를 사용하여 국가가 소프트웨어 솔루션을 직접 만들겠다는 논리로 이어지고 있어 더 황당할 뿐이다.
핵심은 오픈 소스를 그대로 사용하고 비핵심적인 툴들만 만들면 된다는 뜻인지?
더 나은 핵심 소프트웨어를 만들어 오픈으로 하든 클로즈드로 하든 기술의 혁신을 이루는 게 핵심이지, 외국의 잉여로 만든 오픈 소프트웨어들을 그냥 가져와서 쓰는 게 무슨 국가 발전에 도움이 되는가?
도대체 왜 그런 주장을 하는지 논거를 제시해주면 좋겠다.

"인문학이 중요하다"
나는 앞에서도 말했듯이 이 주장의 근거인 "liberal arts"가 인문학을 뜻하는지에 대해서 의문을 갖고 있다. B2C에서 사람을 이해하는 것이 중요하다는 측면에서 인문학이 중요하다는 점에 공감할 수 있다.
그냥 "사람이 중요하다"고 말하고 싶다.

소프트웨어를 하는 사람으로서 국가의 미래가 소프트웨어와 큰 관련이 있다는 생각을 한다.
정말 우리가 소프트웨어를 잘할 수 있을까 하는 의문도 갖고 있다.
창의적인 소프트웨어에 대한 이해가 국가 차원에서도 거의 없는 상황에서 또 과거의 성공적인 경험도 많지 않은 상황에서 굳이 해야 할 분야인가 하는 의문도 많이 있는 상황이다.

하지만, 점점 더 경쟁의 한계에 이르고 있고 자원을 팔아먹고 살 민족도 아닌데 (물론 지난 5년간 자원을 해외에서 찾아 팔겠다는 분이 계셨다. 결국 국민의 혈세만 천문학적으로 해외로 빼돌렸다) 기술의 숙련만으로는 고부가가치를 만들 수 없는 상황에서 창의적인 영역에서 소프트웨어와 융합을 다뤄야 하는 것은  피할 수 없다고 생각한다.

이 분야를 지금까지 해왔던 하드웨어적인 혹은 지극히 분업화된 너따로 나따로의 방식으로 접근한다면 미래는 매우 암울하다.

코딩을 교과 과정에 넣는 일도 갑론을박이 많았는데 나는 찬성한다.
나는 국민 모두의 교육 과정인 liberal arts의 범주에서 국사를 빼는 일도 반대하지만 수학이나 코딩도 매우 중요하다고 생각한다.
아이디어를 코드를 통해 구현해서 검증하는 교육이 논리적 사고에 큰 도움이 된다고 생각한다.

댓글

이 블로그의 인기 게시물

[Java] Java G1 GC의 특성에 따른 Full GC 회피 튜닝 방법

일론 머스크의 First Principle Thinking (제1원리 기반 사고)

엄밀한 사고(Critical Thinking)란 무엇일까