생존형 개발자의 생각 #140
소프트웨어 영역에서 “기술이 엔지니어를 대체한다”라는 말은 꾸준히 언급되었다. 그런데 자세히 들여다보면 엔지니어를 대체한 것이 아니라 “엔지니어의 능력”을 “Tool(도구)”를 통해 많은 사람들과 공유한 것이다.
결과적으로 “엔지니어가 없어진 것이 아니다”. 엔지니어의 권력을 Tool(도구)을 통해 신입이나 일반인들이 나누어 가지면서 능력을 얻은 것이다. 그리고 능력을 얻었다는 것은 “나 대신 해준다는 것”이 아니다. 말 그대로 “나도 할 수 있게 도움을 받았다”라는 것이다. 그래서 아무것도 하고 싶지 않은 사람들에게는 신의 도구(AI)라도 의미가 없는 것이다.
AI가 개발자를 대체하는 것이 아니다.
당신이 AI를 활용해 개발자의 능력을 가지게 된 것이다.
현실이나 미래나 AI가 놀라운 신의 축복이라도 당신이 거부(하기싫어~ 너가 알아서 해!)한다면 복(福)은 받을 수 없다.
: 프로그래밍은 혁신이 아닌 적이 없었다고?
놀랍게도 1950년대에 컴파일러가 등장하면서 “누구나 프로그래밍을 할 수 있다!”라는 주장을 했었다. “누구나..”라는 단어를 지금의 기준과 같은 일반인이 아니었다. 그 당시의 누구나는 “하드웨어에 박식한 컴퓨터 학자”가 아닌 특정업종 사람들을 일컬었다고 봐야한다. “하드웨어를 정확히 모르지만” 공학적 사고방식과 지식을 가진 학자나 엔지니어를 말 한 것이다.
컴파일러를 통해서
소프트웨어적 사고방식만으로
하드웨어를 제어할 수 있는 신기원을 이룩한 것이다.
심지어 하드웨어의 지식이 많지 않은 사람들에게 프로그래밍을 할 수 있게 제공한다는 것은 당시로써는 놀라운 신기술이었다.
요즘 20년차 이하 개발자 중에 메모리 모델, 어드레스, 레지스터, OPCode, 인터럽트, bus 개념을 아는 사람이 몇이나 될까? 아니 들어는 봤을까? 어셈블리에서는 기초 중에 기초개념이다. 이런 개념으로 프로그래밍을 하는 언어(?)가 어셈블리이다.
결론적으로 우리가 흔히 공감할 수 있는 “누구나(=일반인)”에 해당하는 사람들이 개발자가 되시 시작한 시점이 C, 파스칼, 베이직이 보편화되기 시작한 시점이다(1980년대 초중반). 학자나 전공자가 아니더라도 “누구나(=프로그래밍 지식 + 사고방식)”을 가진 사람이라면 “사고방식 능력”에 따라 소프트웨어를 생산해낼 수 있게 되었다.
이런 역사를 알 지 못한 상태에서 개발자에 대한 오해는 계속 일어날 수 밖에 없다.
이미 1980년대 초반부터 “개발자 입문의 장벽”은 사라졌다.
심지어 내 경우도 1983년에 광화문(신문로)에 있던 대한컴퓨터 학원에서 겨울방학에 수업을 들었었다. 당시 중학생들도 컴퓨터 학원을 다닐 정도로 프로그래밍의 장벽은 없었다(베이직 같은 인터프리터 언어로 알고리즘 수업-별표로 산 만들기, 트리 만들기 -했다). 과거를 돌이켜 생각해보면 지금의 80대 어른들도 자식들 사교육 열풍이 만만치 않았기에 방학이되면 주산, 컴퓨터, 웅변 중 하나를 선택 후, 자식들의 인생 테크트리에 힘을 썼다. 그 만큼 누구나 할 수 있는 보편적인 영역이었다.
당시 대한민국이 생활수준이 다른 나라에 비해 열악했던 점을 고려하면 80년대 초반부터 프로그래밍의 보편화는 전세계의 일상 중에 하나였음을 알 수 있다.
: 왜 말하는 것과 반대로 가지?(늘어나는 개발자, 복잡해진 환경)
코딩이 사라진다 코드없이 보이는 대로 만든다(WySWyg).
What You See, What you get - 개발자 없이도 만들 수 있다.
since 1996(아직도 그들이 지구를 지배할 때~)
IT 마케터들이 한 말이다.
코딩이 사라진다는 개념(WySWyg) 또는 유행어는 무려 20세기(30년 전)세상을 들끓게 했던 단어이다. 델파이, 비주얼 베이직 등등이 이에 속하는 개발툴이었고 지금의 AI보다 더 직관적이며 쉽게 프로그램을 만들 수 있었다. 요즘의 노코드 툴에 비하면 그 당시 툴들이 진정한 노코드 툴에 가까웠다.
내가 신입이었던 30년 전부터 “개발자 없이..”라는 형용사는 혁신이라는 테마로 나온 솔루션에서는 반드시 들어가 있었다. 그런데, 왜 개발자는 줄어들지 않고 심지어 늘어나고 있을까? 이유는 간단하다.
“기술이 발전하면 오류도 급증하기 때문”이다.
개발자는 만들기만 하는 사람이 아니다. 업무의 50~70%가 오류를 잡는 일을 하는 사람이다. 그래서 개발자의 기본역량에는 트레이싱과 디버깅이 필수가 된다. 기계는 사람이 만들었고 그로 인해 오류는 무한하게 나온다. 그걸 또 다시 사람이 고쳐야 하는 것은 인류가 멸망하지 않는한 반복될 수 밖에 없다. 그리고 그런 사람들을 위한 UI는 일반인들이 원하는 UI가 아니다.
그렇기에 30년전의 wyswyg같은 직관적인 개발환경이 쇄퇴하고 텍스트 기반의 콘솔환경인 CLI(Command Line Interface)가 보편화 되어버린 것이다.
27살에 대학을 졸업하고 30년동안 개발자로 살면서 다음과 같은 [사고방식의 변화과정]을 동료들과 경험했다.
개발자가 자기의 무능력을 비하하는 짤이 많은 이유는 “절대진리”라는 것이 통하지 않는 곳이 프로그래밍 세상이기 때문이다. 타업종보다 적어도 5배이상 빠르게 변하는 이 업종에서 살아남을 수 있었던 유일한 무기는 오로지 “사고의 유연함”, “나의 무식함을 인정하기”, “남들이 내 스승이다” 였다. 전세계 살아남은 개발자들의 공통적인 결론이다.
”누군가에게 배우고, 배운 것을 나누어야 한다”
개발자의 직군이 변화되고 덩달아 사람들의 사고방식이 변하게 된다.
20년 전만 하더라도 “메모리의 중요성을 인지시키기” 목적으로 대부분의 개발회사에서는 신입들에게 미션을 주었다. 주로 팀선배들이 몇 줄 안되는 간단한 소스를 만들고 팀에 합류한 신입들에게 소스코드를 줬다. 그리고 며칠 동안 회사 분위기 익히면서 제공한 소스를 분석하고 버그를 없애라고 하는 미션을 줬다. 현업개발자들에게는 0.3초내에 “아이~C”하는 코드이지만 신입들은 이해할 수 없는 경우가 많았다. 매우 중요한 상식이자 기초이지만 프로그래밍(사실 그 당시만 하더라도 코딩이라는 단어는 비하의 단어였다)을 하다보면 자주 실수하는 내용이었다.
이 소스의 목적은 “메모리는 한계가 있고 함부로 정의해서는 안된다”였다. 그리고 Stack이냐 Heap 메모리냐에 따라서도 관리가 달라져야 한다. 이런 내용을 인지하지 못하고 밥값하는 개발자로 성장하는 것은 불가능한 시대였다.
그러나!!!!
20년이 지난 지금, 이런 내용을 몰라도 훌륭한 개발자들은 넘치고 넘쳐난다.
심지어 당시는 웹(서버, 홈페이지)이라는 영역의 개발자는 개발자(Developer)가 아니고 웹개발자(Coder)로 불려야 한다는 사람들도 있었다(일종의 편견이었고 비하였다). 그러나 20년 후가 지난 시점에서보면 웹개발자적인 사고방식으로 프로그램을 구축한 사람들이 세상의 기술을 바꾸고 있다. javascript와 프론트엔드의 발전, 그리고 HTTP로 만든 서버들의 효율성(서버솔루션들이 TCP Layer만 고집했다면 지금같은 발전은 불가능했다)으로 인해 기술의 주인이 바뀐 것이다.
지금시대의 개발자 아이콘은
20년전 시스템 개발자
(C/C++, Assembly, 하드웨어 제어, 네트워킹, 보안…)가
아니다.
웹개발자다!
그럼에도 세상은 더 많은 개발자가 필요하고 커지고 빨라지고 있다. 이 말의 의미는 “시대가 원하는 개발자”는 언제나 변화하고 있었다는 말이다. Vibe coding이라는 말을 하며 개발자와 직군의 종말을 떠드는 사람들은 실제로 “사고방식”에 대한 이해가 부족한 경우가 많다.
개발자는 “주어진 도구”로 “요구사항”을 만드는 사람이다.
도구가 변하면 개발자도 변해야 하고 변해왔다. 이제는 AI라는 도구로 개발을 해야 하는 시대가 된 것이고 그로 인해 개발자는 시대에 맞는 사고방식으로 더 많이 필요한 시점이 되었다.
단지, “기존의 개발자의 아이콘”이 아닐 수도 있다는 점일 것이다. 20년전 시스템 개발자가 다수였지만 지금은 소수가 되었던 것 처럼, 오픈소스가 보편화된 시점(안드로이드, iOS)에서 할머니도 개발자로 성공할 수 있던 것을 증명한지 9년이 지났지만 여전히 개발자는 “개발자 다움을 가진 자”들만 할 수 있는 것 처럼
한국 온 83세 '코딩 척척' 일본 할머니 “노인은 왜 못 배우나요” | 중앙일보
중요한 것은…
“사고방식(문해력)”임은 변함이 없다.