고등학교에서 "대학가면 다 해결된다"며 내면에 있는 대부분의 문제를 덮어두는데, 정작 대학을 가니 "취업하면 다 해결된다"며 똑같은 레퍼토리가 반복될 뿐이었다. 생각컨대 취업하면 또 "X하면 다 해결된다"는 환상의 반복일 뿐일 것 같았다. 이 프레임에서 벗어나야겠다는 생각에 대학을 관뒀다.
밥 로스의 유명한 말 중에 "그리기는 즐거워야합니다. 만약 그림을 그리고 있는데 즐겁지 않다면 무언가 잘못된겁니다"가 있고 나는 코딩에 대해서도 비슷한 생각을 가지고 있다.
코딩이 즐겁지 않다면 무언가 잘못된 것이고, 어떻게 하면 이 일을 즐겁게 바꿀 수 있을지 고민해봐야한다.
코로나가 막 심각해질 무렵에 알고지내던 바이올리니스트와 만나서 수다를 떨었던 일이 있다. 공연이 모두 취소되던 때라 무대에 오를 일이 한참은 없을 예정. 그런데 나와 헤어지고 연습실로 향했다. 왜 연습실을 가냐고 물었는데 그 대답이 "나는 바이올리니스트라 바이올린을 연주해야한다"였다.
예전에는 뭔가 생각을 실제로 성취해내는 사람들은 뇌의 정보 처리속도가 훈련을 통해 월등하거나 최소한 그렇게 타고났을 것이라고 생각했다. 하지만 요즘에는 오히려 사람간의 뇌 용량은 별 차이가 없고, 사실 정말 조그맣고, (더 중요하게는) 훈련으로 늘어나지 않다고 생각하게 되었다.
한편 자전거를 계속 친환경 프레임에 두는 것은 그리 좋은 정책이 아니다. 코펜하겐은 자전거를 아주 많이 타는 도시(수송분담률 28%)로 유명하다. 코펜하겐에서 조사한 자전거를 타는 이유의 1위(55%)는 "더 쉬워서"이다. 좋은 일을 유도하는 방법은 그 것을 쉬운 일로 만드는 것이다.
나 혼자 잘하는 사람보다 남들도 다 같이 잘할 수 있도록 분위기를 바꾸는 사람이 더 가치있다는 생각이 점점 더 강하게 든다. 일대일로 실력을 비교하면서 저 사람보다 못하니까, 저 사람보다 잘하니까.. 라고 평가하는건 한계가 뚜렷한듯. 애초에 그런건 '실력'이라는걸 오해하고 있는게 아닌지..
"일반적으로 우리는 다 배우고 나서야 만들 수 있다(learn and then build)고 생각합니다. 하지만 구성주의(constructivism) 교육철학에서는 배우기 위해 만든다(build to learn)고 합니다. 만들면서 배우는 것이죠. 실행이나 성과, 배움이 서로 유기적인 관계에 있다고 생각하게 되었습니다."
주변에서 나에게 의견을 구할 때, 내가 뭐라고 해주는게 오히려 상대방의 가능성을 닫아버린다는 느낌을 받는 경우가 있다. 특히 경험의 차이가 클 때, 나는 (상대가 보기에)굉장히 그럴싸한 말을 하게 되고 상대방은 내 말이 너무 맞다고 생각해서 거기서 벗어난 다른 생각으로 나아가지 못한다.
내가 원하는 일을 하기 위한 완벽한 순간을 기다리려고 하면, 실제로 그 행동이 이루어질 가능성은 높지 않을 것이다. 지금이 행동을 할 이상적인 순간이 아닐지라도, 그렇다고 또 지금 할 수 있는 작은 일을 찾고자 하면 완전히 못할건 아니겠다. 단단한 실용주의적 태도에 대해 생각해보게 되었다.
고등학교를 졸업하고 알바를 다양하게 경험해보려했다. 그러면 세상이 어떻게 굴러가는지 조금은 알 수 있지 않을까 해서. 호텔 레스토랑, 편의점, 특허사무소, 치킨집 등. 근데 깨달은건 이 사회는 너무나도 복잡해서 하나의 문제조차 그 누구도 감히 "안다"고 할 수 없다는 것이었다.
예술가의 삶은 그 자체로 꽤 많은 영감을 주는 것 같다. 이들은 자신이 왜 이런 일을 하는 지에 대해 아주 깊은 수준의 근거를 찾는듯 하다. 그렇지 않으면 예술을 직업으로 삼을 수 없기에. 이 바이올리니스트는 ‘나는 원래 이런 사람이다’라고 정의 내리고 그것을 받아들였다.
내가 인생에서 처음으로 만든 실용 프로그램은 특허사무소에서 아르바이트를 할 때 메일로 수신한 접수문서를 사내 포맷으로 컨버팅해주는 자동화 스크립트였다. 원래 알바가 하루 8시간씩 하는 일이었는데 난 자동화해두고 꿀빨았다. 이 때만 해도 내가 코딩으로 먹고살 줄은 몰랐다.
하고싶은 것이 나 혼자 해도 되는 거면 상관없는데 대부분의 경우 그렇지 않으니까. 나의 전략은 “오래 버티기”였다. 한 분야에 오래 머무르면서 나에 대한 증언을 한 마디라도 해줄 수 있는 사람들을 늘려나가는 게 가진 것 없는 상태에서 얻을 수 있는 유일한(동시에 원초적인) 증명이라고 생각했다.
요즘의 소프트웨어 엔지니어링 지식은 거의 대부분 인간의 한계를 극복하는 것에 집중되어 있는 듯하다. 인간의 감각기관은 정보처리량이 낮아서 가독성이 좋아야하고, 인간은 기억력이 안 좋기 때문에 관심사의 분리가 필요하고, 등등. 이제 소프트웨어를 만드는 데 있어서 가장 큰 병목은 인간이다.
어쨌든 중요한건 내가 뭘 하고 싶은지, 그걸 하려면 어떤 능력이 필요한지, 그 능력을 배울려면 어떻게 해야하는지, 내가 그 능력이 있음을 어떻게 입증할지 정도인 것 같다. 우리나라의 교육시스템은 가장 마지막 부분에서 빛을 발하고 있지 않나 싶다. 그리고 가장 대체하기 어려운 것 같기도 하고.
신입-주니어 개발자가 작은 스타트업에서 커리어를 시작하면 당연하게도 보다 규모가 큰 조직에 대한 호기심과 동경이 생길 수 밖에 없는 것 같다.
이럴 때 회사가 해야할 일은 눈 돌리지 않게 장막을 씌우는 게 아니라 적극적으로 다른 조직의 개발자와 대화할 수 있는 기회를 마련해 주는 것이다.
신입만 사고 치는게 아니다. 오히려 경력이 쌓이며 책임과 역할이 많아질 수록 더 큰 사고를 칠 수 있는 것 같다. 시니어가 사고를 안 치는 것 같은 건 위험한 순간마다 스스로를 불신하고 시스템에 의존하기 때문인 것 같다. 난 분명히 사고를 칠거야 라고 받아들인다고나 할까..
가장 나에게 크게 영향을 주었던 배움이 뭐였을지 따지고 보면.. 지금 당장 내가 손해를 보거나 굽히며 들어가더라도, 그렇게해서 상대의 신뢰를 얻을 수 있다면 그렇게 하라는 것이다. 이게 가장 큰 영향을 주었던 이유는 사장님이 실제로 매순간 행동으로 그렇다는 것을 보여주셨기 때문이다.
대학교육에 아무런 의미가 없는 것은 아니지만, 그 환경이 나에게 씌우는 스테레오타입과 원치 않는 피어프레셔에서 벗어나야했다. 사실 멋지게 자퇴하고 싶었으나 여러 사회적인 이유로 그러진 못했고 대신 오랜 휴학을 이어갔다. 어느정도 자립할 수 있게 되었을 때 완전히 연을 끊을 수 있었다.
글 잘 쓰기에 중요한 것이 독자를 헤아리는 것인데, 코딩도 마찬가지인 면이 있는 듯하다. 좋은 코드를 위해 동료를 생각하며 코딩해야지. "프로그램은 사람들에게 읽히기 위한 목적으로 만들어야 하고, 우연히 컴퓨터가 실행할 수 있다면 더욱 좋다." - 컴퓨터 프로그램의 구조와 해석(SICP)
이런 관점에서 요즘 쓰는 방법은, 아이디어와 생각을 쪼개고 또 쪼개다가 아 이건 당장 오늘(내일) 해볼 수도 있겠는데 라는 생각이 들면 생각을 멈추고 행동으로 옮기는 것이다. '작은 행동을 반복한다'이런 생각도 잘 안한다. '반복 한다'는 생각조차도 너무 크다. 그냥 한 번 해보는 것이다.
전문성이 쌓일수록 모호함에 대한 이해가 생기는데(aka 'it depends') 유튜버들의 극단적인 주장이 유해하다고 보는 이유는 주장 자체의 옳고 그름 때문이 아니라 전문성을 쌓기 위해 필요한 모호함에 대한 훈련의 기회를 뺏기 때문. 거기다 더해서 전문성에 대한 잘못된 멘탈모델까지..
동료가 오픈소스 라이브러리에 문제가 있어서 불평을 하거나 그걸 우회하는 작업을 하고있으면, 그러지 말고 직접 기여하라고 권한다. 나도 언제나 그렇게 행동하려고 한다. 우리가 오픈소스에 얼마나 많이 의존하고 있는 지를 생각해보면, 오픈소스에 기여하는 일이야말로 스스로를 위한 길이다.
언어, 프레임워크, 방법론은 모두 부차적이다. 가장 중요한 것은 소프트웨어가 전달하려고 하는 가치다. 그 가치를 잊으면 부차적인 것에 휩쓸리기 쉽고, 또 부차적인 것에 휩쓸리면 가치를 잊기 쉽다. 방법에 대해 이야기하기 전에 먼저 가치에 대해 충분히 이야기했는지 되돌아 볼 필요가 있겠다.