2024년 2월 29일 목요일

엔비디아 젠슨황의 충격적인 선언 "코딩은 죽었다. 아이들은 코딩을 배울 필요가 없다"

 실리콘밸리에 있는 엔비디아는 AI 시대에 급속도로 성장해 뉴욕증시 시총 3위이며, 직원의 반이 연봉 3억이고, 가장 취직하기 원하는 회사이고 젠슨황은 가장 존경받는 CEO이다. 젠슨황이 Word Government Summit에서 세계의 영향력있는 사람들 앞에서 "코딩은 죽었다, 아이들은 코딩을 배울 필요가 없다" 라고 충격적인 말을 했다. 젠슨황의 말은 앞으로 코딩을 하는 프로그래머의 직업이 없어진다는 것을 의미한다. 10년 전의 옥스포드 대학의 연구결과에서도 그랬고 많은 사람들이 코딩의 종말을 예측했지만 이번의 젠슨황처럼 공개적으고 전세계가 주목하는 공식석상에서 선언한 것은 처음이다.

필자도 100% 동의 한다. AI가 코딩을 대신 할 것이라는 얘기인데 이 말 자체를 잘 이해하기가 쉽지 않다. 개발과 코딩의 차이를 먼저 정확히 이해해야 한다. 코딩, 즉 프로그래밍은 개발의 일부분일 뿐이다. 건설과 비교하면 인부의 역할이다. 개발은 분석, 설계, 코딩의 3 단계로 나누어 진다.

필자도 요새 앱을 개발할 때 코딩 부분의 90% 정도는 생성형 AI(Generative AI, GenAI)를 이용한다.

구글의 Gemini와 마이크로소프트의 Co-Pilot을 같이 사용하면서 비교도 하고 더 좋은 코드를 시용한다. 내가 아는 지식외에도 다양한 코딩 방법을 보여주니 배우는 것도 많다. 덕분에 이전에 비해 코딩 속도가 10배 정도는 빨라졌다. 그렇다고 개발이 10배 빨라진 것은 아니다. 앞 단의 분석 작업은 AI가 할 수 없는 작업이고 설계도 AI가 큰 도움이 되지 못한다. 하지만 가장 귀찮고 지루한 작업인 코딩을 하기 위해 프로그래머를 고용할 필요는 거의 없어졌다.

소프트웨어를 개발하는 인력에는 분석가(Anaylist), 설계가(Designer), 프로그래머가 있다. 옥스포드 대학의 연구에서도 프로그래머는 AI에 의해서 90% 이상 대체 되지만 대체가 불가능한 것이 분석가라고 했다. 그 중간이 설계가이다. 개인 회사처럼 한 사람의 개발자가 모든 것을 다 한다면 이 3가지의 다른 역할을 하고 있는 것이다.

가장 난이도가 높은 것이 분석가이다. 보수도 가장 많이 받는다. 건설과 비교하면 빌딩 건축가와 벽돌공의 차이라고 보면 된다. 필자가 국내에서 20년 이상 대기업, 중소기업, 벤처기업을 컨설팅을 하면서 진정한 분석가라고 할 수 있는 사람은 몇 명 보지 못했다. 국내에서는 통찰력과 경험이 필요한 분석 작업를 마치 템플릿이나 방법론으로 해결하려는 잘못된 경향이 있다. 그래서 방법론과 같은 형식에 쓸모없는 투자를 한다. 학계도 그렇게, 대기업도 그렇고, 정부의 정책도 꾸준하게 그런 잘못된 방향을 추구해 왔다. 언제나 정신이 들지 모르겠는데 지금까지는 그래 왔다. 요리사를 키우려는데 요리책만 전국에 뿌리는 상황이다. 만약에 템플렛이나 방법론과 같은 형식이나 도구로서 해결할 수 있다면 AI가 가장 잘 할 수 있는 분야이고 금방 없어질 직업이다. 마치 요리책만 있으면 일류 요리사가 될 수 있다고 착각하는 것과 같다. 그런 문화가 결국 국내 소프트웨어의 역량을 결정한다.

국내의 소프트웨어가 글로벌 소프트웨어를 만들수 없는 이유는 여러가지가 있으나 그 중 가장 핵심적인 이유가 분석가의 부족이다. 충분한 분석이 없이 개발하는 소프트웨어는 결함이 많고 확장성도 없고 스파게티 코드가 되는 것이 필연이다. 그런 상태에서 프로그래머의 정신 상태로 글로벌 소프트웨어를 만든다는 것은 하늘의 별따기이다. 결국 국내의 소프트웨어 업계는 정부의 보호아래 내수용기업으로 생존할 수 밖에 없다. 많은 기업들이 글로벌에는 명함도 못 내밀면서 갈라파고스의 혜택으로 생존해 왔다. 수 많은 정부의 정책으로 글로벌 소프트웨어를 육성하겠다고 지원했으나 성공한 적은 본 적이 없다. 국민의 세금만 축내는 상황이다. 동키호테와 같이 악의는 없지만 희망적인 무지가 선동하고 초래한 상황이다. 지금 이 순간에도 세계 AI 산업의 유행에 편승해 글로벌에 진출할 것 처럼 선전하는 기업들이 있으니 주식 투자를 한다면 무척 조심해야 할 상황이다.

분석가가 하는 행위는 분석이고 그 결과물은 Software Requirement Specification(SRS)이다. 하드웨어와 같이 있는 혼합된 경우는 System Requirement Specification라고 한다. 템플릿은 IEEE 사이트를 비롯해서 인터넷에서 찾아보면 많이 있다. 대충 30여 페이지 정도 된다. 템플릿은 그렇지만 실제 작성하면 수천, 수만, 수백만 페이지가 될 수도 있다. 그런 작업을 AI가 인간의 마음을 읽어서 할 수는 없다. AI는 논리적인 것은 잘 할 수 있지만 인간의 의지를 추측할 수는 없다. 분석작업은 필자가 책을 여러 권 출판하고 블로그에서도 시리즈로 연재할 정도로 어려운 작업이니 쉽게 역량이 늘 수는 없다.

국내 대부분의 개발자들 처럼 프로그래밍을 위주로 개발을 하는 개발자는 앞으로 점점 가치가 적어질 것이다. 먼저 분석이나 설계와 같은 고급 기술의 차이를 이해하고 그 방향을 추구하는 것이 미래에 개발자로서 생존할 수 있는 유일한 방법이다.

2024년 2월 28일 수요일

DevOps(데브옵스)의 역사와 현재 상황

 요새 미국에서 가장 유망한 소프트웨어 직업중 하나가 DevOps 이다.

DevOps는 언제 생겼났는가?

필자가 실리콘밸리에서 일하던 30년전에도 똑같은 사상은 존재했고 사용되어 왔다. 점진적으로 기술이 진화하면서 2009년에 애자일 사용자인 Patrick Debois가 처음으로 "DevOps"라는 용어를 사용했다.

모든 소프트웨어 개발에는 기반시스템, 프로세스와 문화가 필요하다. 이를 종합적으로 합쳐서 부르는 마케팅 용어일 뿐이다. 구글과 같은 글로벌 대기업에서는 자체적으로 개발한 이런 종합 시스템을 가지고 있다. 그런 시스템을 개발할 전담팀이 없는 규모의 회사에서는 상용제품이나 오픈소스를 사용한다.


이 분야는 널리 알려진 수십개의 유명한 회사들을 비롯해 수 많은 회사들이 제품을 공급하고 있는데 무료 오픈소스부터 고가의 제품도 있다. 자동차의 예로 보면 트럭, 승용차, 버스, 경차부터 스포츠카까지 다양한 목적을 위한 제품들이 있으니 내가 필요로 하는 제품이 어떤 제품인지 판단하기도 어렵다. 필요도 없이 돈을 낭비하는 경우도 많고 가족수가 많은데 스포츠카를 사서 확장을 할 수 없는 경우도 있다.이런 다양한 환경과 목적에 따라 적절히 선택하여 사용하는 것이 예술이며 많은 경혐이 없이는 수행할 수 없는 작업이다.

그래서 전문가가 드물고 수요에 비해 공급이 절대적으로 모자란다. 개발자들이 도구 한두개 사용할 줄 안다고 DevOps 전문가가 되는 것이 아니다. 벽돌공은 될지언정 건축가는 되지 못한다.

DevOps의 사상에는 소프트웨어 개발에 필요한 모든 도구와 문화가 다 포함되어 있다고 해도 과언이 아니다. 자동차의 예와 같이 제품에 따라 일부분의 기능만 제공하는 것이 통상적이다.그렇기 때문에 하나의 도구를 사용했다고 다른 도구를 사용할 수 있는 것은 아니다. 영어를 할줄 안다고 중국어를 할 수는 없다.

먼저 또 유사한 용어인 CI/CD 와 구별을 할 필요가 있는데 CI/CD는 2010년에 처음 책에서 소개되었다. CI/CD는 Continuous Integration/Continuous Deployment를 수행하는 도구를 의미한다. 마치 컨베이어 벨트와 같이 한번 올라타면 자동으로 연결이 된다. 소스코드가 변경되면 빌드(Build)와 테스트를 거쳐 전개(Deployment)까지 자동으로 수행되는 기계적인 도구이다. 이런 오토메이션 과정은 60여년 소프트웨어 역사상 변한 적이 없다. 컨베이어 벨트의 각 영역을 수행하는 도구도 기술이 발전함에 따라 계속 진화되어 왔다. 가장 기본인 소스코드관리 시스템도 최초의 SCCS부터 Git까지 진화해 왔지만 그 속의 알고리듬은 수학적인 diff 알고리듬으로 변화한 적이 없다. 단 사용하기 편하게 껍데기만 변화했을 뿐이다. Jenkins와 같은 도구도 과거에는 shell script로 수행해오던 기능을 편리함과 생산성을 추구하는 현대의 개발자들은 UI 껍데기에 기반한 도구를 선호한다. 그러다 보니 "No Code"라는 개념까지 나오고 자동 코드생성도구도 많다.

현대까지 진화한 DevOps 도구 중에는 Atlassian의 Jira Family와 같이 연 수억의 비용을 지불하며 사용하는 초대형 회사에서 필요로 하는 도구도 있고 Gitea와 같이 50명의 개발자 이내에서는 CI/CD와 이슈관리를 효율적이고 무료로 관리할 수 있는 도구도 있다. 그 외에도 수 많은 상용 제품과 오픈소스가 있으니 좋다 나쁘다는 각자의 환경에 달려 있다. 소프트웨어 개발의 전체 사상은 같으나 제품의 한계와 특성상 각 개발팀이 중요시 하는 영역이 다르니 다양한 제품이 나올 수 밖에 없다. 자동차 한대로 모든 고객을 만족시키는 것은 불가능하다.

필자는 꼭 필요한 경우외에는 고가 명품을 구매하지 않는다. 프랑스의 저명한 사회학자인 장 보드리아드의 가치이론에 따르면 "명품 기호가치"는 사용가치는 낮지만 과시용으로 비싼 비용을 지불하며 구매하는 것이 현대인의 소비 행태이다. 롤렉스 시계는 사용가치는 매우 낮지만 과시용으로는 좋기에 고가의 비용임에도 구입하는 것이다. 한국이 전 세계에서 가장 중요한 명품시장이다.

소프트웨어 도구에도 이런 소비 문화가 없을 수가 없다. 오픈소스부터 최고가의 제품까지 다양하게 사용해본 필자가 볼 때 저비용 혹은 무료의 도구에도 충분한 경우에 쓸데 없이 복잡하고 고가인 제품을 사용하는 것을

많이 봐 왔다. 물론 그 반대의 경우도 있다. Git와 같은 소스코드관리 도구 하나로 소프트웨어를 개발하겠다는 무모한 돈키호테도 있다. 컨설팅하다 보면 아직 국내 개발문화가 글로벌과 수십년 이상 뒤떨어진 곳도 무시할 수 없이 눈에 띈다.

국내용이 아닌 글로벌 품질의 소프트웨어를 개발하기 위한 절대적으로 필요한 것이 DevOps의 사상을 잘 이해하고 각자의 환경에 맞게 적당한 도구를 선택하는 것이다. DevOps 도구중에서 국내에서 많은 중소형급의 개발자들이 사용하기에 적당한 Jenkins, OpenProject, Gitea와 같은 훌륭한 오픈소스를 중심으로 앞으로 소개하려고 한다.