[공유] 꼰대 임베디드 시스템 SW 개발자가 되는 방법

AustinKim의 이미지

임베디드 리눅스 BSP를 개발하면서 수 많은 꼰대들을 만났습니다. 그런데 연차가 늘어날 수록 꼰대를 만나는 확률이 점점 높아지고 있는 것 같은데요. 그 동안 제가 프로젝트를 통해 만나 뵈었던 꼰대님과 교류를 통해 얻은 교훈을 공유하고 싶어요.

<< 꼰대가 되는 가장 빠른 방법: 스스로가 성공한 개발자라고 확신한다! >>

위대한 꼰대가 되기 위해서 먼저 자신의 개발 능력이 상대방보다 100% 월등하다는 것을 확신해야 합니다. 개발 연차가 많던, 부장이나 개발 이사와 같이 직급이 높던, 성과급이나 월급을 많이 받던, 이 중 반드시 하나는 갖춰야 합니다. 그런데 여기서 가장 중요한 것은 다음과 같은 확신입니다.

* 다른 개발자들도 내가 생각하는 성공의 정의에 따른다!

이런 확신을 지키기 위해서는 자신과 다른 분야에 몸담고 있는 개발자와 교류를 하지 않기 위해 엄청난 노력을 해야 합니다. 이 과정에서 자연스럽게 일상 생활에서 나와 다른 관점으로 개발하는 개발자들을 배척하게 됩니다. 여기까지 문장을 읽고 제가 무슨 소리를 하는지 잘 이해를 못하는 분들도 있을 것입니다. 꼰대 개발자들의 어록을 조금 말씀드려 볼까요? 물론 임베디드 리눅스 분야에 한정된 예시입니다.

* 하드웨어 장비를 나처럼 못쓰는 인간들은 죽어야 해!
* 빌드 스크립트와 소스 구조를 보는 게 제일 중요해! 이걸 못하는 놈들은 다들 허접들이야!

잘 이해가 가시나요? 자신이 뭔가 잘한다고 믿는 걸 다른 개발자가 못하면 허접 취급을 합니다. 그러면서 다음과 같은 주장을 펼칩니다.

* 리눅스 커널 소스 코드는 절대로 볼 필요가 없어! 우리가 직접 커널의 스케줄러 소스 코드를 고치냐?
리눅스 커널을 공부하는 인간은 참 쓸모 없는 짓을 하는 거야
* 디버깅은 할 필요가 없어! 버그는 하루면 누구나 잡거든!

예시를 조금 들었으니 이제 조금 더 이해가 되시나요? 꼰대 임베디드 리눅스 개발자님은 이러지 않고서는 스스로 100% 확신하고 있는 믿음을 지키기가 어렵습니다.

한 회사에 오랫동안 붙어 있거나 오로지 한 분야에만 머물어 개발을 하는 것도 이런 확신을 지키는 것에 큰 도움이 됩니다. 보통 비슷한 개발을 하는 집단 내에 소속된 개발자 끼리는 비슷한 이야기를 하게 됩니다. 그렇게 몇 년간 비슷한 개발자들이 하는 이야기를 꾸준히 들으면 진짜 그렇게 느끼고 확신하게 되기 마련입니다.

* 하드웨어 장비를 나처럼 못쓰는 인간들은 죽어야 해!
* 빌드 스크립트와 소스 구조를 보는 게 제일 중요해! 이걸 못하는 놈들은 다들 허접들이야!
* 브링업을 못하는 개발자는 쓸모가 없어!

너무 넓은 선택지는 꼰대님들의 머리만 복잡하기 만들 뿐입니다.

꼰대 임베디드 개발자가 되기 위해 피해야 되는 것은 다른 나라로 여행을 하거나 해외 개발자와 협업하는 것입니다. 여러분이 꼰대 개발자가 되기 위해 피해야 할 가장 위험한 행동입니다. 물론 개발 분야를 바꾸는 것도 위험하지만 아예 해외 개발자와 함께 일하는 것도 주의하셔야 합니다. 해외 개발자들은 일단 수평적인 마인드로 소통하려고 하므로 이들과 일을 하려면 생각하는 방식을 많이 바꿔야 합니다.

* 그래서 꼰대 개발자가 되려면 먼저 오픈 소스 활동을 해서는 안됩니다.

그래서 임베디드 꼰대 개발자님들이 그동안 기껏 쌓아 올린 지위나 명예가 크게 흔들릴 수도 있습니다. 최대한 해외 개발자와 함께 협업하는 것을 멀리 합시다.

<< 다른 개발자들도 나처럼 성공하고 싶어 한다고 확신한다! >>

자, 이제 그다음 해야 할 일은 다른 개발자들이 모두 다 나처럼 되고 싶어 한다고 스스로 확신하는 것입니다. 왜냐면 임베디드 리눅스 꼰대 개발자들은 다음과 같이 생각할 확률이 높거든요.

* 나는 성공한 사람이다!
* 내가 속한 집단에서는 나처럼 되는 것 말고는 다른 선택지가 없다!
* 다른 후배 개발자들은 당연히 나의 직급에 오르고 싶을 것이다.
* 물론 당연히 나만큼 벌고 싶을 것이고, 내 명함을 받으면 고개를 조아리는 것이 당연한 일이다!
* 비록 회사 밖에서 사람들은 버릇없이 나를 40대 후반의 아저씨라고 부르지만, 나는 적어도 회사에서만큼은,
후배 개발자들 앞에서만큼은 절대적인 힘을 가진 무소불위의 존재다.
* 가끔, 술을 사달라고 연락을 하는 걸 보니 나를 존경하는 것이 틀림이 없다.
* 술자리에서 내가 입만 열면 다들 조용해지면서 내 말에만 귀를 기울이니 내 말이 얼마나 값어치가 있는지는 도저히 반박할 구석이 없다.

그래서 다음과 같은 생각을 하게 됩니다.

* 내가 이 자리까지 오르기 쉽지 않았지만, 특별히 기특한 너희들에게만 큰 은혜를 베풀겠다!

결국 꼰대 개발자들은 열심히 조언을 해줍니다.

* 너희들은 나처럼 개발을 해야 한다! 그래야 나와 같은 레전드 개발자가 될 수 있다!

이렇게 꼰대 개발자들이 나의 귀중한 시간을 할애해 자신의 소중한 노하우와 가르침을 전했는데도 그 말을 따라 하지 않는 후배 개발자들이 생깁니다. 심지어 아예 무시하는 개발자들도 생기죠. 이런 상황에서는 꼰대 개발자는 후배 개발자를 불러서 다그칩니다.

* 너희 그러면 개발자로써 인정 못 받는다!

하지만 후배 개발자들은 꼰대 개발자들의 조언을 들어 주는 척 하지만 시간이 지나면 행동은 예전과 그대로입니다.

<< 자신이 알고 있는 기술이나 기법은 대단하고 자신이 모르는 기술은 별게 아니라 믿는다.>>

자신이 예전에 잘 다뤘더나 익숙한 기술이나 기법들은 다른 개발자들이 반드시 잘 배우고 알아야 한다고 믿어야 합니다.
자신을 중심에 놓고 기술을 이분법적으로 보는 것이죠. 자신이 고생하면서 배운 기술이나 기법이 대단하다고 확신해야 합니다.

* 뛰어난 개발자가 되려면 전체 소프웨어 패키지를 빌드하는 빌드 스크립트를 반드시 잘 알아야 한다.
이걸 모르는 놈들은 다들 허접들이다.

* 오실로스코프를 잘 다루지 못하는 개발자들은 다 허접개발자들이다.

그런데 새로운 SW 기법이나 이론 개발 방식에 대해서는 '별 게 아니다'라고 생각하는 습관을 갖는 것이 중요합니다. 몇 가지 예를 들어 볼까요?

* 머신러닝은 별 게 아니야. 그거 파이썬을 돌리면 다 되는 거 아니야?(물론 본인은 파이썬을 코딩한 적이 없습니다.)
그거 일 주일이면 다 마스터 할 수 있는 거야.(물론 본인은 머신러닝을 공부하지 않은 백지 상태로 남아 있습니다.)

* 우리가 리눅스 커널의 스케줄러 코드를 고치니?
리눅스 커널은 그냥 가져다 쓰면 되는 거야. (물론 본인은 리눅스 커널 소스를 분석한 적도 없습니다.)
리눅스 커널은 조금만 하면 누구나 잘할 수 있는 거야. (당연히 앞으로 리눅스 커널의 소스 코드를 쳐다 보지도 않습니다.)

* TRACE32를 왜 잘 다뤄야 하지?
그거 하루만 교육 받으면 다 쓸 수 있는 거 아니야?
(물론 본인은 TRACE32 프로그램을 실행시키는 방법조차 모르고 배울 생각 조차 하지 않습니다)

이처럼 별 희한한 이유를 대면서 자신이 모르는 이론이나 기법은 별 게 아니라고 스스로 최면을 걸어야 합니다. 대신 자신에게 익숙하고 많은 시간을 투자한 기술에 대해서 '이게 전부이고 가장 중요하다'라고 생각하면서 오로지 자신에게 익숙한 기법을 강화하는 방향으로 공부를 해야 합니다.

꼰대 개발자가 되려면 반드시 공부를 열심히 해야 합니다. 그런데 공부의 방법과 방향이 가장 중요합니다.

* 새로운 트렌드는 죄악시 여기고 자신이 잘 알고 있는 기술에 대해서만 관심을 기울여야 합니다.

입시생이든 개발자이던 공부 방법이 가장 중요한 것 같습니다.

<< 스스로 많은 노력을 해야 한다.>>

꼰대 임베디드 개발자가 되기 위한 가장 중요한 요건을 말씀드릴 차례입니다. 이 요건을 제대로 충족해야 더 강력한 꼰대 개발자가 될 수 있습니다. 그 요건은 바로;

* 오랫동안 컴퓨터에 앉아 있는 것입니다.

위에서 설명한 바와 같이 꼰대 개발자는 자신이 성공했으며 다른 후배 개발자들이 자신을 선망하고 있다고 믿고 있습니다. 이런 믿음을 확신으로 바꾸려면 스스로 정말 자신에게 뿌듯할 정도로 최선의 노력을 다 해야 합니다 . 그런데 꼰대 개발자들의 최선의 노력은 대부분 '컴퓨터에 오래 앉아 있는 것입니다. 야근은 기본이고 주말에도 나와서 컴퓨터 앞에 앉아 있습니다.

가끔 이들은 주말에 노트북을 들고 스타벅스에 갑니다. 가장 많은 사람들이 다니는 곳에 앉아서 '빌드 셸 스크립트' 코드를 분석합니다. 그러는 자신의 모습이 너무 멋있다고 생각합니다.

* 그래! 나 같이 뛰어난 개발자가 주말에도 스타벅스에서 코드를 분석하고 있어!
* 난 역시 대단해!

하지만 스타벅스에서 이상한 미소를 지으며 노트북을 바라보는 꼰대 개발자를 본 10~20대 젊은이들은 이렇게 생각하고 바라 봅니다.

* 검은 색 모자를 쓴 이상하게 눌러 쓴 40대 후반 아저씨가 뭘하고 있는 거지?
* 머리도 1달 동안 안 감은 것아 노숙자 같기도 한데.

꼰대 개발자도 이런 젊은이들의 시선을 느낍니다. 그런데 꼰대 개발자는 회사에 있는 후배 개발자 이외에도 일반 대중들도 자신을 선망의 눈빛으로 바라보고 있다고 확신하면서 즐겁게 빌드 스크립트 코드를 봅니다. 그러면서 다른 사람들에게 방해가 될 정도로 크게 타자 소리를 내면서 노트북을 사용합니다.

<< 자신의 개발 방식이 여전히 먹힐 것이라 확신한다 >>

'10년이면 강산이 변한다'는 말이 있습니다. 하지만 꼰대 개발자들은 개발은 다르다고 생각합니다. 내가 하는 말을 잘 듣고 그대로 따라하면 나 같은 레전드 개발자가 될 것이라 확신합니다. 나 같이 뛰어난 개발자가 모든 시간을 퍼부어 최선의 노력을 다하고 스타벅스에서도 열심히 코드를 분석하니까요!

하지만 후배 개발자들의 개발 방식을 보면 정말 마음에 들지 않습니다. 이상한 덤프를 분석하고 쓸때 없는 TRACE32와 같은 디버깅 장비를 사용합니다. 가끔 이상한 ftrace 메시지(리눅스)를 쳐다 봅니다.

* 난 저런거 안써도 문제를 잘 해결했는데!
* 오실로스코프를 써서 파형을 보는 게 더 중요한데!

그래서 조용히 후배 개발자를 불러서 진심어린 조언을 해줍니다.

* 너, TRACE32나 ftrace/perf 와 같은 이상한 디버깅 프로그램 쓰지마! 그런 거 잘 할 필요 없어!
나 처럼 빌드 스크립트를 열심히 분석하고 회로도 공부해! 그래야 뛰어난 개발자가 될 수 있어!

어, 그런데 후배 개발자가 내 말을 듣지 않고 날 무시하는 듯한 표정과 함께 감히 대답도 하지 않습니다. 더 이상 조언을 하면 안될 것 같아 속으로만 이렇게 생각합니다.

* 저 친구 저렇게 개발하면 실력이 늘지 않을 텐데!

<< 공개적으로 다른 개발자를 무시하고 원색적인 비난을 서슴치 말아라! >>

강력한 꼰대 개발자가 되기 위한 가장 중요한 관문 중 하나입니다. 개발을 하다보면 우리와 다른 관점의 생각을 표출하는 개발자를 만날 수 밖에 없습니다. 서로 다른 생각을 하는 것은 지극히 당연하다고 봐야 합니다. 그런데 그들의 의견을 잘 듣고 설득력이 있는 내용이면 이를 받아 들이는게 상식이죠.

하지만 꼰대 개발자가 되려면 이런 개발자들을 절대 가만히 두면 안됩니다. 여러분은 스스로 자신이 성공한 개발자이고 IT 역사의 흐름을 바꾼 '리누스 토발즈'나 '스티브 잡스'와 같은 위인이라고 확신하고 있습니다. 이렇게 위대한 자신과 다른 생각을 하다니.

* 절대 용서할 수 없습니다.

그래서 자신과 다른 생각을 말하는 상대방을 죄악시 여기기는 것은 기본이고 원색적인 비난을 서슴치 말아야 합니다. 상대 개발자를 저주하고 멸시하는 가장 좋은 기회와 공간은 바로

* 공개적인 회의

입니다. 그렇다면 공개적인 석상에서 다른 개발자를 비난해야 하는 이유는 무엇일까요?
상대방이 어떤 의견을 견지하던 나와 다른 관점이나 생각 혹은 상이한 방향으로 어떤 문제를 분석하는 것은 있을 수 없고참을 수 없기 때문입니다. 그래서 자연스럽게 억울함이 쓰나미 처럼 밀려 옵니다. '나 같이 위대한 개발자를 멸시하는 개발자가 있다'니 이런 말도 안돼는 일은 생길 수 없어! 이런 억울함을 호소하기 위해서는 자연히 다음과 같이 행동하게 됩니다.

* 다들 보는 앞에서 특정 개발자를 무시하거나 비난해야 합니다.

가끔 꼰대 개발자와 비슷한 연차의 동료들이 '단 둘이 조용히 이야기하면 되지 않을까? 구지 그렇게 공개적인 자리에서 욕을 하니'란 의견을 들어도 흔들리면 안됩니다. '반드시 다른 사람들이 보는 앞에서 다른 개발자들을 원색적으로 비난해야'합니다.

(개인블로그)
http://rousalome.egloos.com