D+10
얼마 전 브런치를 통해 제안이 왔다. 금전적인 의뢰는 아니었고, 진로와 관련된 것이었다. 나도 질문을 받고 곰곰이 생각해 보았다. 그리고 이야기드렸던 내용을 기반으로 글을 써보려 한다.
파이썬일까?
파이썬은 굉장히 강력한 언어이다. 프로그래밍의 근본을 중시하는 분들에게는 사실 근본 없는 언어로 보이는 것도 사실이다. 고전적인 프로그래밍 개념과 벗어난 일들이 많기 때문에 그럴 것이다. 기본 python은 type checking도 안되고 javascript와 비교했을 때 언어 거 다소 생경한 느낌이다. 하지만 그런 근본 논란에도 불구하고 파이썬은 굉장히 훌륭한 언어다.
건축 소프트웨어 엔지니어는 두 갈래에 다리를 걸치고 있기 때문에 둘 중 하나를 깊게 파기란 어느 정도 한계가 있다. 그렇기 때문에 배우기 쉬운 언어로 먼저 시작하는 것이 좋다. 그런 의미에서 파이썬은 정말 좋은 언어다. 언제 적 글에서 약간의 어려움을 이야기 하긴 했던 거 같은데 그래도 거의 모든 시나리오에 사용 가능하다. 예를 들어 Grasshopper 내에도 python 스크립트를 제공해 주고, Dynamo도 사실상 Python으로 쓰지 않으면 못쓰는 기능들이 너무 많다.
C#일까?
C#은 컴파일 언어다. 건축 소프트웨어는 주로 C#으로 API를 제공한다. 즉, C#을 이용해야 Revit이나 Grasshopper의 플러그인을 만들 수 있다. 하지만 개발 경험은 영 좋지 못하다. 특히 Revit의 경우, 본인이 작성한 스크립트를 작성하기 위해선 컴파일, 리로드의 과정이 필요하다. 근데 이 리로드 과정에 레빗이 다시 켜지는 과정이 필요하다. 이 때문에 시간 소모가 엄청나다. 플러그인 개발 등을 위해 분명 필요한 언어지만 되도록 피하는 게 맞다고 생각한다. 최근 pyrevit이라는 오픈소스 프로그램이 나왔다. python으로 레빗 애드인을 만들 수 있도록 해준 프로그램이라고 본다. 나는 이걸 배우는 게 인생에 더 도움이 된다고 생각한다.
Javascript일까?
Javascript(이하 js)는 웹 프로그래밍을 위해서는 필수다. Vanilla js라고 하는 기본 js 버전의 웹을 만들거나 React 등 라이브러리를 이용한 개발을 할 때도 js에 대한 이해도 필수다. 건축 및 건설업계는 대시보드를 유독 좋아하는 경향이 있다. 그만큼 단순 명료하고 있어 보이기 보여주기 좋은 것도 없기 때문일 것이다. 달리 말한다면 대시보드 외의 기술은 용어도 복잡하고 무엇하나 쉬운 게 없기 때문이다. 그리고 시각적 훈련을 주로 받은 건축 출신들에겐 대시보드가 꽤나 잘 먹히는 아이템이다. 비록 그게 보여주는 데이터가 조금 틀릴지라도(?).
건축에서 js를 쓰는 사람은 Autodesk Platform Serivce(구 Forge, 이하 APS)를 쓰는 사람정도라고 생각한다. 웹으로 3D모델을 확인하거나 APS의 다른 SDK를 통해 자신의 워크플로우에 맞게 바꿀 수 있기 때문에 사용할 수 있다고 본다. 그리고 가끔씩 공고를 찾아보면 사내 프런트앤드 앱 유지를 위해서 js 개발자를 뽑기도 한다. 시각화를 위해 분명 좋은 언어고 최근 나도 공부하고 있지만 이 언어도 아니다.
사실은 영어를 먼저 배워야 한다
한국에 있는 대다수의 자료는 외국의 자료를 번역한 것이다. 한국어로 된 자료를 보는 것도 좋지만 영어로 된 자료를 보는 것이 훨씬 중요하다. 여기에는 여러 이유가 있다.
1. 자료의 양
영어는 세계 공통어다. 그러다 보니 대다수의 사람들이 영어로 질문을 올리고 영어로 답한다. 한국어로 물어도 찾을 수 없던 내용을 영어로는 쉽게 찾을 수 있다.
2. 공식 문서는 영어로 되어 있다
나도 귀찮거나 급해서 공식 문서를 잘 안 읽는 일이 많다. 하지만 공식 문서만 읽어도 대부분의 문제는 해결할 수 있다. Revit이나 Grasshopper Docs는 영어로 쓰여있다. 그래서 이들을 읽고 내가 하고 싶은 것을 어떻게 할지 찾아봐야 한다. 만약 영어를 모른다면 GPT에게 주사위 굴리듯 매번 물어보기의 연속일 것이다.
3. 최신 자료를 금세 접할 수 있다
옛날 옛적에는 해외 잡지 하나 있으면 몇 년은 우려먹을 수 있었다 한다. 그 이유는 해당 자료가 한국으로 들어와 공식적으로 번역되기까지 상당한 시간이 걸리기 때문이다. 그런 현상은 지금도 이어지고 있다. 한국의 어떤 유튜버가 강의를 한다고 하면 해당 자료는 이미 몇 달 또는 몇 주 전에 영어로 이미 나온 자료일 가능성이 크다. 그렇다면 영어를 모르면 항상 뒤처져 있을 수밖에 없다. 그래서 최신 자료를 먼저 받아보고 싶다면 영어를 알아야 한다.
4. 내가 직접 자료를 볼 때 성장한다.
2번과 맞물리는 이야기다. 나도 초반에는 누군가가 번역하거나 강의해 주는 자료에 상당히 의존했다. 마치 과외를 받는 것과 같다. 그래서 속성으로 해당 내용은 빠르게 할 수 있다는 점은 좋았다. 하지만 그런 방식의 개발은 어느 순간 한계에 부딪힌다. 왜냐면 근본적인 부분을 이해하지 못하고 있기 때문에 응용이 안되기 때문이다. 그런 순간에 가장 좋은 것은 뭐가 되었던 문서를 찾아보고 내가 구현하고 싶은 것을 만들어내는 것이다. 그 과정에서 상당히 고통스럽지만 그렇게 한 단계 한 단계 구현을 해나가며 성공할 수 있다. 영어를 통해 해당 문서를 직접 보면서 개발할 수 없다면 자신의 한계를 어느 정도 그어놓고 시작하는 것과 같다고 본다. 성장하려면 문서를 보고 자기가 구현하고 싶은 것을 해내야 한다.
어쩌면 진부했을 오늘의 이야기
오늘의 이야기는 나 자신만의 생각은 아니다. 유튜브 노매드 코더에서도 나왔던 이야기고, 내가 본 존경받을 만한 사람들은 영어로 된 개발 API문서뿐만 아니라 논문을 보며 직접 구현하려는 사람들이었다. 모두가 논문까지 볼 필요가 없을 것이고 영어로 된 문서를 볼 필요도 없을지도 모른다. 하지만 그 정도가 되지 않는다면 실력의 임계점을 넘을 수 없다고 나는 확신한다.