2018년 4월 18일 수요일

Good bye my friend

어제 하루는 갑자기 회사에 가기 너무너무 힘들고 귀찮아 아침에 급히 휴가를 냈습니다.
그리고 지난 주말에 IKEA에 가서 이전에 봐 둔 가구들을 사다 하루 종일 조립하고, 주말 사이 우박이 쌓여 만들어진 얼음들 깨고 부수고 치운 덕에 오래간만에 어깨와 허리가 욱신욱신 하네요. 그런데 어깨와 허리 보다 마음이 더 아픈 일이 생겼습니다.

 가구 조립을 마치고 드라이브 웨이의 얼음을 다 치운 후 샤워를 하려는데, 페이스북 메신져에서 띠링~ 하고 새 메시지를 알려옵니다.

 "어라? 이 친구 요즘에 연락해도 답장도 없어서 전화번호도 바뀌고 페북도 끊은 줄 알았는데 왠일이지?"

  연락이 온 친구는 매우 조용하고 차분한 성격을 가진 저와 비슷한 또래의 (고교시절 이야기를 할 때 연도를 보니 3~4살 정도 많은 것으로 추정) 일본인 친구입니다. 성격이 워낙 조용하다보니 같이 어울려 놀은 기억은 딱히 없지만, 짧게나마 1년간 학교를 다니며 모든 전공 과목을 같이 들었고, 모든 과목의 팀 프로젝트를 같이 했던 친구죠. 평소에 자주 만나는 사이는 아니였지만, 제가 토론토에 살 때에는 한두달에 한 번 정도 서로 만나 커피 한잔을 하며 짧게나마 서로의 안부도 묻고 근황 이야기도 했었고, 제가 옥빌로 이사를 간 이후에는 간혹 이메일이나 페북 메신져, 전화 등을 통해 연락을 했었습니다. 그러다 반년 정도 전에 이 친구가 위니펙으로 이사를 가게 되었는데, 그 이후 한동안 연락두절 상태였죠. 사기꾼이 아니라 편하다고??? 좀 이상하게 보일 수도 있지만, 제가 다녔던 학교에는 특정국가 출신 학생이 과반수 이상인데, 그 특정국가 출신 학생들 중 다수가 그런 특징이 좀 있었습니다. 팀 프로젝트에서 각자가 해야 할 기본적인 일에 책임을 다하지 않으면서, 자신의 실력과 능력의 과대포장에는 뛰어나 쓸데없이 많은 일을 하겠노라고 commitment를 많이 합니다. 그리고 당연히 그를 지키지 못하죠. 설상가상으로 프로젝트에 문제가 생기면 뛰어난 공작능력으로 본인이 아닌 다른 사람들의 문제로 프로젝트가 산으로 가고 있다고 포장을 잘 하다보니 놀 때에는 따로 가리지 않고 다 같이 놀았어도, 프로젝트 팀을 꾸릴 때에는 저와 비슷한 문화/성향을 지닌 홍콩/대만/중국/일본 등 동아시아 국가 출신 학생들이나 우리의 형제국가인 터키 출신 학생들과 주로 했습니다. 적어도 그들은 over commitment나 블러핑은 하지 않으니까요. 특히 30대 이상 아저씨들과 주로 팀을 했는데 실력의 정도를 떠나 30대 이상인 경우 최소한의 책임감이 있어 같이 일을 함에있어 서로 불편한 일이 없었거든요.

 사실 이 친구의 성격은 저와 썩 맞는 것은 아닙니다. 더구나 안그래도 저의 영어 실력이 한참이나 부족한데 이 친구 역시 영어를 잘 못해 서로 모국어가 아닌 영어로 이야기 하다보면 대화의 맥이 끊기고 답답하기 그지 없습니다. 영어 네이티브이거나 잘하는 친구와 이야기 할 때엔 제가 개떡같이 이야기 해도 상대방이 찰떡같이 알아듣기도 하고, 제가 모르는 어휘나 표현이 나와 이해를 못하면 귀신같이 알아채고 보다 쉬운 어휘나 표현으로 rephrase를 해 주거나, 정 안되면 그 단어의 뜻을 설명 해 주어 상대방은 좀 귀찮을지언정 대화가 이어지는데 반해 이 친구와 영어로 이야기를 하다보면 서로의 모국어 억양과 발음이 달라 쉬운 단어도 서로 못알아듣기도 하고, 영어도 못하는 것들이 그 와중에 각자 자신만 아는 어휘나 표현이 있어서 서로 이해를 못하는데, 다른 동의어로 대체하여 rephrase 할 능력은 없다보니 서로 이해하지 못하고 그냥 웃으면서 넘어가는 경우도 참 많죠.
그래도 1년간 모든 전공과목들을 같이 듣고 프로젝트를 같이 하면서 같이 잘 지냈습니다. 학교에서 팀 프로젝트를 하기 위해서는 각 과목마다 마음에 맞는 친구가 2-3명 정도는 있어서 같이 팀을 꾸려야 편한데, 이 친구는 실력이 아주 뛰어나 제가 편하게 프로젝트에 얹혀 갈 수 있게 해주지는 못했지만, 적어도 다른 학생들과는 달리 성실했고, 자기 실력과 할 수 있는 일의 범위에 대해 블러핑도 안했고, 저와 나이도 얼추 비슷했던지라 계속 붙어 다녔죠.

 첫 학기가 시작되고 얼마 지나지 않아 제가 FSWP로 영주권 신청을 할 때에 저는 이 친구에게도 졸업을 기다리지 말고 FSWP 지원을 해 볼것을 권유 했었습니다. 이 친구도 어학 점수만 6.5 이상 나오면 FSWP로 지원이 가능했기 때문이죠. 그런데 이 친구는 1년이 조금 넘는 오랜 기간에 걸쳐 패스웨이를 한 후에 시험 없이 학교에 입학을 한 친구입니다. 1년넘게 패스웨이가 걸린만큼 원래 영어를 잘 하지 못하기도 했고, 한 번도 영어 시험을 본 적이 없던터라 IELTS 시험을 보는 것에 상당한 부담을 가지고 있더군요. 그래서 시험보기 무섭다며 제가 FSWP 준비를 차근차근 해 나아갈 때 차일피일 미루고 또 미뤘습니다. 그러다 그 해 가을 제 FSWP 이민 프로세스가 진행되는 것을 지켜본 이 친구는 드디어 IELTS 시험 준비를 하면서 시험 예약을 하기 시작했는데, 아직 FSWP 67점은 안되었지만 거의 그에 근접할 수준의 성적표를 받은 시점에, 그 해 SW Engineer NOC의 FSWP 티오가 마감이 되고 말았습니다. 그래도 다음 해를 위해 그 친구는 계속 시험을 치뤘지만 2015년이 되어 Express Entry에 대한 모든 것이 알려진 이후에는 사실상 FSWP 이민을 포기하고 영어 시험 준비도 중단을 했었습니다.

 결국 저는 입학 후 1년이 안되어 영주권을 받았고, 바로 회사에 나가 일을 하기 시작했지만, 이 친구는 원래 계획대로 PGWP를 위해 계속 학교를 다녀야만 했습니다. 이 친구가 하던 프로그램은 코업이 있는 프로그램이였습니다. 그 당시만 해도 대부분의 컬리지 학생들이 코업 일을 구했던 시기였습니다. 하지만, 이 친구는 코업을 구하지 못해 중간에 강제 방학을 맞이하기도 했고, 결국에는 졸업 전까지 코업을 못하여 프로그램도 논 코업 프로그램으로 변경하여 졸업을 했죠. 그렇게 졸업을 하고 이제 진짜 일을 구할 시기가 되었는데, 이 친구의 캐나다 취업운은 졸업을 해도 별로 나아지지 않았습니다. 어찌된 영문인지 제가 보기엔 이 친구보다 실력도 부족하고 영어를 더 잘하지도 않는 다른 친구들도 결국엔 어떻게든 취업을 했지만, 이 친구는 면접 과정까지 가는 것도 쉽지 않았습니다. 한 번은 저희 회사에 오픈된 포지션과 매칭이 되기에 이 친구를 추천하려 했는데 HR에 연락을 하니, 방금 전에 인터뷰 본 지원자를 채용하기로 해서 해당 포지션은 지금 close 될 것이라고 해서 인터뷰도 진행하지 못했습니다.

 2년이 조금 넘는 시간이 흐르고 흘러 힘겹게 전공 관련 일자리를 구했는데, 그 친구의 PGWP의 남은 기간은 1년이 채 안된 시점이였습니다. 이 친구가 원래 생각했던 CEC를 위해서는 (또한 다른 대부분의 이민을 위해서는) 1년 이상의 경력이 필요한데, 남은 워크퍼밋 기간을 풀로 다 채워도 1년 경력이 안나오는 상황이 된 것이죠. 그 때부터 이 친구는 저에게 종종 연락을 하기 시작했습니다. 혹시 이런 상황에서 가능한 이민 프로그램을 아는지, 그런 케이스를 본 적이 있는지 많이 물어봤었습니다. 정확한 기간은 잘 모르겠지만 아마 1-2달 정도 짧은 기간이였던 것 같은데, 이 친구는 회사를 다니면서 회사의 주정부 이민 지원 등 여러가지 가능성들에 대해 이러저리 알아 보았지만, 1년 미만으로 남은 현재의 워크퍼밋으로는 토론토에서 영주권을 받을 길이 없다는 결론을 내렸던 것 같습니다. 그리고는 어느날 갑자기 위니펙으로 날아갔죠. 위니펙에서는 6개월만 일을 하면 주정부로 이민을 할 수 있다는 말을 남기고 말이죠.

 처음 위니펙에 간 이후에는 간혹 직장은 구했는지, 이민은 계획대로 잘 진행 중인지 안부차 연락을 하면 "여긴 벌써 겨울이 시작되나봐", "토론토는 참 따뜻한 도시였어" 등 조금 다른 이야기들의 답변이 오더군요. 그러더니 어느 순간부터는 메신져로 연락을 해도 답장이 없고, 전화도 받지 않았습니다. 아마 전화는 이미 위니펙으로 넘어가면서 지역번호가 바뀌면서 번호가 변경되었을 것이라고 예상은 했고, 메신져는 페북을 끊었나 생각했죠. 그렇게 썩 친하다고 말하기는 힘들지만 저도 힘들었던 학생시절에 함께 했던, 그리고 한동안 연락이 두절되어 궁금했던 그 친구에게 오래간만에 연락이 온 것입니다.

 하지만, 이렇게 온 메시지는 그다지 긍정적이지 않은 메시지였습니다.

 "나 7월 말에 일본행 '편도' 항공권을 예약 했어"

저의 손가락들은 한동안 핸드폰 화면 위에 머물렀습니다. 그냥 일본행 항공권을 샀다고 하면

 "휴가가니? 잘 다녀와"

 "너 고향이 어디라고 했지? 맛있는 거 많이 먹고 와"

등의 인사라도 할텐데, '편도' 라는 이 한 마디가 지금 이 친구의 상황에 부정적인 모든 것을 내포하고 심하게 어두운 기운을 뿜어내고 있었습니다.
이 친구가 구지 애둘러서 '편도' 티켓을 샀다고 애둘러 말 한 상황에서 스스로 아픔을 꺼내기 전에 제가 들추고 싶지 않았습니다. 그래서 저도 애둘러서 이상한 소리들만 한동안 한 것 같아요.

 "Is it still cold in Winnipeg? Entire my village became arena due to frozen rain during last weekend."

 "We should meet once again sometime. Let's drink Sake and Biru at that time."

 "Try to visit gorgeous places before you leave. Have you been Banff?"

 "I think you must see Aurora at once."

 ...

 얼추 계산을 해보니 이 친구가 15년 여름 학기를 마치고 졸업을 했으니, 올해 8월 즈음이면 PGWP가 만료되는 것 같습니다. 그래서 작년 9월인가 10월 즈음에 위니펙으로 이사를 갔던 것이고, 현재는 당장 오늘 취업을 한다 해도 워크퍼밋 만료 전 까지 매니토바에서 6개월의 경력을 만들 수 없으니 포기를 한 것 같네요. 

어쩌다보니 오래간만에 연락을 하는데 서로 정작 하고싶은 이야기는 꺼내지도 못하고 서로 변죽만 울리는 상황에서 그냥 진심으로 하고싶은 말 한마디를 했습니다.

 "If you have a chance to come to Oakville or near to Oakville, please contact me. I would like to serve a dinner once, indeed!" 

하지만 제 말에 이 친구가 마지막으로 보낸 메시지가 더 마음아픈 말이였습니다.

 "Thank you, but I don't think I will come to Canada again."

저의 빈약간 기억력에 정확히 캐나다였는지 미국이였는지는 기억이 가물가물하지만 이 친구는 20대 때에도 이민을 위해 북미에 몇년간 머물렀던 적이 있었고 실패하여 일본으로 돌아간 경험이 있었습니다. 그리고 30대 후반에 (혹은 40대 초반) 재 도전을 했지만 40대가 된 지금 이렇게 다시 한 번 영주권을 받지 못하고 일본으로 돌아가는 상황이 되었으니, 다시는 안올 것 같다는 그의 말은 정말일 것 같네요.

 이 친구는 워낙 말이 느리고, 말주변도 별로 없지만 (처음엔 단순히 영어를 못한다고 생각했는데, 학교 영어과목 강사 중 한 분이 일본에서 오랜기간 강사 생활을 하여 일본어를 아주 잘 했는데, 그 분 말에 의하면 이 친구는 일본말도 대화의 템포가 상당히 느린 편이라고 하더라고요) 성실하고 착한 친구였는데... 무언가 질문을 던지면 10-20초 후에나 full sentence를 만들어서 대답하는 그 친구의 화법이 행여 취업 길을 막은 것은 아닐까 생각도 듭니다. 저는 영어를 참 못하지만 그래도 제가 아는 내용이면 비문이더라도 휘릭휘릭 대답은 합니다. 단, 한국말과 비슷하게 주어가 생략된 말은 매우매우 자주 하는 편이고, 시제와 단/복수도 거의 생각 안하고 마구잡이로 말하는 편이며, 심지어 수동/능동 또한 제 멋대로 바꿔 그냥 제 입에 잘 붙는 말을 해버리는 편입니다. '난 내 할 말을 내가 알아서 다 한 것으로 나의 임무를 마쳤으니 너는 니가 알아서 내 말을 이해하는 것으로 너의 임무를 다 하거라.' 라는 식으로 말이죠. 그런데 이 친구는 대화의 템포는 참 숨 넘어가게 느리지만, 이 친구가 하는 말들을 곱씹어보면 마치 성문 종합영어 예문에서 봤던 것 같은 완성형 문장을 만들어서 하거든요.

 5년 밖에 안된 저의 이민 생활이지만 간혹가다 이런저런 이유로 지인들이 각자의 모국으로 돌아갈 때면, 그다지 친하게 지낸 사람이 아니더라도 왠지 모를 허전함이 밀려오곤 하는데, 참 헤어짐이라는 것은 적응하기 쉽지 않은 이벤트 같습니다.

한국에서는 몰랐는데 이민 생활을 하면서 생긴 허전함이라고나 할까요? 그가 다시 캐나다로 올 일은 아마도 없을 것 같고, 저도 딱히 일본에 갈 것 같지도 않으니 앞으로 서로 볼 기회는 없을 것 같지만, 부디 일본에서 세번째로 다시 시작하는 그의 삶에는 어려움이 없이 잘 풀리기를 진심으로 빌어봅니다.

2018년 4월 6일 금요일

SW Developer라는 직업 - 개발자는 무슨 일을 할까?

안녕하세요.

아래 글은 제가 얼마 전에 다른 카페에 올렸던 글인데, 최근 1-2년 사이에 저에게 메일이나 행아웃 등으로 연락을 주시는 분들의 연령대가 낮아지고, 아직 개발자 커리어를 시작하기 이전에 고민을 하시면서 연락을 주시는 분들도 많아 제 블로그에도 포스팅을 합니다.

주제에는 벗어나는 이야기이지만 최근 1-2년 사이에 현재 고등학생이시거나, 대학생이신 10대 후반에서 20대 초중반이신 분들이 이민에 부쩍 관심을 가지시는게 아닌가 싶기도 합니다. 블로그를 처음 시작했던 시기만 해도 저와 비슷한 또래이거나 저보다 좀 더 형님 세대에서 연락을 많이 주셨는데, 요즘에는 오히려 30세 미만이신 분들이 더 많은 것 같네요. 미세먼지 때문인지, 아니면 좀 더 개방되고 세계화 된 환경에서 성장하셔서 더 빨리 더 넓은 곳으로 눈을 돌리시는 것인지는 모르겠지만, 요즘 메일을 보면 조금 신기하기도 합니다. 아, 어쩌면 Express Entry 이후로 나이가 차면 이민이 힘들어져서 미리 포기하시는 분들이 많아져서 그럴 수도 있겠고요.

그러면 카페에서 옮겨 온 글을 시작합니다.

===================================================================

이미 개발일을 하고 계신 분이라면 별다른 이야기도 없고 어쩌면 너무 저수준의 이야기만 풀어놓아 제 생각과 많이 다를 수도 있습니다. 하지만 어쩌겠습니까. 제가 그렇게 훌륭한 지적수준을 지니지 못했고 그냥 열심히 하는 개발자일 뿐인지라 웬만한 것은 다 단순하게 생각하고 처리하니 제 생각도 그 수준에 머물러 있는 것을요...

개발자라는 직업에 대해 생각해보면 이는 분명 전문 기술직입니다. 

일을 하기위해서는 정규교육이건 독학이건 일정 수준 이상의 학습과 경험을 갖추어야 합니다. 또한 개발자라는 직업은 지식 노동자입니다. 육체노동이라고 하면 타이핑을 하고 마우스를 컨트롤 할 때 필요한 손가락과 손목운동 정도입니다. (하지만 거북목 증후군과 터널 증후군이 빈번한 것은 비밀이에요)

그런데, 다른 지식노동 전문 기술직과는 조금 다른 것이 정규교육을 전혀 거치지 않은 사람들도 얼마든지 이 직종에 종사할 수 있으며 또 잘 할 수 있습니다. 근본적인 이론은 아무래도 학사 이상의 교육을 받는 것이 좋겠지만, 업무 자체를 처리함에 있어서는 독학으로 혼자 공부해도 별다른 무리가 없기도 합니다. 온라인에 워낙 많은 학습자료들이 있기 때문이기도 하지만, 기술 변천이 매우 빠른 분야 중 하나인지라 배운 지식을 그대로 활용하는 것 보다 더 중요한 것은 기존에 알고있는 내용을 기반으로 새로운 기술을 빨리 습득하고 활용하는 능력이기 때문이기도 합니다.

아주아주 단순하게 살기위해 노력하는 저의 머리에서는 SW 개발이라는 일을 '긴가민가의 공학' 이라고 생각합니다.
즉 true or false에 대해 계속해서 명확하게 정의하고 확인하는 과정이 무한히 반복되면서 제품이 만들어지고 작동하게 됩니다.



컴퓨터는 0과 1 외에는 아무것도 모른다는 말을 이미 들어보셨을 것입니다. 네, 양자 컴퓨터가 아직 없는 지금은 컴퓨터에서 하는 일이라고는 따지고 보면 0과 1을 처리하는 것 외에는 없습니다.  아무리 복잡한 시스템이라고 해도 이는 마찬가지입니다.

SW 공학은 다른 공학분야들에 비해 근래에 생긴 분야입니다. 그렇다보니 여기에서 만들어내는 제품들은 보통 기존 아날로그 방식의 프로세스나 물건 등을 디지털화 하여 사람보다 좀 더 빠르게 처리하도록 만들죠.
고급 개발자들은 상황이 다르겠지만, 저와같은 저랩 개발자라면 아무리 크고 복잡한 상황이라도 계속해서 단순화하고 분할하여 '긴가민가'의 논리로 모든 것을 처리할 수 있는 단계로 나누는 것만 잘해도 일을 하는데 큰 문제가 없습니다.

10년 전에 제가 했던 일을 다시한 번 떠올려 예를 들어보겠습니다.

요즘 스마트폰에서는 어떤지 모르겠는데, 예전 피쳐폰을 생각 해 보시면 지인에게 전화를 걸 때에 보통 두 가지 중에 한가지 방법으로 전화를 걸으셨을 것 같습니다.
하나는 단축 다이얼 기능으로 0-9까지 번호 중 하나를 길게 눌러서 미리 설정 해 둔 번호로 바로 전화가 걸리게 하는 것이고, 다른 하나는 일명 '초성 검색'으로 이름의 초성만을 입력하면 그 초성과 매칭되는 사람들이 리스팅 되어 사용자가 선택하여 전화를 걸 수 있게 하는 것이지요.
아, 전화번호를 그냥 통채로 외워서 전화를 걸고 계시다고요? 폰북에 들어가 ㄱ-ㅎ까지 주루룩 검색을 하신다고요? 만약 그렇다면 당신은 핸드폰 문화가 퍼지기 시작했던 90년대 말에 이미 중년에 접어드신 분들이거나, 매우 강한 아날로그 적 감성을 지닌 예외적인 분들 일 것입니다.

먼저 단축 다이얼 기능을 단순화하여 보면 이렇습니다.

핸드폰의 키패드는 매 xx millisecond마다 계속해서 사용자가 버튼을 눌렀는지 안눌렀는지 확인을 합니다.
    - 0번키 지금 눌려있니? 아니니?
    - 1번키 지금 눌려있니? 아니니?
    - 2번키 지금 눌려있니? 아니니?
     ...

예를 들어서 사용자가 1번 버튼을 누르면 눌리자마자 기계가 버튼이 눌린 것을 인식하고 동작하는 것이 아니라, 아주 짧은 시간이지만 매 xx millisecond마다 각 개별 버튼의 눌림 상태를 확인해서 눌린 것인지 아닌 것있지 알아내는 방식이지요.

버튼이 눌린 상태에서도 핸드폰은 계속해서 xx millisecond마다 각각의 버튼을 한 번 씩 돌아가면서 눌림 상태가 true인지 false인지 지속적으로 확인을 합니다.

그러다가 특정 순간에 1번 버튼의 눌림 상태가 True에서 False로 바뀌면 또 다른 긴가민가 테스트를 합니다.

    - 버튼이 눌린 후 떼어질 때 까지 시간이 1초보다 크니 아니니?

만약 1초 보다 오랜 기간동안 눌려 있었다면 이건 버튼 길게누름으로 인식을 하게되어 단축 다이얼로 동작을 하게 합니다. 만약 1초 미만으로 눌렸다면 일반 버튼 누름으로 인식을하고 단순히 화면에 1을 출력하고 끝내죠.

1초 이상 눌린 경우엔 다시 한 번 긴가민가 테스트를 진행합니다.

    - 1번 단축 다이얼이 설정이 된 적이 있는지 아닌지 긴가민가 테스트를 합니다.

기라면, 이미 등록된 번호를 가져와 전화 걸기를 합니다.

아니라면, 사용자에게 1번 단축다이얼을 등록 할 것인지 아닌지 물어보는 화면을 뿌립니다. 그리고 사용자의 입력이 Yes인지 No인지 다시 한 번 확인을 하죠.

조금은 더 복잡하지만, 한글 이름의 초성검색 기능도 따지고 보면 다 이러한 식의 긴가민가 테스트의 반복입니다. (검색속도 향상을 위해 초성들 따로 인덱싱을 하는 등의 로직이 추가되었지만, 아주아주 기본으로 보자면 그러합니다)

초성 검색은 따로 초성검색 메뉴로 들어가지 않고 그냥 전화기 메인 화면에서 숫자를 누르면 누른 숫자와 매칭되는 전화번호 검색이나 혹은 누른 숫자키에 매칭되는 한글 초성으로 검색이 됩니다.

위에 버튼 길게눌림 긴가민가 테스트를 통해 버튼 짧게 눌림을 인식했다고 가정하고...

    - 눌린 숫자와 매칭되는 한글이 자음이니 모음이니?

모음인 경우라면 이건 그냥 숫자키로 인식합니다. (중성 검색 기능은 없기에...)

이런 식의 키 입력이 지속되어 계속해서 한글 자음과 매칭되는 숫자 키가 눌렸다고 가정하면, 버튼이 눌릴 때 마다 또 이런 테스트를 합니다.

    - 지금 2글자 이상 입력을 한 것이니 아니니?

초성검색은 보통 2자 이상 입력을 할 경우에만 동작을 시작하기에 (1글자로 검색을 하려면 워낙 많은 검색 결과가 나오기에...) 이런 검사를 합니다.

만약 입력한 버튼 중에 초성과 매칭되지 않는 숫자가 섞여있다면 지금까지 입력한 숫자열은 모두 초성검색이 아닌 일반 전화번호 검색 기능으로 동작합니다. 예를들어 전화번호 뒷 4자리 검색 같은 기능 말이죠.

자, 사용자가 2글자 이상 입력을 했고, 모두 초성에 매칭되는 숫자키라면 초성검색 기능를 작동시킵니다.

초성검색을 하는 방법은 여러가지이지만, 지금은 편의상 가장 무식하지만 단순한 방법으로 설명 드립니다.

먼저 입력된 숫자키에 매칭되는 한글 자음의 조합들을 전부 만들어 냅니다.
예를들어 삼성 천지인 자판에서 4번 버튼은 ㄱ 과 ㅋ에 매칭됩니다. 그리고 5번 버튼은 ㄴ과 ㄹ에 매칭되죠.
그러면 4, 5번 버튼이 연속으로 눌렸을 경우 ㄱㄴ, ㄱㄹ, ㅋㄴ, ㅋㄹ 라는 초성의 조합이 나올 수 있습니다.
아, 쌍자음을 까먹었군요. 쌍 'ㄴ'이나 쌍 'ㄹ', 쌍 'ㅋ'은 없지만 'ㄲ'이 있으니 이 조합도 추가를 해서 ㄱㄴ, ㄱㄹ, ㅋㄴ, ㅋㄹ, ㄲㄴ, ㄲㄹ 조합이 만들어 집니다.

그 다음에는 주소록에 저장된 모든 사람의 이름들을 한 번 씩 다 확인을 합니다.

이미래
강래원
김개똥
...

이렇게 이름이 있으면 먼저 처음에 있는 '이미래' 부터 가봅니다
이미래과 이전에 만들어 둔 초성 조합인 ㄱㄴ, ㄱㄹ, ㅋㄴ, ㅋㄹ, ㄲㄴ, ㄲㄹ을 하나씩 비교 해 봅니다. 이름의 첫 글자 '이'에서 초성인 'ㅇ'을 가져옵니다.

    - 미리 만들어 둔 조합의 첫 자음과 'ㅇ'이 매칭 되니?

답은 No이니, 다른 긴가민가를 해봅니다.

    - 그 다음 이름도 있니?

그 다음에 '강래원'이 있으니 가져옵니다. 그리고 그 중 첫 글자의 초성인 'ㄱ'을 가져오죠.

    - 조합 내에 첫 글자로 'ㄱ'이 있니?

네 있습니다. 그러면 비교대상 조합군을 ㄱㄴ, ㄱㄹ, ㅋㄴ, ㅋㄹ, ㄲㄴ, ㄲㄹ 6개에서 ㄱ으로 시작하는 ㄱㄴ, ㄱㄹ 두 개로 줄여줍니다. 그리고 그 다음단계로

    - 이름에 '강'다음에 글자가 있니?

네 있죠. 그러면 그 다음 단계로 다음 글자를 가져와 그 중 초성인 'ㄹ'을 뽑아냅니다.

    - 혹시 조합 내에 두 번째 글자로 'ㄹ'이 있니?

네 조합 내에 있습니다. 축하합니다! 드디어 초성검색에 부합되는 검색결과 중 하나를 찾았습니다. 이제 이 이름은 입력한 값과 매칭되니 화면에 출력하고, 그 다음 이름을 또 가져와 하나씩 긴가민가를 해 주는 것입니다. 전화번호부의 맨 끝에 갈 때 까지요. 그렇게 하여 매칭되는 초성 조합을 가진 이름들을 모두 찾아내서 보여주는 것이지요.

이렇게 SW라는 것은 사실상 "긴가민가 테스트"를 주어진 목록과 상황 상에서 "반복" 하는 방식으로 이루어져 있습니다.

별 것 아닌 것 같지만 의외로 이련 일을 하면서 자주하는 실수로는....
첫 번째 글자 비교를 완료했으니 그 다음 글자로 넘어가야하는데, 실수로 같은 글자를 반복 비교한다거나, 이름의 첫번째 글자 자음과 만들어 둔 조합의 두번째 자음을 비교하여 매칭한다거나 식의 실수가 자주 발생하기도 합니다.
혹은, '강래원' 이름은 세 글자이지만 입력한 숫자는 2글자 뿐이기에 앞 두글자만 비교를 하고 넘어가야 하는데, 구지 세번째 글자를 비교하려고 덤비는 경우도 있지요. '원'의 'ㅇ'과 아무런 값도 없는 것 간의 비교를 하는 것이지요. 이 경우에는 비교 방식에따라, 사용하는 프로그램 언어에 따라 폰이 재부팅 될 수도 있고, 그냥 강래원은 4, 5번키 입력에 맞지 않는 것이라고 치부하고 넘어 갈 수도 있고, 아니면 잘못해서 비교를 했지만 또 잘못해서 비교한 것이 맞다고 하여 2중 오류로 최종 결과는 강래원은 4, 5번 키와 맞는 이름이라고 올바른 답을 찾을 수도 있습니다.

SW가 이세돌 9단을 바둑으로 이기기도 하고, 처음 가는 길이라도 막히지 않는 구간으로 잘 찾아 최적 구간의 길을 찾아주기도 하는 등 참으로 복잡한 일을 하는 것 같지만, 복잡한 것은 최종 완성된 제품일 뿐 세분화 하여 나눠놓고 따지고 들어가면 각각의 논리 구성은 이와같이 긴가민가 테스트를 각각 주어진 조건과 환경에 맞게 지속적으로 반복을 하는 작업입니다.

그렇다보니 복잡한 세상을 잘게 쪼개서 아주아주 단순하게 생각하는 능력이 좋다면 전문적인 고등교육을 받지 않아도 얼마든지 혼자서 할 수도 있는 일이기도 하죠. 공학이라고는 하지만 다른 공학과는 달리 높은 수준의 수학적 지식을 필요로하기 보다는 Yes/No의 논리연산에 대한 능력이 더 필요합니다. 

여기에서 오는 작은 문제가 하나 있는데, 아직 실무를 경험 해 보지 못한 학생들의 경우 1,2학년 때에는 과연 내가 배우는 것으로, 지금까지 배운 것으로 뭘 만들어 볼 수나 있으려나? 맨날 숫자 비교나 하고, 글자 비교나 하고, 그거 반복하고... 아주아주 단순한 것 밖에 만들지 못하는데, 내가 뭘 할 수 있으려나? 졸업하면 일이나 할 수 있으러냐? 코업 나가면 일이나 할 수 있으려나? 걱정을 많이 하기도 합니다.

벌써 20여년 전인데... 저도 예전에 대학생 때 그랬습니다. 학교에서 이것저것 많이 배우기도 했고, 또 혼자서 학교에서 가르치지 않는 다른 기술들도 공부하고 연습 해 보기는, 매냥 하는건 긴가민가의 반복만 하는데 어떻게 엑셀같은 프로그램을 만들고, 어떻게 핸드폰을 만들 수 있는지 도무지 감이 오지 않았죠.

하지만 엑셀이건 핸드폰이건 너무 큰 숲만 봐서 그런 것이고 그것들도 다 잘게 잘라서 보면 이렇게 지금까지 배운 것들 위주로만 구현이 된 것이니 혹 지금 SW 공학 전공을 하시는 학생들이 있다면 너무 걱정하지 말라고 이야기 해주고 싶습니다. 대신, 큰 숲을 작은 나무와 작은 나무에서도 각각의 나뭇잎 한장 한장으로 잘게 쪼개서 볼 수 있는 능력을 키워야 합니다. 자기가 배운 단순한 기술들을 조합해서 무언가 소소하게나마 의미있는 제품으로 만들어 내는 훈련을 해야합니다. 이런건 학교에서 잘 가르쳐주는 것도 아니고 가르쳐준다고 다 아는 것도 아니기에 혼자서 이것저것 많이 해보는 것이 좋지요.

추가로 말씀드리자면 사실 위에 예제는 실제 핸드폰에 구현된 코드 구조와는 사뭇 다릅니다. 앞서 말씀드린 것 처럼 구현할 수 있는 수 많은 선택지 중 가장 단순한 방법을 말씀드린 것입니다. 보통은 이런 식으로 검색을 할 경우 검색 속도의 문제가 있기에 사전에 초성 인덱싱을 미리 하는 방법등 다른 방법 등을 쓰지요. 예를들어 '김개똥'이라는 이름을 저장할 때에 초성 검색시 매칭되는 숫자 키인 '4, 4, 6'이라는 키 조합을 미리 찾아서 '김개똥'이라는 이름과 함께 저장하는 것 같은 방식이 그 중 하나라고 할 수 있습니다.
이렇게 하면 사용자가 버튼을 누를 때 마다 모든 조합을 다 찾아내고 각 조합마다 계속해서 비교하는 등의 반복된 작업을 하지 않고 사용자가 입력한 숫자키의 배열이 '4, 4, 6'과 매칭되는지의 여부만 확인하면 되니 훨씬 더 빨리 검색 결과를 얻을 수도 있죠.

이렇게 인덱싱을 하는 방법을 연구하여 남들보다 빨리, 효율적으로 검색하는 것을 찾아내는 것이 SW 개발자라는 직업을 단순 기술직이 아닌 지식 노동자로 만듭니다. 단순하게 계속해서 Yes No만 반복하다보면 아무리 빠른 컴퓨터라고 해도 입력된 데이터가 많아질 수록 점점 느려질 수 밖에 없는데, 아주아주 작고 보잘것 없는 아이디어 같지만, 전화번호를 저장할 때에 작은 계산만 하나 미리 해서 실제 사용 시에 반응속도를 향상시키는 것이지요.

또 이러한 새로운 방식으로 검색을 하지 않는다 하여도 앞서 했던 긴가민가 테스트들의 순서나 이를 반복하는 순서만 바꾸어도 성능에 큰 영향을 주기도 합니다.
제가 예전에 대학생때 후배들에게 세미나를 하면서 한 적이 있는 말인데, 만원짜리 한장과 천원짜리 한 장이 있을 때, 사람 세계에서는 어떻게하건 11,000원이지만, 컴퓨터 세상에서는 만원짜리가 앞에오고 천원 짜리가 나중에 올 경우 만 천원이지만, 천원이 앞에오고 만원이 나중에오면 천만원이 되기도 합니다.

컴퓨터 공학의 시초는 사실 수학인지라, 정말 고성능에 뛰어난 연산이 필요한 제품을 만들기 위해서는 수학적인 지식과 다양한 수학 공식들의 활용/적용 능력이 필요하기도 합니다. 하지만 저처럼 저랩 개발자들의 경우 그런거 별로 필요 없습니다. 복잡한 실제의 인간 세상을 단순화해서 네/아니요의 구조로 잘게 자를 수 있고, 계속해서 무한 반복되는 긴가민가에서 내가 확인해야 하는게 기인 것인지 아닌 것인지 헷갈리지 않을 능력만 있으면 적어도 저처럼 밥벌어 먹고 살 수는 있습니다. (그런데 종종 긴가민가의 숲에서 길을 잃고 헤메기도 합니다 ㅠㅠ)

혹시나 이쪽 분야에 새로 커리어를 시작을 고민하시는 분들이나, 전공 고민을 하시는 분들께서 만약에 제 글을 읽고 뻘써부터 머리에 쥐가나기 시작한다면 어쩌면 이 분야가 적성에 맞지 않는 것일 수 있습니다. (아니면 제 필력이 형편없어서 읽기 힘들어서 그럴 수도 있고요)

어찌되었건 저의 개똥같은 작은 생각이 고민하시는 분들께 조금이라도 도움이 될 까 싶어 몇 자 적어봅니다.


2018년 3월 8일 목요일

Work Life Balance - 무너진 워라밸 균형


2달 조금 넘는 기간동안 아무런 포스팅이 없었네요. 그 이유는 제목에서도 보여지듯 그간 저의 Work - Life Balance가 무너져 정신을 차리지 못했기 때문입니다.

어제 이 문제로 아버지와도 오랫동안 통화를 하며 제 마음을 추스리기도 해보고 스스로 정리를 다시 해 보았는데, 어찌 될 것인지는 저도 아직 잘 모르겠습니다.

사실 1월 중순 즈음에도 약 2주 가량 맥시코 칸쿤으로 휴가를 떠나면서 휴가기간 내내 스스로 현재 상황에 대한 파악과 미래에 대한 스스로의 다짐과 계획을 세워보았지만, 사람 일이 뜻대로 되지만은 않다보니 휴가복귀 후 채 1달도 되지않아 가득 충전했던 저의 삶의 에너지는 다시 고갈되었고, 저의 의지도 다시 무너져 버렸으니까요.

그래도 어제 아버지와 오랜 시간동안 통화를 하고, 또 혼자 생각을 정리하면서 이전까지는 "빨리 탈출하고싶다" 라고만 생각하고 있었지만, 조금 더 구체화 시킬 수 있었고 보다 근본적인 원인을 알아낼 수 있었습니다.

제가 다시금 정리한 저의 워라밸이 무너진 이유를 찾자면 제가 캐나다에서 다시 일을 시작했던 시기 돌아가야 할 것 같습니다.

저는 캐나다에서 일을 시작하면서부터 스스로 워라밸을 무너트린 채 시작을 했었습니다.
토론토에서 미시사가까지 출퇴근 시간에 교통체증으로 시간을 허비하는 것이 싫었고, 그 무엇보다 너무나 오래간만에 시작하게 된 개발 업무인지라 스스로에대한 자신이 없었던 시기였기에 일반적인 출근시간보다 일찍 출근을 했고, 일반적인 퇴근시간보다 늦게 퇴근을 했습니다. 처음에는 별 것 아니라고 생각했지만 훗 날 뒤돌아보니 매일매일 남들보다 2-3시간 일찍 출근해서 1-2시간 늦게 퇴근했기에 한나절 정도는 더 일을 했던 셈입니다.

그렇게 더 많은 시간을 투입한 덕분에 부족했던 실력과 지식과 경험의 간극을 많이 채울 수 있었고, 3개월 probation기간을 지남과 동시에 근무조건까지도 수정하면서 "짤릴 수도 있다" 라는 불안감은 해소되었습니다. 하지만 이사를 가기 전 까지는 러시아워 교통체증이 싫어 계속해서 이러한 패턴을 유지 했었습니다.

이 때 이미 아침 6시 경에 출근을 해서 오후 7시 경에 퇴근을 해왔기에 정상적인 밸런싱은 아니였지만, 다시금 찾은 저의 일이 너무나도 즐거웠기에 느끼지 못했었죠.

그리고 회사에 조금 더 가까운 곳으로 이사를 간 후에는 보다 정상적인 근무시간 체제를 유지 했습니다. 워낙 일찍일어나는 편이기에 보통 6시 출근, 늦어도 7시 즈음에 출근을 하였고 대신 퇴근은 보통 3시즈음 했습니다. 나중에 car pool buddy가 생긴 이후에는 8시 출근, 4시 30분 퇴근이 일상적이였죠.

하지만 제버릇 남 못준다고 매일은 일 평균으로 보자면 약 1 - 1.5시간 가량은 공부나 개인 프로젝트, 혹은 업무 업무관련된 신규 기술을 이것저것 테스트 하는데 시간을 보냈습니다. 안그래도 중간에 5년여의 커리어 공백이 있는데다 남들보다 뛰어난 두뇌를 자랑하는 것도 아니기에 롱런하기 위해서는 이렇게 해야 한다고 믿고 살았죠.

그 때에는 그래도 괜찮았습니다. 제 스스로 혼자만의 일을 하는 것이고, 언제든 조정이 가능하기도 하며, 하면 좋고 안해도 그만인 일들이였습니다.

그리고 작년 초에 팀을 옮기면서 이러한 저의 패턴에 작은 변화가 생겼습니다. 항상 고정적인 업무 영역만을 하다가 DevOps를 시작하면서 부터는 모든 것이 신세계였습니다. 항상 새로운 기술들을 접하고 새로운 언어와 새로운 개발환경에 놓였습니다. 그래서 제가 선택한 것이 새로운 것을 배우는데 투자하는 제 개인 시간을 돌려서 새로운 기술을 쓰는 회사 업무를 하는데 쓰자는 것이였죠.

덕분에 좋은 점들도 많이 있었습니다. 회사 프로젝트가 마치 제 개인 pet project처럼 느껴졌기에 애착이 가기도 했으며, 새로운 것을 배우면서 제 업무 성과까지도 덩달아 늘어나니 1석 2조였지요.

하지만 이렇게 변화된 저의 생활 패턴은 단기간에 그쳤어야 했었습니다.
저의 라이프 영역의 개인적으로 투자하는 시간에 업무라는 것이 들어오기 시작하자 일과 삶의 분리가 서서히 무너지기 시작하였고, 어느새 스프린트 플래닝 시에 제가 할 수 있는 일의 스코프를 계산할 때, 퇴근 후 일 할 작업량까지 고려하기 시작한 것이지요.

간호 개인 프로젝트들을 하려고 계획을 세운 주간이라고 해도 늘 그렇듯 사고는 예기치않게 터져서 서버 다운 등의 이슈가 생겨 긴급 대응 문제로 제 시간을 투자하거나, 스프린트 진척이 눈에띄게 더딘 것을 참지 못하고 회사 일을 해대기 시작했습니다.

그렇게 점점 늘어나는 일 욕심은 결국 개인 시간의 투자 뿐 아니라 회사 내 근무시간의 증가까지 초래하게 되었죠.

그런데, 이전에도 느낀 것이지만 사람이라는 동물이 참 재미있는 것 같습니다.
똑같은 장소인 제 집에서, 똑같은 시간인 하루에 2시간 정도, 똑같은 일인 무언가를 개발하고 디버깅하고 공부하는 것인데, 하는 일의 목적이 단순 개인의 취미와 흥미인지, 회사 업무인지에 따라 그 영향력이 다른 것 같네요.

물론 자기계발 시간에 회사업무가 들어오면서부터 일종의 obligation이 생겼기에, 그에따라 투자 시간에대한 자율성은 줄어들고, 완수 후 성과에 대한 압박이 있기에 기본적인 스트레스 레벨이 다를 수 밖에 없긴 하지만요.

이렇게 정리를 하다보니 12월 말에 떠난 이전 매니져가 더 그리워지네요.

그 친구가 회사를 떠나기 전 2-3달동안 저에게 계속 했던 말이 있습니다.

"쉬고 싶으면 아무때나 쉬어라. 휴가 안올려도 좋다."
"일을 너무 많이하기 보다는 새로운 것에 공부를 좀 해봐라. 그게 장기적으로는 너에게도 회사에도 도움이 된다."
"하고싶은 공부나, 참가하고 싶은 컨퍼런스가 있으면 언제든지 말해라. 최종 결정이야 재무팀에서 하지만 학비 보조나, 컨퍼런스 참가비 등 문제는 내가 최대한 재무팀과 싸워서 얻어낼 것이다"

그리고 회사를 떠나기 직전에도 곧 제가 휴가를 갈 것이라는 것을 알기에 이런 말도 해줬었죠.

"칸쿤 가면 거긴 진짜 천국같을꺼야. 돌아오자마자 바로 일을하지 말고, 휴가 복귀 후 1달정도는 그냥 아무것도 하지않으려고 노력해봐. 마치 칸쿤에 있을 때 처럼 말이야. 그렇게 한다고해서 네 job security가 위협받을 일은 절대 없을꺼야."

이래저래 저와 공통분모가 많다고 느꼈던 매니져인데, 그래서인지 저의 미래를 미리 내다본 듯한 이야기들이였죠.

다음 주 부터는 이제 회사와 집 간에 아주아주 강력한 firewall을 설치 해 볼까 합니다.
사실 이전 팀에서는 개발환경 자체가 집에서 일을 할  수 없는 환경이라 하고싶어도 하지 못했는데, 지금 팀은 필요시 재택근무도 적극 장려하는 조직이고, 업무 특성상 재택근무를 해도 무방하기에 마음만 먹으면 집에서 언제든지 일을 할 수 있다보니 물리적인 firewall이 없어진 상황인데, 물리적으로는 불가능해도 제 마음의 벽을 하나 세워보고자 합니다.

보다 오랫동안 행복하게 개발자로 살아남기 위해서요.

그런데... 솔직히 완벽 차단을 할 수 있을지는 솔직히 자신 없긴 하네요. 제 버릇 남 못주니까요.

2017년 12월 29일 금요일

헤어짐에 익숙해지기

타이틀을 적어두고보니 마치 연인과의 이별을 이야기하는 것 같지만, 사실은 회사생활 이야기입니다.

회사를 다니다보면 동기나 선후배, 혹은 직속 상관이 회사를 떠나는 일들을 맞이할 수 밖에 없습니다. 너무너무나도 완벽한 직장이라 turn over rate이 아무리 낮은 회사라고 해도 결국에 은퇴를 하는 사람도 있고, 자신의 적성에 도무지 맞지않아 떠나는 사람이 있으니 결국 한 번 이상은 이러한 순간을 맞이하게 되죠.

한국에서 직장을 다녔던 8년여간 저는 가깝게 지냈던 동료들과의 이별의 순간을 그다지 많이 경험하지 않았습니다. 저와는 거리가 아주 먼 전무, 부사장, 사장 급 임원이 회사를 떠나는 순간은 거의 매 해 임원인사 시즌마다 경험했지만, 저의 직속 상관이나 저의 직속 후배들, 혹은 저와 같은 팀에서 일을하는 팀원들이 떠나는 경우는 지금까지 딱 2번이 있었던 것 같네요.

제가 신입사원 때 부터 저희 소파트를 이끌던 책임님이 과도한 업무부담으로 회사를 떠난 적이 있었고, 서비스 기획자로 변신한 직후 저희 소파트를 이끌던 과장님이 다른 회사의 독일 법인장으로 스카웃되어 떠나면서 이렇게 단 2번의 이별을 경험 했었습니다.

그런데 캐나다에 와서 일을하면서보니 이러한 이별에 좀 더 익숙해져야 한다고 느껴집니다.

지금 회사에서 일을 시작한지는 고작 3년밖에 되지 않았지만, 벌써 회사 내 경력으로는 중고참 급에 해당합니다. 그 만큼 캐나다의 직장문화는 한국에 비해 turn over rate이 훨씬 높더군요. (적어도 개발자라는 직업군에 한해서는...)

오늘도 저는 회사에서 가장 신뢰하고있는 사람 중 한명을 떠나 보냈습니다.

바로 저희 팀 매니져인데, 이 친구가 회사를 그만두게 된 계기 중 일부에 대해 저의 역할이 있었기 때문에 더 각별히 응원 해 주고 싶으면서, 동시에 더 안타깝습니다.

제가 다른 팀에 속했을 때 이 친구에대한 저의 인상은 매니져가 아닌 Senior Developer였습니다. 사실 제가 현재의 팀으로 옮기기 직전까지만 해도 이 친구가 개발자라고 생각했었죠. 이렇게 착각을 하게 된 이유는 업무상 이 친구의 소속팀과 협업을 할 일이 있었는데, 누가봐도 사통팔달 시원시원하게 기술적 해답과 의견을 제시했고, 또 이 친구의 이름으로 된 커밋을 간간히 볼 수도 있었기 때문이죠.

사실 제가 이 회사에 들어오기 전에 Developer에서 Manager로 전직을 한 것인데, 개발 일에대한 애착과 열정이 넘치다보니 Manager가 되어서도 끊임없이 따로 공부하고 연구하며 새로운 기술들을 익히고 살아온 친구입니다.

이렇게 development를 좋아하는 사람들의 특징 중 하나는 자기 자신에대한 무한한 열등의식을 가지고 있다는 것인데, 워낙 좋아하는 일이고 누구보다도 잘 하고 싶어하는 일이다보니 객관적인 시각에서 자신의 seniority를 보기 보다는 주관적인 입장에서 자기보다 항상 높은 곳만을 바라보며 자신의 부족함을 책망하는 것이지요.

제 주변에도 몇몇 이런 사람이 있는데, 정말 제 기준에서는 "천재 아니야?" 싶은 분들도 같이 이야기 해보면 단순 겸손한 것이 아니라 진짜로 자기 스스로를 slow learner라고 하거나, 창의력이 부족하다고 하거나, 기술의 스펙트럼이 너무 좁다고 하거나, 지금은 몰라도 미래에 먹고살기 힘들다며 자책을 하는 경우를 많이 봤습니다.

이 친구와 1년 가까이 같이 일을 하면서 1:1 면담이나 개인적 사담을 통해 제가 왜 캐나다에 왔고, 어떻게 왔는지에 대해서도 이야기를 한 적이 있고, 그런만큼 다른 모든 조건을 떠나서 내가 개발을 하고 있다는 사실만으로도 참 고맙고 감사하고 행복하다는 이야기를 한 적이 있는데, 저의 이런 이야기가 이 친구에게 작지않은 자극이 되었다고 합니다. 그래서 일단은 혼자만의 시간을 가지면서 최근 기술 트랜드와 여러가지 관심있는 분야에 대해 공부를 하기로 결정했다고 하더군요. 그러다 만약 business opportunity를 찾으면 직접 창업을 할 수도 있고, 결국 경제적 압박이 심해지면 지금 회사로 돌아오거나 다른 회사의 일자리를 찾을 수도 있다면서 말이죠.

지금까지 만났던 매니져 중에 가장 개발자를 잘 이해하고, 가장 잘 배려하면서, 개발 일손이 부족하면 직접 일선에 뛰어들 수 있는 최고의 매니져였는데, 너무 아쉽네요.

언젠가 또 다른 인연으로 다시 만나길 바라며 그 친구도 저도 Happy New Year가 되길 바랍니다.

2017년 12월 20일 수요일

영어의 벽과 이메일

안녕하세요.

오늘은 영어와 이메일 작성에 대한 저의 이야기를 적어볼까 합니다.



한국 회사에서라도 해외 법인이나 고객, 혹은 외국인 동료와 같이 일을 해보신 분들은 아마 잘 아실 것입니다. 한국인과 함께 일을 할 때에는 이메일이나 메신져로 업무를 하는 것 보다 직접 만나서 이야기를 하거나 전화를 하는 것이 가장 빠르고 정확하고 편리하지만, 영어로 일을해야하는 상황에서는 조금 달라집니다.

영어실력에 따라 개인차가 있을 수 있지만, 저도 그렇고 제 주변에 다른 분들도 대부분 가장 두려운 것은 전화통화이며, 그 중에서도 단연 백미는 흔히 다양한 목소리들이 겹치는 상황도 발생하는 Conference Call입니다. 그 다음 기피대상은 메신져를 통한 업무이며, 그 다음으로는 화상통화, 직접 대화, 이메일의 순서입니다. 

전 저 같은 경우 영어를 잘 하지도 못하고, 체계적으로 공부를 한 적도 없다보니 상대방과 영어로 대화를 할 때에는 적어도 20% 정도는 알아듣지 못합니다. 그러니 '말' 이라는 소리 컨텐츠만 순수하게 해석하여 대화를 한다면 최소 20% 정도의 내용은 놓치게 되고, 제가 놓친 컨텐츠가 흐름상 매우 중요한 뜻일 경우 이후 오가는 대화 내용 전체를 이해하지 못하는 상황이 오기도 합니다.

하지만 똑같은 대화라 하여도 직접 만나서 하게되는 경우, 상대의 표정이나 제스쳐, 그리고 서로 대화를 주고받는 장소에서 느끼는 직감이라고 할까요? 제 5의 감각 등에 의해 제가 놓친 소리가 있다 하여도 대략적으로 그 대화의 흐름을 놓치지 않고 잡아나갈 수 있죠. 이는 일상 대화에서는 잘 적용되지 않지만 대화의 내용과 주제가 한정적인 비지니스 대화에서는 거의 대부분 적용됩니다.

화상통화를 하는 경우에는 이 제 5의 감각이 제한받게 됩니다. 또한 '말' 이라는 컨텐츠의 전달 채널인 소리가 실제 대면을 할 때 만큼 깔끔하게 전달되지 않으며, 표정/제스쳐가 전달되는 채널인 '화면'은 제한된 프레임을 통해서만 제공되기에 실제로 만났을 때 만큼 생생하게 그 것을 캐치해 내지는 못합니다.

그리고 이것이 전화가 되면, 오직 청각세포에만 의존하여 모든 컨텐츠들을 캐치 해 내어야만 하게 되기에 여간 스트레스가 아닙니다. 실제로 저 정도의 영어실력에서는 20%를 놓치면 전체 대화에서 맥을 완전히 잘못 짚어내기도 하고, 이해를 못하기도 하다보니 전화통화를 할 경우 온 우주의 기운을 제 달팽이 관에 집중해야 하지요. 그나마 비지니스 대화의 경우 사전에 Agenda가 조율 된 상태에서 전화 연결이 되어 일부 놓치는 것이 있더라도 대화 주제와 내용이 한정되어 있기에 빨라 따라잡을 수 있어서 상대적으로 용이하지만 직장 동료가 갑자기 전화해서 무언가 이야기를 하는 경우에는 너무나 어렵습니다.

메신져의 경우에는 전화통화와 같이 실시간성이 있지만 약간의 지연이 있는 실시간 대화이기에 조금은 부담이 덜합니다. 모르는 단어가 나오면 재빨리 온라인 사전을 통해 확인을 할 수도 있고요. 하지만 역시나 빠른 응답이 필요한데다, 글을 써야 한다는 점에서 어려움이 있습니다. 조금은 어눌하거나 틀린 발음일 수 있지만 말로는 할 수 있는데, 이것을 글로 옮겨 적으려면 철자를 모르는 단어들이 상당히 많기 때문이죠.

마지막으로 이메일은 상당히 귀찮은 일이지만 가장 부담은 덜합니다. 아무래도 시간적 여유가 가장 많은 채널이다보니 천천히 글을 작성하고 두번 세번 다시 검토하고 내용을 고칠 수 있기 때문입니다.

이렇게 항상 언어의 벽을 느끼고 살다보니 영어에 대한 부담이 늘 뒤따릅니다.
지금은 제가 팀을 옮겼지만, 이전 팀에서 매니져가 저에게 항상 영어공부를 좀 하라는 말을 하며 자신이 캐나다에 처음 이민왔을 때 어떤 방식으로 영어 공부했는지를 알려주며 이것저것 추천을 하기도 했습니다. 업무 관련해서는 이전 매니져와 별다른 트러블이 없었지만, 1:1 개인 면담을 할 때 마다 항상 영어 공부를 하라는 이야기를 해서 이에대한 스트레스가 이만저만이 아니였습니다.

올해 초에  DevOps로 팀을 옮기면서도 한가지 마음에 걸리는 것이 있었는데, 그것 역시 영어였습니다. 팀 특성상 다른 개발팀들과 소통이 빈번할 수 밖에 없고, 또한 매우 중요한 부분 중 하나이기 때문이였습니다. 하지만 아이러니하게도 DevOps로 옮긴 이후에 종종 듣는 이야기는 제가 커뮤니케이션을 아주 잘한다는 말입니다. 팀을 옮기면서 따로 영어공부를 한 것도 아니고, 영어 실력이 갑자기 일취월장 한 것도 아닌데, 영어공부가 필요하다는 평가에서 커뮤니케이션을 잘한다는 평가로 바뀐 이유는 바로 소통 채녈의 변화가 큰 요인이 아닐까 생각합니다.

개발팀의 일원으로 일을 할 때에는 사실 사전 조율된 미팅이나, 이메일을 통한 공문 형태의 커뮤니케이션이 극히 드물었습니다. 주로 전화나 메신져, 혹은 그 자리에서 바로 대면 커뮤니케이션이 시작됩니다. 그렇다보니 대화의 내용이나 주제를 제가 미리 예측할 수 없고 그런만큼 듣기에 집중을 해야하며 말할 때에도 더 많은 생각을 거치게 됩니다.

하지만 DevOps에서는 공식적으로 대외 커뮤니케이션을 하는 일이 더 빈번하지만, 이메일을 통한 공지, 혹은 외부 요구사항/요청사항에 대한 대응이 그 주를 이루다보니 커뮤니케이션을 할 때에 제가 혼자만의 시간을 상대적으로 충분히 가질 수 있었고, 그런만큼 메일을 작성하거나 요청 메일에 응대를 할 때, 어떤 이야기를 할지 충분히 생각하여 작성을 하고, 작성 후에도 다시 한 번 읽어보며 수정 할 시간이 있으며, 문법의 벽에 걸려 생각이 충분히 전달되지 않는다고 느낄 시에는 스크린 캡쳐나 코드 캡쳐 혹은 flow chart 등 Visual Aids를 작성할 수도 있었습니다. 또한, 저의 필력과 영어실력, 그리고 문법이 부족하다보니 서술형으로 설명하기 보다는 최대한 bullet point로 간략화하여 설명하고, 필요시 세부적인 설명에 대해서는 주석을 통해 전달합니다.

이러한 노력들로인해 공문을 보내거나 공식적으로 온 요청에 대해 회신을 하는 메일을 작성할 때 상당한 시간 투자가 요구되기는 하지만, 성급하게 조금 잘못된 빠른 커뮤니케이션을 하는 것 보다 약간은 지연이 되더라도 오해의 여지를 남겨두지 않는 커뮤니케이션을 하는 것이 상호간 시간을 더 아낄 수 있다는 것을 이전에 경험으로 배웠거든요. 특히나 영어로 커뮤니케이션을 할 경우에 말이죠. 그래서 한글로 된 메일이나 글을 작성 할 때에는 그냥 의식의 흐름에 모든 것을 맡겨두고 줄줄줄 작성한 후에 마지막 검토라고는 수신인 리스트와 첨부파일 여부정도만 하지만, 영문 메일을 작성 할 때에는 일부러 시간을 투자하여 각종 Visual Aids도 만들고, 두세 번 다시 읽어보며 부족한 영어실력에 말도안되게 장문으로 작성된 내용은 여러 문장으로 다시 잘게 쪼개고, 그래도 스스로 자신이 없으면 bullet point로 바꾸고, 중요 내용이나 키워드에는 Bold체와 Italic체를 섞어주고 Underline이나 폰트 색을 바꿔가며 조금 틀린 문법이라도 누구나 쉽게 알아볼 수 있도록 바꾸고 또 바꿔서 보냅니다.

후회되는 과거라 할 지라도 무엇이건 결국 자신에게 도움이 된다는 제 아내의 말이 다시금 생각나는 대목인데, 한국에서 기술영업, 기획, 수출팀에서 근무 한 경험이 도움이 되더군요. 일단 기획, 기술영업을 하면서 하루에서 몇 개씩 Presentation 자료들을 만들면서 훌륭한 미적 감각을 지닌 도형을 만들어내지는 못해도 PPT나 OneNote 등을 이용해 최대한 핵심을 간추린 챠트나 도형을 만들어내는 기술을 몸으로 익혔고, 해외 사업자나 법인들과 커뮤니케이션 하면서 문장형 이메일 보다는 눈에 들어오기 쉬운 Bullet Point형 메일을 작성하는 것 또한 경험을 통해 몸에 익혔는데, 이러한 경험들이 지금 이렇게 도움이 되더군요.

또한 간혹 Thank you letter나 요청/요구를 빙자한 메일 중에는 은근히 우리 팀을 공개적으로 까면서 개선을 촉구하는 메일들이 있기도 한데, 이 경우에도 공돌이가 아닌 분야의 경험이 도움이 되었습니다.

만약 공개적으로 까는 것이라 할 지라도 정말로 우리의 잘못이라거나, 우리가 인지하고는 있지만 일단 받아들이고 넘어간 technical debt인 경우에는 지체없이 Sorry 를 날립니다. 혹자는 북미 문화에서 Sorry를 남발할 경우 자신의 가치가 깎이는 것이고 다른 이들이 자신을 우습게 여기는 길이기에 가능한 sorry라는 말을 하지 않는 것이 좋다고 하기도 합니다.
예를들어

"Sorry for the inconvenience." -> "Thank you for your patience and understanding."

이런 식으로 돌려서 말을 하는 것이 좋다는 것이지요.

하지만 제 성격의 문제인지, 그냥 습관인지는 몰라도 이런 문장 작성을 쉽게 받아들이지 못하기에 그냥 기존 습관대로 Sorry를 날립니다. 다행히도 아직까지 저를 우습게 여기는 사람은 없는 것 같기도 하고요.

하지만 이렇게 다른 메시지를 빙자하여 돌려까기를 하는 정치적인 메일을 보내는 사람들의 경우 열에 여섯 일곱은 근본적인 잘못과 오류가 자신에게 있기에 이를 덮고 우리쪽 잘못으로 물타기를 하기 위해 보내는 경우가 많이 있습니다. 이런 케이스에도 역시 한국에서 개발을 떠나 근무했던 경험들이 도움이 되었습니다.

제 경험상 이런 정도의 메일을 보내는 사람이라면 상당한 전투력을 이미 가지고 있거나 이미 코너에 몰린 상황이라 뭐든 보이면 다 물고 뜯을 자세가 되이있는 경우인지라, 만에하나 나의 잘못이 정말로 하나도 없는 상황이라고 해도 이성적/논리적/이론적/기술적으로 시시비비를 가리려들면 영어도 딸리고, 언어적 기술도 부족한 제가 공개적으로 넉다운 될 가능성이 매우 높으며, 아무리 잘 싸워봐야 양쪽 모두 거지꼴이 되는 진흙탕 싸움이 되기 십상입니다.

그래서 이런 메일에도 영혼은 없지만 일단 Sorry를 날립니다. 하지만 단순한 사과 레터가 아닌 약간의 정치적인 메시지를 섞어서 보냅니다.
정치적인 메시지란 여러가지 케이스들이 있을텐데, 예를들면 이렇습니다.
사과를 하고, 시비를 건 당사자의 실수나 오류에대해서는 직접적인 언급을 최대한 자제합니다. 대신, 그들이 범하고 있는 큰 실수나 오류, 혹은 그들 제품의 문제점을 보여 줄 수 있는 실측 데이터를 첨부하고 메일을 주의깊게 읽을 경우 그들의 잘못이라는 것을 해석 할 만한 다른 비교 데이터, 혹은 데이터에 대한 해석 등을 추가합니다.

정말 정치질을 잘하는 사람들의 경우 이런 정치적인 답장을 받으면 그냥 거기에서 싸움을 중단하고 자신의 단점을 감추기 위해 공격할 다른 쉬운 대상을 찾습니다. 정치질과는 보통 무관하더라도 제 메일의 뜻을 이해 할 만한 사람이라면 자신의 내재적 문제점에 대해 자각하고 더 이상 저희 쪽을 물어뜯지는 않죠.
제 레터를 그냥 말 그대로 사과의 뜻으로 받아들이는 경우도 있기는 한데, 이 경우에는 정말 답이 없습니다. 적당한 무시와 함께 저 역시 본격적인 반격을 할 수 밖에 없는데, 이러한 본격적인 반격은 제가 아니더라도 팀 내에 대부분의 개발자들이 아주 좋아하는 Technical debate인지라 영어가 딸리는 제가 빠져도 다른 동료들이 주저없이 콜로세움으로 뛰어들기에 제 입장에서 더 이상 부담 될 일은 없죠.

이렇다보니 저는 "매니징"을 하는게 싫고 "개발"을 하는게 좋아서 캐나다 이민까지 왔는데, 회사에서 매니져 롤에 대해 저에게 말을 꺼내게 되는 상황을 맞이하기도 했네요.
만약 제가 더 나이가 들어서 정말로 제 머리와 체력으로는 기술을 따라가기 어렵게 되었고, 이메일 뿐 아니라 말하기와 듣기도 잘하게 된 상황이라면 고려 할 수도 있는 제안이겠지만, 지금 저의 열정과 영어실력을 고려하면 전혀 고려할 대상이 아니지요.
또, 지금 이메일을 비교적 잘 쓰고는 있다지만 공식적인 이메일 커뮤니케이션을 밥먹듯 해야하는 상황이라면 지금과 같이 한타 한타 공들여서 이메일을 작성할 수도 없기에 저의 미천한 영어실력과 필력, 부족한 지식과 얕은 안목이 금방 드러날 수 밖에 없기에, 딱 지금 수준이 적당한 것 같습니다.

2017년 11월 18일 토요일

가뿐한 주말과 언짢은 시간낭비

오래간만에 상쾌하고 가뿐한 주말이 찾아왔습니다.

주말이야 매 7일마다 찾아오는 것인데 '상쾌하며 가뿐한' 주말은 정말 오래간만인 것 같습니다. 요즘에는 계속 주말에 제가 해야만 하는 일들 혹은 주말에 제가 계속 공부나 연구 혹은 고민을 해봐야만 하는 일들을 안고 주말을 맞이했었는데, 이번 주에는 머릿 속을 하얗게 비워두고 쉬어도 될 만큼 뒷일을 남겨두지 않아도 되는 주말입니다.

그런데... 제 업무 자체와는 상관이 없지만, 이번 주의 목요일 금요일의 시간 낭비 자체와 시간 낭비를 하게 된 회사 정책때문에 조금 언짢은 기분이 있었습니다.

지난 달 말에 저희 팀원 중 한 명이 회사를 떠났습니다. 자발적인 퇴사가 아닌 해고였죠.

회사의 기본 견습 (probation) 기간은 3개월입니다. 법적으로 probation기간동안은 회사에서는 아무런 제약없이 직원을 해고 할 수 있기에 채용 프로세스를 통과 했어도 이 probation을 통과 해야 사실상 진정한 정직원이 되었다고 할 수 있죠. 저도 이 친구의 probation 평가 리포트를 작성하기도 했지만, 첫 3달이 지났을 때 정말 애매한 상황이였습니다.
입사할 때 조건이 시니어급이였는지 아닌지는 알 수 없었으나 그의 그간 경험이나 나이로 미루어 봤을때, 그리고 일반적인 주제에 대해 말하는 것으로 봐서는 시니어로 봐도 될 것 같은데, 조금은 새로운 분야에 대해 논할때에는 시니어의 고집과 함께 쥬니어급의 이해도를 보였습니다. 그리고 가장 문제가 된 것은 실제 퍼포먼스가 쥬니어 급이였습니다. 새로운 분야에 이해도가 쥬니어급이라고 했는데, 새로운 일은 거의 하지 못했죠. 기존 그가 익숙한 분야의 업무는 말로는 청산유수이고 모든 일이 조만간 끝날 것인 것 처럼 말을 했지만 매일매일 팀 sync up 미팅을 할 때마다 같은 업무내용에 대해 "곧 끝난다" 라는 말만 며칠간 반복이 되어 생각보다 일의 진척이 늦었었죠.
그렇다보니 처음 3개월 이후에도 Extended Probation이라 하여 추가 3달의 견습 기간을 거치게 되었는데 결국 그 기간동안 이렇다 할 진척을 보이지 못했고, 우리가 바라던 만큼의 수준을 보여주지 못해 어느날 갑자기 해고되었습니다.

원래 매니져 포함 6명인 작은 조직에서 1명이 줄어드니 이래저래 일이 몰리고 밀릴 수 밖에 없었고, 그렇다보니 제가 원래 잘 하지 않던 Ops쪽 일도 해야하여 주말에는 Ops 관련 툴들을 공부하거나 밀린 개발관련 일들을 해치우거나, 혹은 업무시간 중 바빠 미처 확인하지 못한 새로운 pilot 서비스들을 돌려보느라 이래저래 바빴습니다. 사실 그 친구가 함께했던 기간 중에도 항상 우리가 기대했던 만큼의, 또 그가 말한 만큼의 성과가 안나와 매 스프린트마다 마지막 주차가 되면 뒤쳐진 일들을 쳐내느라 바빴는데, 든자리는 몰라도 난자리는 티가 난다고, 그가 빠지니 그 정도가 더 심했었죠.

회사에서 주말근무를 요구하거나 반드시 각 스프린트마다 주어진 일을 마쳐야 한다고 강제하는 것은 아닌데, 이건 약간의 사람의 성격 문제인 것 같아요. Sprint planning에서 약속한 업무들을 모든 sprint마다 다 해치우자는 것 까지는 아니지만, 연속으로 3-4 스프린트에서 목표 달성을 못하는 상황을 제가 차마 지켜보지 못하여 저 혼자라도 더 달려서 어떻게든 목표 달성을 위해 달렸던 것 같아요. 

그래서 이전까지는 피동적으로 DevOps 포지션의 지원자를 구하다가 지난달 말 부터는 외부 헤드헌터들에게도 요청을 하는 등 조금은 더 공격적으로 사람을 구하기 시작했습니다.

그리고 이번주 금요일, 드디어 한 명과 인터뷰가 잡혔습니다.

월요일 밤에 매니져를 통해 지원자의 이력서를 받았는데, 모국인 우크라이나에서 석사를 마쳤고 전체 경력은 10년이 조금 넘었습니다. 특히나 좀처럼 구하기 힘든 DevOps 포지션의 경력이 최근 3년간 있었죠. 그래서 지금 그가 일하는 회사의 CD 수준을 파악하고자 이력서에 기재된 회사명을 검색 해 보았는데, 좀처럼 이렇다 할 정보를 얻을 수 없었습니다. 회사 공식 웹사이트는 찾을 수 없었고 페북 그룹이나 링크드인에 그 회사에서 일하는 직원들이 보이는 정도였죠.

그래도 지난 경력을 보니 우크라이나 석사 졸업 후 4-5년 정도 캘리포니아에서 웹 개발자로 일을 했고, 이후 모국으로 돌아가 다시 2-3년 정도 자바 개발자로 일을 했으며, 최근 3년간은 토론토에서 DevOps 및 자바 개발자로 일을 한 경력이 있는 점이 마음에 들었습니다. 저희 팀에 저만 자바 개발자이다보니 저희가 쓰는 오픈소스 툴에 contribution 할 일이 있을경우 그 일들이 저에게만 몰리는 상황이라 다른 자바 개발자가 있었으면 싶었거든요.

그래서 목요일 밤, 인터뷰를 준비하기 위해 코딩을 시작했습니다.
손코딩을 통한 간단한 알고리즘이나 369 게임, 혹은 fizz-buzz 같은 것을 구현하는 테스트를 하기 보다는 실제 코딩을 통해 그의 코딩 습관이나 실력을 조금이라도 엿보고 싶었기 때문입니다. 물론 인터뷰를 보기 전에 온라인 코딩시험을 치루기는 하는데, 무슨 이유인지는 몰라도 저희 회사 HR은 인터뷰가 끝난 이후에야 온라인 시험 점수를 알려줬거든요. 더구나 저는 살짝 목표 지향적인지라 업무와 무관한 지식들을 시험하기 보다는 실무에서 실제로 하는 일이나 할 법한 일과 유사한 일에 대해 실무적인 능력을 보고 싶었습니다.

제가 준비했던 문제는 지금도 저희 CD 파이프라인에서 사용중인 저희 자체 VM 클라우드 관련된 것이였습니다. VM 클라우드에서 동시 처리능력과 파이프라인 처리 병목 정도를 파악하기 위한 간단한 모니터링 툴을 만드는 상황을 가정하였고, 각 데몬에서 리포팅한 로그들을 가져와 실제 운영상황에 대한 데이터를 필터링하는 것을 문제로 만들었습니다.

실제 문제는 매우 단순화 하여 각 VM 별로 VM 생성시간과 종료 시간의 array를 입력값으로 주었을 때, 특정 moment에 운영중인 VM의 최대 갯수가 몇 개인지를 구하는 method를 구하는 문제가 한 문제였고, 두번재 문제는 각 VM Host의 매니져 서비스에서 로그를 가져와 각 VM별로 생성 요청을 받은 시간과 생성이 종료된 시간 로그를 array 형태로 뽑아낸 뒤, 2분간 처리하는 최대 VM 생성 개수가 몇 개인지를 구하는 method를 만들라는 문제였습니다. 실제로 VM이 생성된 이후 빌드를 돌리거나 테스트를 돌리는데에도 리소스가 많이 사용되지만, 내부 클라우드에서 가장 병목이 되는 것은 Disk IO였는데, VM이 생성 될 때 마다 20GB가 넘는 VM Image 파일이 복사가 되기에 성능에 가장 크리티컬 했던 것이 Disk IO 문제였던지라 실제로 툴과 스크립트를 만들어 의사결정에 활용될 만한 metric들을 뽑아낸 적이 있었던 것입니다.

문제를 내는데 코딩을 한 이유는 간단합니다. 주어진 몇 시간의 기술 인터뷰 중에 가능한 짧은 시간동안 코딩 테스트를 하기 위해서였죠.
그래서 먼저 제가 뽑아온 데이터 중에 가장 데이터가 복잡하여 연산 중 작은 오류가 있으면 오답이 나올만한 부분을 골라내고 나머지 데이터는 삭제를 했습니다. 그리고 일일히 손으로 계산을 해 보았고, 제가 계산한 값과, 테스트 데이터를 기반으로 Unit Test 코드를 작성했습니다.
그리고 각 문제별로 시간이 얼마나 주어져야 할 지를 판단하기 위해 직접 method 구현을 했고, 문제의 배경이나 요구사항, 테스트 데이터가 어떻게 주어지고 원하는 값이 어떠한 것일지를 이해 할 만한 설명 문서도 작성을 했습니다. 물론 구두로도 그 자리에서 설명을 할 예정이였지만, 문제를 풀어나가며 생기는 질문들로 인한 지연을 최소화 하고 싶어 그렇게 준비 했죠. 그리고 코딩 테스트용 문제를 다 만든 이후에는 로그에서 timestamp를 datetime으로 변환하는 것과, 로그에서 regex로 읽어올 데이터만 뽑아내는 것 관련 행여나 시간 낭비를 할까봐 답안을 작성 할 class 내에 관련 기능은 미리 method를 작성해 만들어 주었습니다. 그리고 정말 오래간만에 나서는 인터뷰인지라 인터뷰에서 질문 할 내용들도 추렸습니다.

그렇게 자정이 넘어 시작한 인터뷰 준비는 좋은 동료와 함께 일을 할 수도 있다는 기대감과 함께 새벽 2시가 넘어서야 끝이 났습니다.

그리고 금요일. 먼저 매니져가 인터뷰를 시작 했습니다. 매니져 인터뷰가 끝나고 제가 면접장으로 가는데, 매니져가 저를 붙잡고 짧게 말하더군요.

"아마 한 두개 정도의 질문만 하면 그가 어떤지 바로 알 수 있을꺼야"

의미심장한 말이였습니다. 몇 마디의 말로도 고수의 향기를 느낄 수 있는 그런 사람이거나, 정말 아니거나...

그런데 정말 불행하게도 그는 전자가 아닌 후자였습니다. 일단 영어가 정말 안되었습니다. 캐나다에서 일을 하면서 거의 처음으로 저보다 영어를 더 못하는 사람을 일터에서 만났습니다.

그래도 처음 두개 정도의 질문을 하면서는 그래도 10년가량의 경력도 있는데, 언어적 문제로 인해 답변을 잘 못하는 것이 아닐까라는 생각을 했습니다.
하지만 조금씩 더 깊게 들어갈수록 정말 아니라는 생각이 확고해졌습니다. 결국 제가 준비한 코딩 문제는 차마 꺼내지도 못했고, 일반적으로 어느 회사를 가건 질문하는 기본적인 Java 관련 질문들만 하고 끝이 났습니다.

아... 아까운 내 시간... 잠도 줄여가며 인터뷰 준비를 했건만, 지금까지 봐온 인터뷰 중 가장 준비가 안된 인터뷰였던 것 같습니다.

인터뷰가 끝난 후 그의 온라인 코딩 테스트 성적이 너무나도 궁금했습니다. 그래서 매니져에게 달려가 물었습니다. 

"아까 나에게 한 말이 무슨 뜻인지 이제 알겠다. 그런데, 혹시 HR에서 codility test 점수 알려줬어?"

"응. 받았어."

"몇 점이야?"

"0점"

"응? 뭐라고?"

"0점"

미리 점수를 안알려주는 것이야 선입견 방지를 위해 그럴 수도 있다지만, 0점 임에도 인터뷰를 arrange하는 HR은 도대체 뭐지요?

덕분에 저와 매니져가 업무시간 중 본 손실은 총 3시간 가량입니다. 저도 인터뷰 준비를 위해 문제를 만드느라 두세 시간 정도 개인 시간을 쓰기도 했지만, 매니져 역시 그와 관련된 정보를 찾아보기 위해 어젯 밤에 몇시간 동안 인터넷을 헤맸다고 하는군요.

사실 이런 문제가 어제오늘 일은 아닙니다. 수 년 전에도 다른 팀 시니어와 매니져가 HR 리크루터에게 이와 관련된 항의를 하는 모습을 본 적이 있었습니다. 사실 그 이후에 개선이 되었을 것이라고 생각했는데, 아직도 유효하더군요. 온라인 테스트 점수를 통해 미리 사람을 걸러내면 좋은 사람을 놓칠 수도 있다나요?

물론 그럴 수도 있습니다. 저도 이 회사에 오면서 봤던 온라인 시험을 볼 때 웹 환경인 IDE 툴에서 개발하는 것이 익숙하지 않다보니 처음 10분 정도는 '이게 뭐지?' 하다가 흘러갔던 기억이 납니다. 그리고 주어진 시간에 문제를 풀다보면 실수를 할 수도 있고, 그래서 평소 실력대비 점수상으로는 20-30점 정도가 낮게 나올 수도 있습니다.

그런데 0점이라도 면접을 봐야 한다니요. 0점이라면 말 그대로 주어진 문제에서 부분점수조차 획득하지 못한 것인데, 어떤 실력인지 확실히 검증이 되지 않은 사람이 아니라 확실히 수준 미달의 실력이라는 것이 검증된 사람과 면접을 본다는 것이 정말 납득이 되지 않았습니다.

DevOps로 옮긴 이후로는 처음 interviewer로 나섰던 자리인데다, 기존 팀과는 다르게 팀 차원에서 공동으로 준비한 인터뷰 문제들도 없는 상황에서 나간 인터뷰라 좀 더 많은 시간을 투자했는데, 정말 죽쒀서 개줬다는 말 처럼 너무나 허무하고 언짢은 기분이 들더군요.

지원자 일정에 따라 다음주 중으로도 인터뷰가 하나 더 잡힐 수도 있다고 하는데, 다음 번에는 제발 이런 케이스가 아니길 바래봅니다.

2017년 11월 11일 토요일

어떤 사람을 만나느냐의 중요성

근묵자흑, 유유상종 등 인간관계의 중요성을 말하는 사자성어들이 많고, 그 중 인생에 있어서 가장 중요한 것은 무엇보다도 평생을 함께 할 사람인 배우자를 잘 만나는 것일텐데, 이민에 있어서도 좋은 사람들을 얼마나 만나게 되느냐가 아주 중요한 것 같습니다.

이민을 하기 전에 많이 보게 된 이야기는 "한국 사람을 가장 조심하라" 였습니다. 먼저 이민 간 사람이 새로온 이민자를 등쳐먹는다거나, 새로 온 이민자들이 그들을 도와주려던 이민 선배들을 벗겨먹는 이야기 등등 참 많이도 봤습니다.

그런데 처음 캐나다에 랜딩을 한 순간부터 제가 만났던 한국분들은 다 좋은 사람들이였습니다. 

캐나다에 랜딩을 한 순간 이민관 이후 가장 먼저 만난 분은 제 임시 숙소였던 민박집 주인 내외분인데, 이런저런 도움을 많이 받았습니다. 
민박집에 머무는 동안 현지 사정에 어두운 저같은 새내기들을 위해 본인들이 알고있는 다양한 정보들과 노하우들을 알려주시기도 했고, 엔지니어로 일하시는 아저씨를 통해 이쪽의 직업시장이나, 구직 팁 등을 안내받기도 했고 저와 비슷한 분야에 종사하고 비슷한 또래의 다른 사람들을 소개시켜주셔서 또 다른 좋은 사람들을 많이 만날 수 있게 도와주기도 하셨죠.
또, 가족들과 함께 살 만한 아파트를 구해 민박집을 떠날 때에도 새로 구한 아파트까지 차로 왕복 해 주시며 제 짐을 다 옮겨주셨고, 쌀은 무거워 대중교통으로 오가며 구매하기 힘들다며 한인마트까지 태워주셔서 쌀 구입도 도와주시고, 또 당분간 홀애비 생활이 걱정되셨는지 큰 통에 반찬도 직접 만드셔서 따로 챙겨주셨었고요.

그 이후에도 좋은 분들과의 만남은 지속됩니다. 가족들이 캐나다로 오고 아이들이 학교를 다니기 시작하며 무엇보다도 아이들의 학교생활 적응이 가장 큰 문제가 되던 시절, 같은 학교에 아이들이 다니는 많은 학부형들을 통해 이런저런 조언과 도움들을 받았습니다. 저희는 차없는 생활을 계속 했었는데 우리와 같은 아파트에 사는 다른 학부형 집에서 장을 보러 갈 때, 제 아내가 항상 같이 다니며 차가 없이도 한국마트에서 장을 보는데 도움을 많이 받기도 했습니다.
또 나중에보니 저희 아파트 바로 맞은편 집은 한인 노부부가 사시는 집이였는데, 그 분들을 통해서도 이런저런 많은 도움을 받았습니다. 특히나 저희 부모님이 캐나다에 잠시 머무시는 동안 그 분들이 좋은 벗이 되어주시기도 했고, 저희같은 젊은세대는 알 수 없었던 제 아버지께서 궁굼해 하시던 여러가지 정보들을 잘 알려주시기도 했고요.

뿐만아니라 짧았지만 학교를 다니던 기간 중 만난 같은과의 많은 동생들과 형님들과는 자주 만나지는 못하지만 지금도 좋은 벗이 되어 멀리서라도 서로 응원해주고 격려하며 잘 살고 있고, 토론토를 벗어나 이사를 온 이후에도 아이들을 통해 이런저런 경로로 알게된 다른 한국인 이민자 가정들과 여러가지 도움을 서로 주고받으며 잘 지내고 있지요.

만약 저와 제 아내의 인복이 좋지 못하여 여러 글에서 보았던 악덕 민박집 사장님들을 만났고, 이번에 경찰에 잡힌 김OO씨 같은 사람을 통해 가족과 살 콘도를 계약하게되어 사기를 당하고, 서로 힐난하고 질투하고 헐뜯는 한인 이웃들을 만났었다면, 또 바로 이웃집에도 친절한 한인 노부부를 만나는 것이 아니라 여러 글에서 보았던 노랜내가 진동하는 이민자 노부부를 만났다면, 친절하고 서로 배려할 줄 아는 이웃들이 아니라 서로 힐난하고 비난하고 헐뜻는 이웃들을 만났다면 지금과 같은 삶의 만족을 느끼지 못하지 않았을까 생각을 합니다.

솔직히 저는 아직도 이민 카페들에 수두룩하게 널린 악랄한 한국인 이민자들의 스토리들이 정말 이 정도일까 싶기도 합니다. 짧은 기간이지만 지난 4년간 그런 분들을 만나본 적이 없으니까요. 각자의 성격이나 성향에 따라 혹은 각자의 삶의 무게에 따라 사람을 대하는 태도나 매너 혹은 말투등이 다양했고, 간혹 서로 맞지않는 성향인 경우 조금 불편하게 느끼거나 살짝 미간을 찌푸리게 만드는 일이 있었을지는 몰라도 그건 그냥 서로간 궁합이 잘 안맞는 정도이지 여러 스토리에서 보여지는 범죄자에 가까운 그런 행위들은 아니였으니까요.

그리고 어떤 사람을 만나느냐가 얼마나 중요한지는 또 다른 이민자들을 만날 때 더 영향이 큰 것 같습니다. 각 인종에 대한, 혹은 출신 국가에 따른 사람의 성격이나 성향 심지어는 능력에 대한 다양한 선입견들이 있습니다. 예를들면 저는 이민 전에 인도 개발자들에 대한 선입견이 있었습니다. 제 머릿 속에 그들에 대한 이미지는 다음과 같았습니다.
잘못된 선입견의 예...
개발실에서 일을 하다보면, 인도 연구소에서 간혹가다 특정 프로젝트로 인해 서너달 가량 파견을 나오거나 장기 출장을 나오는 경우들이 있었습니다. 그들에게 받았던 제일 큰 인상은 상당히 스마트하고 쉬지도 않고 일을 한다는 것이였습니다. 출장자인지라 인도 연구소의 근무일에 맞춰야 해서인지 몰라도 한국 휴일이 되어도 출근해서 일을 했고, 제가 토요일에 나와도 일요일에 나와도 그들은 항상 자리에 있었습니다. 또 쉬지도 않고 일을 하기도 했지만, 상당히 그 퀄리티가 높았습니다.

이것은 제가 캐나다에 오기 전에 가지고 있었던 인도인 개발자들에 대한 선입견이였는데, 지금은 이것이 상당히 왜곡된 것이라는 생각입니다.

그 때는 몰랐지만 삼성에서 만났던 출장자들은 상황상 상당히 스마트할 수 밖에 없는 상황이였습니다. 인도 내에서 삼성 연구소는 상당히 괜찮은 직장이며 그 곳에 들어오기 위해 경쟁이 치열한 곳 중에 하나입니다. 뭐 좋은 직장으로 사람이 몰리는 이유가 회사 자체가 좋아서도 있지만, 이 곳의 경력을 발판으로 실리콘벨리 등으로 진출하기에 좋기에 그렇기도 합니다. 그러니 당연히 양질의 개발자들이 모여있는 곳이고, 그러한 양질의 개발자들이 모인 조직 내에서도 나름 일을 잘하는 개발자들이 추려져 본사 프로젝트로 파견을 나오는 것이니 일을 잘하고 또 열심히 하는 것이 어쩌면 당연한 상황이였죠. 또 저는 본사 소속이고 그들은 인도 연구소에서 파견나온 상황인데다, 그들에게는 그들 뿐 아니라 그들의 팀의 일년 농사가 저희팀과 함께하고 있는 프로젝트 결과에 따라 달라질 수 있는 상황이다보니 험블할 수 밖에 없기도 했고요.

캐나다에 온 이후 이러한 잘못된 선입견들은 하나씩 깨어지기 시작했습니다.
먼저 1%의 의구심을 가지고 있었던 것. 외국에 나온 인도 사람이면 다들 상류층이나 엘리트라는 생각은 정말 잘못된 생각이였습니다. 짧게나마 학교를 다니며 많은 인도인 친구들을 봤는데, 솔직히 말해서 평균적으로 그들의 생활은 일반적인 한국인 유학생들보다 더 어려웠습니다. 또 그들 중 저와 가장 가깝게 지낸 그룹에 있는 친구들의 경우에는 인도에서도 학자금 융자를 통해 대학을 졸업했고, 지금 여기에 올 때에도 온 친지들이 십시일반 돈을 모아 비자를 받아 온 것이고, 캐나다에서 생활비와 학비도 주 20시간 알바만으로는 당연히 충당할 수 없는 상황이다보니 밤샘 캐쉬쟙 알바를 뛰면서 졸업만을 바라보며 달리는 친구들도 몇몇 있었습니다. 그래도 학교 졸업에는 크게 문제가 없던 것 중 하나가, 인도인 친구들은 정말 어마어마한 규모의 과목별 족보를 가지고 있더군요. 일부 과목들의 경우 시험 시작 30분 만에 인도인 친구들은 모두 시험을 마치고 나가기도 했었습니다.

또 인도 사람은 수학적으로 매우 뛰어나고 인도인 개발자는 매우 능력이 좋다는 것도 직장생활을 시작한 이후 많이 깨졌습니다.
실제 인구 비중에 비해 개발자 중 인도인의 비중이 더 높다고 느껴지는 것은 사실입니다. 그런데 이것은 이공계가 상대적으로 강한 국가들인 한국, 중국, 이란, 구 소련연방 국가들 (러시아, 우크라이나, 발틱3국 등) 출신 이민자들도 똑같습니다. 개발자 중 한국인 비율도 일반적인 인구비중 대비 높고, 구 소련 국가들 출신 개발자 비중도 일반적인 인구비중 대비 높습니다.
직장생활을 하면서 많은 인도인 개발자들을 보게 되었는데, 여러 부류의 더 많은 사람들을 만나게 되다보니 기존의 제 선입견이 말 그대로 선입견임을 깨닿게 되었습니다. 그들 중 정말 똑똑한 사람도 간간히 있기도 하지만, 이 사람이 평생 이 일을 할 수 있을까 싶을정도로 어리바리한 사람도 있습니다. 그들은 숫자나 논리에 대한 센스는 확실이 서구유럽 출신 이민자나 북미에서 나고 자라고 교육받은 사람들에 비해 강하기는 했지만, 그렇다고 특별히 저와 같은 일반적인 한국사람들이나, 구 소련연방이나 중국인들에 비해서 특별하게 우수하지는 않았습니다.
또 workaholic이라는 선입견 역시 다양한 사람들을 보면서 역시 무너졌습니다. 그냥 제가 한국 직장에서 보았던 것 처럼 일을 정말 열심히 하는 사람도 있고 아닌 사람도 있고, 적당히 하는 사람도 있고, 핵심적인 부분에서는 절대적 책임감을 보이지만 그렇지 않은 분야는 나몰라라 하는 사람도 있고... 정말 다양했습니다.

그런데, 만약 제가 처음 만난 인도인 개발자나 인도 유학생들이 제 선입견들과 정확히 맞았다면, "응 걔네들은 원래 그래." 라는 생각이 오히려 더 강해져 그 이후 다른 모습의 사람들을 보게 되더라도 눈에 들어오지 않았을 수도 있다고 생각합니다.

즉, 너무나도 당연한 진리일텐데, 그들도 우리와 다르지 않고 그들도 사람이기에 각 개인마다 다른 특성이 있는 집단이라는 것을 나중에서야 깨닿게 된 것이죠.

그러고보면 유치원 때 부터 한강의 기적 등을 이야기하면서 주구장창 들어온 이야기가 "한국인은 근면 성실하고...." 라는 말인데, 이 말도 역시 잘못된 것 같습니다. 한국인의 DNA에 근면과 성실이 무조건 박혀서 태어나는 것도 아니고 마치 선민의식같이 한국인은 타고난 근면 성실맨이라는 이야기도 잘못된 이야기 인 것 같아요. 한국인 중에 정말 근면하고 성실한 사람도 있겠지만, 조금은 게으르고 나태한 사람도 있을 수 있는 것이니까요. 제 생각에는 한국인 스스로를 표현하는 이런 말이 족쇄가 되어서 사회적으로 모든 사회 구성원에게 근면 성실해야 한다는 강요아닌 강요를 하는 것이 아닌가 싶은 생각도 듭니다.
인종차별이 상대적으로 심한 한국에서 수십년간 자라고 교육받고 생활을 해 온지라 여러 인종과 민족, 국민들에 대해 많은 선입견들이 제 머릿 속에는 아직도 남아있고 알게모르게 영향을 주기도 하겠지만, 지금은 가능한 누군가를 처음 만나게 되면 그러한 배경은 최대한 걸러내고 대하려고 노력 중입니다.