2022년 8월 26일 금요일

새로운 팀으로 이동

시간은 빨리도 흘러, 벌써 입사한지 3년 반이 되었다. 그동안 줄곧 한팀에서 일해왔다. Amazon Device org 내의 팀이다. 우리팀에 있던 기존 팀원들도 하나둘 다른 회사로 가거나 다른 팀으로 이동하더니, 내가 거의 최고참이 되었다.  아마존에서는 1-2년 사이에 많이들 이동한다. 나를 포함한 세명이 최고참 급이었는데, 우리는 거의 같은 시기에 팀에 조인하였다. 그게 2019년 초였다.

내가 많이 따르던 우리팀 메니저 또한 올초 다른 팀으로 이동.  그러던 중, 그 매니저와 얘기할 기회가 생겼는데, SDE 를 채용한다는 얘기를 들었다.  몇 번 얘기하다가 그 팀도 괜찮을거 같고, 나도 마침 옮기고 싶은 생각이 들어서 이동하기로 결정하였다.  결정하고 offer letter에 사인한 것이 7월.

다른 팀으로 이동하기로 하고서 한국으로 휴가를 갔다온 후, 새 팀에 합류하였다.  이번주가 첫번째 주.

새로운 팀은 나를 포함하여 8명의 팀 멤버와 1명의 매니저로 구성. 이 매니저가 나와 일하던 매니저다.

8명 중 1명이 가장 오래있었던 SDE인데, 이 org에서 인턴을 하고 이 팀에서 일한지는 1년이 조금 넘은 친구다.  그래서 이 사람이 가장 시스템 관련해서 많이 아는 거 같다.  매니저는 이 사람을 내 onboarding buddy로 assign해 주었다. 근데 사실 그사람이 많이 바쁜거 같아 뭘 물어보기도 참 어려운 지경.

두번째로 오래있었던 사람이 8개월 된 사람.  8개월정도 된사람이 두 사람있다. 그리고 나머지는 나처럼 최근에 들어온 사람인듯.  모두들 좀 아직 어색한거 같은게.. 전에 있던 팀에서는 팀 미팅 할때 미리 조인하면 안부도 묻고 농담도 하고 그랬는데, 여기는 다들 mute한채로 너무 너무 조용하다. 할말만 하고.   팀 미팅도 별로 없다.  그나마 매일 하던 standup 회의 조차 일주일에 두번으로 줄이고, 나머지 삼일은 slack에 텍스트로 update 하기로 했다고.

먼저 있던 팀에서 옮길 맘이 들었을때는, 너무 미팅이 많아서 일할시간이 없을정도 였는데, 여기는 또 너무 미팅이 없어서 좀 이상하다.  팀마다 굉장히 다르다.

2021년 12월 4일 토요일

SSA 오피스 예약

그린카드 받은 후, 아이들 SSN을 발급해야 했으므로..

SSA 오피스에 전화를 걸어 예약을 잡았음.


다른 글들을 보니, 펜데믹때메 예약없이 가서 기다리는 것은 옵션이 아니었고,

전화로 예약을 잡아야 한다고 해서... 전화를 걸었다.  집에서 가까운 곳에 전화를 걸고.

스피커 폰으로 해놓고, 일을 하던 중.. 회사 사람과 뭔가 콜을 하게 되어 얘기 중.


갑자기 생각지도 않게 누군가 SSA 에서 전화를 받았다.  전화걸고 30분에서 1시간 정도 된 시점인가??

너무 놀라서, 회사사람과 콜을 갑자기 끊고 (미안하게도...)..

이름과 사유 (apply new ssn number for my sons because we received green card... 어쩌구 저쩌구) 를 확인하더니, 자동응답기로 돌려줄테니, 똑똑히 정확하게 니 이름하고 전화번호랑 새번호 발급을 위해 약속을 잡는 다는 얘기를 해라. 하면서 answering machine으로 내 전화를 돌려줌.


명확하게 (Clearly) 얘기해야 한다는데 꽂혀서, 너무 정확하고 천천히 얘기하다보니, 이름이랑 사유 말하다가 ..  녹음이 끝났다는 소리가 흘러나왔다.

전화번호 얘기를 못했는데... 니 녹음 확인? 또는  다시 녹음? (re-record) 옵션을 알려주길래 다시 녹음 옵션 선택.


이번에는 이름하고 전화번호를 빨리 말하고, 사유를 말했는데.. 웬걸.. 아무런 소리가 나오지 않고 정적.  파운드 키를 누르기도 하고, 번호를 눌러보았으나 아무 소리가 흘러나오지 않았다.

녹음이 된건지 아닌지 알수가 없었으니, 전화를 끊을 수 밖에 없었다.

녹음이 된 경우에는 24시간 안에 전화를 준다고 했으나, 그 당시에는 알수가 없었다.

결국,, 다시 전화를 시도했으나, 1시간이 지나도 전화가 연결되지 않아 포기하고, 24시간을 기다려보기로 했다.  다음날 다행이도 전화가 와서, 다음주에 약속을 잡아주었다. 

약속잡기 힘들다더니...  이렇게 힘들줄이야.


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

<방문 후기>

전화연결은 12월 2일인가? 되었는데, 방문일은 12월 7일로 잡혀있어서 무사히 다녀옴.

2019년 처음 미국 왔을때 방문했을때는 오피스가 꽉차게 사람들로 가득했는데, 이번에 가니 너무 횡한 오피스.  경찰관 하나, 윈도우는 하나 열려있고, 처리하는 사람 하나.  

문은 잠겨있고, 경찰관이 appointment 일일이 확인하면서 ID까지 확인하고서야 들여보내줌.

앉아있는 내내 많은 사람들이 오피스 문을 두드렸는데, 그럴적마다 경찰관은 약속 잡았냐?  아니라고하면 전화해서 약속 잡고 와라. 그러면서 매몰차게 문을 닫는다.  생각보다 많은 사람들이 약속을 잡지 않고 무작정 방문했다. 매번 전화하라고 알려주고 그냥 돌려보냄. 

어떤 블로그 보니까 약속시간과는 상관없이 일찍가면  일찍처리된다 했는데, 내가 갔던 오피스는 그렇지 않았다. 나의 약속시간은 11시 반인데, 11시 15분쯤 도착했더니 들여보내 주었다.  어떤 사람은 1시간 정도 일찍 왔는데, 그런 사람들은 다시 시간 맞춰 오라고 돌려보냈다.   오피스 내에 머무는 사람 수를 최소로 하려는 것 같다.




영주권 후기

E3 비자 홀더로 미국에 살던 중, 영주권을 신청했다. 

잠시 E3 비자가 뭔지 설명하면..

호주시민권을 가진 상태에서 미국에 와서 일을 하려고 하니, 워크퍼밋이 있는 비자가 필요했는데, 많은 한국 분들이 신청하는 H1-B 비자와는 달리, 호주 사람들은 E3 비자를 받아서 오게 된다.  배우자까지 워크퍼밋이 나오는 비자이고, 신청에서 받는데까지 3주 정도 밖에 소요되지 않았다.  그 3주가 걸린것도 호주 멜번에 위치한 미국영사관(대사관?)에 인터뷰를 잡는데 3주 후 인터뷰가 잡혀서 그 시간이 걸린것이다.

E3비자는 신청만 하면, 큰 결격사유가 없는 이상 쉽게 발급된다.

장점은 배우자도 워크퍼밋이 나오고 (이건 미국 입국 후 신청해야 함), renewal 횟수가 무한대다. 원하는 기간만큼 계속 renewal하면서 체류할 수가 있다. 발급도 쉽고 비용도 싸다.

단점은 2년마다 갱신해야 한다는..


처음에 미국에 올때 2년이 꽤 길다고 생각해서 영주권을 신청할 생각은 별로 없었으나... 여러 사람들과 얘기를 해보니 영주권을 신청하는편이 사는데 편하다는 결론에 도달.  E3비자는 non-immigration 비자라, 영주권을 신청해도 되나? 하는 생각을 했는데, 호주에서 온, 다른팀에서 일하는 분이 실제로 자기가 영주권 신청한 경험을 얘기하는걸 들으니 별 문제 없이 신청이 가능하다고 했다.

그래서 회사에 신청을 했고, 변호사사무실을 assign 받고 신청하게 되었다.

대략적인 타임라인은 다음과 같다.


09/06/2019 – (회사에 신청) Ticket submitted with Questionnarie

12/10/2019 – latest I-94, ..

12/17/2019 – Priority date

04/27/2020 – PERM approved

10/16/2020 – AOS filing preparation

10/20/2020 – AOS filed. : I-140(Immigration petition), I-485(Adjustment of Status), I-765(EAD) and I-131 (Advance parole) filed.

01/xx/2021 – finger print

07/30/2021 – RFE request for I-485 (신체검사결과 제출하라는 요청)

08/09/2021 – Medical exam: I-693

09/30/2021 – response of RFE  (신체검사결과랑 다른 요청사항 제출)

10/06/2021 – Received the response in USCIS (I-485)

10/25/2021 – Approved (I-485)


펜데믹 때문인지 인터뷰 요청 없었음. 호주의 PR비자는 그냥 Letter랑 Visa인데, 여기는 "그린카드"라는 이름이 말해주듯 카드가 도착했다.


남은 일은, 아이들의 SSN 발급.  남편과 나는 직장때메 이미 SSN을 받았으나, 아이들것은 받지 않았었음.  콤보카드가 왔을때 신청가능했으나, SSA 오피스 예약을 어케 잡을지 몰라 .. 바쁘기도 하고 차일피일 미루고 있는 상황.


그치만 그린카드 나오고, 올해 tax return에서 조금이라도 더 공제를 받아야 하는 관계로 SSA 오피스가 예약을 잡았다.  이것도 며칠 걸렸는데 이건 다음 글에서..


2020년 4월 11일 토요일

아마존 근무 1년

1년 전쯤 아마존 인터뷰 후기를 남겼었는데, 근무를 좀 하게 되면 글을 남겨봐야 겠다고 생각만 하다가, 오늘 근무 1주년 후기를 써볼까 한다.

근무 환경

우선 출퇴근 등 일반적인 근무 환경을 생각해보자면, 출퇴근이 자유롭고 재택근무(WFH, Working From Home)를 언제든 할 수 있다.

출퇴근 시간은 자신이 마음대로 정할 수 있다 (적어도 우리팀은 그렇다. 하지만 팀에 따라 달라질 듯)  우리 팀의 경우, 젊은 사람들이 많아서, 10시쯤 출근해서 6-7시 쯤 들어가는 사람이 많다. 나는 아이들도 있고, 퇴근하면 저녁 준비도 해야 하니까 8시-8시반쯤 회사에 도착해서 4시-4시반쯤 사무실서 나온다. 이렇게 일찍 퇴근하려니까 점심시간을 좀 아껴서 쓰는 편이다. 샌드위치를 가져가서 먹으면서 일을 한다든지 건물 내의 카페테리아에서 해결하든가.. 사무실이 있는 건물 1층에 아마존 고(Amazon GO)가 있는데 거기서 샌드위치나 스시를 가져다가 사무실서 먹으면서 일한다. 이 방법을 많이 쓰는데 먹을 건 별로 없지만, 30초면 음식을 가져 나올 수 있다는 장점이 있다. 그리고 내가 좋아하는 코카콜라 1캔이 1불 (0.99?) 밖에 안한다.

동료들하고 먹을 때가 있는데, 주로 Food truck을 이용한다. 시애틀에는 정말 수많은 Food truck이 있어서, 여러가지 음식을 비교적 저렴한 가격에 먹을 수 있다.  식당에 가서 먹게 될 경우는 take away로 먹는데, 주로 가는 곳은 버거 집 (Great State Burger - 싸고 맛있고 가깝다 / Shake Shack burger - 가깝고 맛은 있으나 대기 시간이 너무 오래 걸려서 잘 안가게 됨, 정말 가고 싶을 때 큰맘먹고 감) 과 Buffalo wild wings.  버팔로 와일드 윙스는 우리 팀 동료들이 가장 좋아하는 외식 장소로, 매주 금요일마다 있는 Nice team lunch (이건 거의 강제로 같이 먹어야 함) 에서 가장 자주 찾는 치킨 가게.  처음에는 기다리는 시간이 1시간이 넘어서 가고 싶기는 하지만 시간이 너무 오래 걸려 안찾다가, 요즘 음식을 주문하고 음식이 나오는 프로세스를 개선해서 대기 시간을 대폭 줄인 결과, 1시간 내에 음식을 다 먹고 사무실로 돌아올 수 있게 되었다. 

재택근무가 매우 자유로운데, 뭔가 집에 일이 있거나 집에서 일을 하고 싶을 때는 팀 메신저로 그냥 알려주고 안나와도 된다.  회의가 있으면 원격으로 할 수 있고, 와이파이만 있으면 집에서 일을 하는데 아무 지장이 없으므로 자주들 이용한다.  특히 지금 같이 COVID-19이 창궐한 이때, 거의 한달을 집에서 일하고 있는데, VPN과 회사 전용 메신저가 있으니 사실상 일하는데 지장이 없기는 하다.  그래도 사무실서 얼굴 보면서 물어보고 일하는게 백배는 나은거 같다.

사용 언어와 개발 환경

처음 회사에서 일할때 정말 적응하기 어려웠던것이 개발 환경이었다. 아마존이니까, AWS를 쓰는 것은 기본. AWS portal (console)을 자주 쓴다. 그리고 아마존 고유의 개발 환경이 있는데 이런 것들을 배우고 문제가 생겼을때 해결하는 것이 어려웠다.  고유 환경이라서 CodeProject나 이런데서 찾아 볼 수 있는 것이 아니므로..  내부에도 그런 문제/응답 보드들이 있어서 문제에 대한 해결을 그런데서 찾을 수 있기는 하다.  동료들 중에 해당 경험이 있는 사람을 물색해서 물어보는 것이 가장 좋다.

우리 팀은 Java를 가장 많이 쓴다.  웹 서비스 쪽은 Java를 주로 쓰고, 웹 사이트(UI)가 있는데 이쪽은 Node.js랑 javascript를 쓰다가 요즘 React로 마이그레이션 하는 중이다.  코드는 모두 개방되어 있어서 다른 팀 소스 코드도 다 볼 수가 있다.  괜찮은 예제는 내부 소스에서 찾는 경우가 많다.  코드를 작성해 올리면 서로 간에 peer review를 해야 한다. 나의 경우, 하루 중 일부의 시간을 코드 리뷰에 할애한다. 코드 작성에 대한 팀내 best practice를 배울 수 있고, 여러 옵션이 있을 때 왜 이런식으로 했는지 등을 논의하기도 한다. 예전에 다른 미국 회사에 근무할 때 (20년 전이라 비교하기가 어렵긴 하나)  코드 리뷰를 inspection / walk through라는 이름으로 수행했는데, 회의 시간을 따로 잡고 회의를 공지하고 프린트해간 diff file을 보면서 한줄 한줄 읽어가며 리뷰를 했던 경험이 있다.  이 방식은 시간이 많이 걸리고 종이도 낭비되나, 지금 방식은 온라인으로 내가 원하는 시간에 다른 사람의 코드를 리뷰하고 웹 사이트에 직접 코멘트를 남기니 참 편리하고 좋은 방식이다.

우리 팀은 Sprint 방식으로 할일을 정하고 일의 진도를 체크한다. 스프린트 주기는 2주인데, 2주마다 스프린트 회의를 통해 자신이 할 capacity를 정하고 계획을 세운다.  Story는 필요할 때마다, 또는 새로운 프로젝트가 생길때마다 관련 사람들이 작성하여 올린다. 2주마다 우선순위를 정하고, 포인트를 정하는 회의를 한다.

매일의 진도는 Stand-up meeting에서 체크한다.  오전 10시 반에 스탠드업 미팅을 통해서 어제 한일과 오늘 할일, 막히는 부분은 없는지, 어느 부분에 도움이 필요한지 등등을 의논한다. 처음에 이 회사에서 일할때 매일해야 하는 이 미팅이 부담스럽고 걱정스럽고 했었는데 (왠지 내가 못한 부분이 드러나는 거 같아서), 회의를 통해 다른 사람들이 무슨 일을 하는지 알 수 있고, 내가 막히는 부분이 있을때 도움을 청할 수 있어서 나에게는 이제 매우 중요한 시간이 되었다.

전반적인 일 진행 방식

이 팀에서 일하면서 굉장히 특이하다고 여긴 부분이 있는데, 과거에 일하던 회사에서는 팀에 배정되면, 각자 할일이 배정이 된다.  예를 들면 A라는 서비스는 누가 담당, B라는 서비스는 누가 담당.. 뭐 이런식으로 담당을 정하고,  해당 업무와 관련한 부분에 에러가 생기거나 개선할 부분이 생기면 그걸 그 사람이 담당하는 방식이었다.  우리 팀은 모두가 모든 서비스에 owner이다. 누구든 어느 서비스의 일이든 그때 그때 assign받아 수행하는 방식이다.  물론, 처음에 디자인을 했거나 더 많은 시간을 어느 서비스에 할애 했다면 어느 서비스를 더 잘아는 사람은 존재하지만, 그 사람이 그 일만 담당하는 것이 아니다.  1년이 지난 지금까지도, 아직 해보지 않은 부분을 담당하게 되는 경우가 있다.  그러면, 우선 이 부분에 대한 wiki를 찾아보고, 경험이 있는 팀원을 찾아본다. 그리고 그 경험을 듣고 방법을 찾는다. 

이렇게 일을 하니까, 누군가 팀을 떠난다고 해도 당장 빵꾸나는 일은 없다.  누가 휴가를 가도, 다른 사람들이 할 수 있다.   

마무리

1년 지난 지금, 작년에 나와 같은 날 같은 팀에 들어왔던, 호주 사람이 팀을 그만 두었다.  앞서 작성했던 인터뷰 후기에도 있는데, 그 사람과 같은 날 멜번에서 인터뷰를 봤다. 그리고 몇달후 같은 팀에 배정된 것을 알고, 꽤 기뻤다. 그 분은 Senior SDE여서 아는 것도 정말 많고 경험도 많고, 설명도 정말 잘 해주셨었다. 정확히 1년만에 팀을 떠난다고 해서 매우 섭섭했다.  하지만 이해도 가는 것이, 회사 생활이 정말 힘들긴 하다. 팀에 들어온지 딱 1년 되었는데 그동안 4명이 팀을 떠나는 것을 보았다. 1명은 다른 팀으로 갔으니 회사를 나간 것은 아니지만, 팀원이 10명이 안되는데 참 많이도 떠난다는 생각이 든다.

그 사람은 시니어니까 나름대로 현재 코드에 대해 비판도 많이하고 고쳐야 한다고 열심히 얘기 했는데, 자꾸 기존 팀원들의 반대에 부딪혔다. 그래서 그런지 암튼 팀을 떠났다. 너무 열심히 바꿔야 한다고 말하지 말고, 그냥 적당히 지내는게 답인거 같다. 중간만 갈 정도로.


2019년 12월 5일 목요일

Java 8 Lambda Map 함수 사용 관련

람다 Map 함수를 사용하는 것에 관해서는 여기저기 잘 나와 있는데,
파라미터를 쓰지 않는 표현법을, 우리 팀 시니어 엔지니어가 자주 활용하길래.
물어본적이 있다.


이런 식인데, 아는 사람은 잘 알겠지만, 나는 아직 자바에 익숙치 않아서 찾아보았다.

https://javarevisited.blogspot.com/2014/02/10-example-of-lambda-expressions-in-java8.html

링크를 찾아가서 보면, 아래 쯤에 이런 문구가 있다.


---------------------
2) You can use method reference inside lambda expression if method is not modifying the parameter supplied by lambda expression. For example following lambda expression can be replaced with a method reference since it is just a single method call with the same parameter:


list.forEach(n -> System.out.println(n)); 


list.forEach(System.out::println);  // using method reference

However, if there’s any transformations going on with the argument, we can’t use method references and have to type the full lambda expression out, as shown in below code :


list.forEach((String s) -> System.out.println("*" + s + "*"));

You can actually omit the type declaration of lambda parameter here, compiler is capable to infer it from generic type of List.

----------------------------------
대충 해석해보면,

해당 메소드가 람다 표현식에서 제공하는 파라미터를 변경하지 않는다면, 이런 경우에 한해 람타 표현식 내에 그 메소드의 reference를 사용하는 것이 가능하다. 
예를 들어 이러한 람다식이 있을 때:

list.forEach(n -> System.out.println(n)); 


이것을 다음과 같이 표현하는 게 가능하다는 것이다:


list.forEach(System.out::println);  // using method reference

그렇지만, 그 아규먼트를 가지고 뭔가 변형시키는 부분이 있다면, 
이러한 메소드 레퍼런스 방식은 사용할 수 없고 다음과 같이 전체 표현식을 써야 한다.

list.forEach((String s) -> System.out.println("*" + s + "*"));

2019년 4월 19일 금요일

아마존 인터뷰 후기 (Seattle SDE)

기억이 더 가물가물해지기 전에 아마존 인터뷰 후기를 남겨보기로 한다. 
지금은 리로케이션 까지 해치우고 시애틀에 산지 2달이 조금 넘은 시점이다.

인터뷰 보기 전에 다른 분들이 웹사이트에 남겨둔 인터뷰 후기를 뒤지면서 이 회사는 인터뷰를 어떻게 진행하는지 짐작해보는 시간을 가졌었다. 그분들께 고마워하면서, 나도 후기를 남겨볼 생각을 하게 되었다. 혹시 준비하시는 분들.. 궁금한거 있음 댓글을 남겨주세요.

=======================
배경 설명
=======================
지난 해까지 호주 멜번에 살았고, 마지막에 다니던 회사는 보쉬 (Bosch Australia)라는 독일계 회사. 자동차 부문에서 임베디드 개발자로 일하고 있었다. 주로 사용하던 언어는 C. 

호주로 이사간건 2010년. 호주로 오기 직전에는 전산직 공무원으로, 중앙 부처 중 한곳(광화문)에서 일하고 있었다. 공뭔이 되기전 6년 정도는 소프트웨어 개발자로 한국 대기업, 외국계회사, 벤처기업 등에서 일했다. 호주로 와서는 공무원 재직 기간(6년이 넘는)동안 까먹었던 본업을 다시 되살려 취직해 임베디드 쪽에 주로 일하고 있었다.
(말로 쓰니 복잡: (한국)개발자 -> (한국)공무원 -> (호주)개발자  이렇다)

이전 글에 보면 보쉬에 들어간 인터뷰 후기가 있는데, 보쉬에서 일한건 2018년 7월부터다. 얼마뒤 2018년 9월인가 10월에 아마존 리쿠르터에게서 링크드인을 통해 메일을 받았다. 보쉬에는 들어온지 얼마 안되고, 프로베이션을 좀 넘은 시점이었다.

=======================
리쿠르터에게서 메일
=======================
다른 분들도 이런 경험을 하겠지만, 까먹을만 하면 여러 회사들의 리쿠르터에게서 연락이 온다. 호주는 물론 미국 여기 저기. 아마존, 우버, 구글 등등.  대부분은 쌩깐다. 그러고 보니 한국 삼성에서도 연락이 온적 있다. (왜 연락한겨)  아마존에서 연락 온것도 처음이 아니었다. 2017년 말쯤에 연락이 왔었다. 지원도 안했는데 링크드인 통해서 연락을 받았다. 암튼, 그때도 이메일 주고받고 셤보라고 해서 온라인 테스트 했는데, 다시 연락이 안왔다. 온라인 테스트를 망했나 보다 했다. (그럼 말이라도 해주든가.. 아무 피드백이 없다)

잊고 있다가 다시 1년 후, 또 연락이 왔다. 멜번에서 11월에 하이어링 이벤트 할건데 자기네의 온라인 테스트를 통과하면 불러준다고 한다. 단 조건은 호주 시민이어야 한다. (이건 비자 때문인거 같은데, 호주 시민은 E3 비자를 받아 미국으로 간다. 이거 나오는데 3주 걸림) 1주일동안 답장을 보내지 않다가, 예의 상 답장을 보냈다. 나 작년에 온라인테스트 하라고 해서 했는데, 너무 어려워서 떨어졌다. 시간도 안맞고 나 테스트 보기 싫다. 그리고 지금 들어간 회사에 얼마 안되서 옮기기 그렇다. 그리고 이 회사 되게 좋다. 나 만족한다. 정중히 거절하는 메일을 보냈다.

리쿠르터가 다시 메일을 보내서, 온라인이 싫으면 사람붙여서 전화로 코딩 테스트 보게 해주께.. 함 해바라. 설득했고.. 어쩔수 없이 보게 되었다.

전화 테스트는 합격했는지, 결국 현장 인터뷰에 초대되었다.
현장 인터뷰에 가겠다고 한 후, 전화통화에 또 참여해야 했다.
Prep call 인데, 인터뷰에 뭘 준비해야 하는지를 설명하는 1시간짜리 통화다.
준비 리스트를 주는데, 학부때 배운 Data Structure  책에 나오는 주제 전부 다라고 생각하면된다. 별로, 거의 도움 안되었다.  도움된 부분은,, 인터뷰 날에 대해 대략 어떻게 진행되는지를 설명해주는 부분이다.

=====================
현장 인터뷰
=====================
아마존 인터뷰: 2018 11 13
장소아마존 멜번 사무실 (Ernst & Young building / 8 Exhibition Street)

인터뷰는 2시부터 6시까지 예정되었다건물에 도착한 시간은 1 .

커피를 마시고, 11층으로 올라갔다올라가는 엘리베이터에서 아마존 인터뷰를 보려고  사람을 만났다. 서로 뻘쭘이 인사하고, 어제 있었던 소셜 미팅에서 나를 본거 같다고 그사람이 말했다. 나는 가지 않았는데 뭘 봤다는건지..  회사때메 못갔다고 말하고.. 이런저런 얘기를 했다.  같이 로비에서 기다리다가 각자의 인터뷰 룸으로 안내받을  서로 굿럭이라고 말해주었다.

((NOTE: 사실.. 나는 이사람과 같은 팀이 되어 같이 일하고 있다.. 세상일 정말 모르겠다.. ㅎㅎ))


온사이트 인터뷰 안내를 받을  개인 랩탑 가져오라고 하였다인터뷰 시에 랩탑으로 진행하기 위함이라고 한다인터뷰 룸에는 파워포인터화이트보트테이블이 있었다인터뷰 시작 전에 와이파이를 연결하라고 했다.

((NOTE: 다른 인터뷰 후기에는 화이트 보드에 손으로 쓴다고 했는데, 어느새 바뀌었는지, 개인 랩탑을 가져오라고 해서.. 인터뷰 시 랩탑을 사용했다.
나의 경우, 화이트보드로 일단 전체적인 알고리즘 설명했고 -> 이걸 랩탑으로 실제 코딩했다. 코딩은 아무 언어나 써도 된다고 해서 C로 했는데. 다들.. 아직도 C를 쓰다니? 라는 반응이었다. 지금은 팀에서 자바를 쓴다. 자바를 많이 쓰는거 같다))


=========================================
인터뷰 구성
=========================================
인터뷰는 총 네 세션(각 1시간: 총 네시간). 나의 경우, 세 세션이 알고리즘을 이용한 문제해결.
한 세션이 디자인 인터뷰였다.  매 세션마다 한명 또는 두명이 들어왔다.
각 세션마다, 약 20-30분을 behavioural question (아마존 리더십 프린시플 적용 문제) / 나머지 시간은 문제풀이

자세히는 기억도 안나고, NDA도 작성했으니, 대략 말하면 다음과 같다.


첫번째 인터뷰 (2-3)
30분은 behavioural question. 나머지 30분은 테크니컬 문제. (모든 세션 공통)
시드니 AWS  매니저라고 했다문제는 캐쉬를 쓰는 문제였는데나는 해쉬테이블 () 이용해서 푸는 방식으로 했다만일 어떤 래퍼 펑션이 있는데 이게 부르게 되는 매핑 펑션이 리스판스 타임이 느리면 어케 해결하겠냐는 .
내부 메모리에  같은 것으로 저장해둔다고 캐쉬 개념을 얘기했다.


두번째 인터뷰 (3-4)
인터뷰어가 처음에는 친절한  알았는데 사람을 어찌나 다그치던지 당황했다. 스트림을 인풋으로 받아서 가장 처음 나오는 unique char 찾는 문제.
처음에는 쉽다고 생각했는데 점점 뭔가 이상한 느낌나중에 겨우 힌트를 받아서 위기를 모면했지만 나중에 스트림에서 캐릭터 받는 부분을 고치라고 했는데 의도를 알아채지 못해서 헤메다가 결국  말인지 알아들었으나 시간 다 됐다고 에디터를 닫아버렸다매정하게.


세번째 인터뷰 (4 – 5)
이거  최악이었다시스템 디자인 쪽인데.. 내가 읽은 자료에서 언제나 빼놓지 않고 나왔던 조언이 바로 문제로 점프하지 말라는 것이었는데완존 그렇게 해버렸다. 문제를 보고 당황하니까 조언이고 뭐고.. 머리가 텅 비어버렸다.
웹사이트를 디자인하라는 문제인데, 스케일도 생각해야하고, 유저 수, 디비 어쩌고.. 
솔직히 이 부분은 엉망진창이었는데, 내가 뭐 웹사이트 시스템 설계해본적이 있어야 말이지.
인터뷰어는 조금 답답해 하는거 같았고나는 경험이 없으니 아는 것도 없고 서로 답답한 상황그래도 최선을 다해서 참아주는  같았다.


네번째 인터뷰 (5 – 6)
마지막 인터뷰가 가장 괜찮았다 했다는 말도 들었다아마존에서 14년인가 있었다는 시니어 소프트웨어 엔지니어가 주도했고 조인한지 얼마안되는 신참이 같이 들어왔다알고보니 신참은 멜번에서 6개월 전에 그쪽으로 리로케이트 분이었다.
문제는 다행히도 해쉬테이블 문제였다문제가  재밌었다해쉬테이블이 어떻게 동작하는지를 알아야 풀수 있는 문제인데 그것도 아주 어렵지 않고 30분안에 풀수 있는 그런문제.
 나아가서 랜덤하게 값을 가져오되 O(1)으로 가져올  있도록 구조를 바꾸라고 하는 아주 재미난 문제였다. 
문제를  풀고 나서 멜번에서 시애틀로 이사가는 것에 관해 얘기하고 시애틀 스키타기는  좋다는 말을 했다마운트 불라보다 웨이 치퍼 할때는 웃음이 나왔다.

((주석: 나중에 찾아보니까, 2016년 우버에서 나왔다는 문제와 유사..))


<<아마존 리더십 프린시플 문제>>
이거는 사실 준비만 잘하면 상당히 잘 해낼 수 있는데, 나는 여기서 꽤 점수를 얻은것이 아닌가 함.  기억할 점은, 자기가 겪었던 프로젝트 중에 챌린징 했는데 상당히 잘 해냈다고 생각하는 프로젝틀 하나 혹은 두개 마음속에 준비한다.  뭐가 챌링징 했는지 일단 말로 설명할 정도로 준비하고. 어떤 상황에서 어찌할지 (what would you do or what did you do) 문제에 대비한다. 구체적으로 그 프로젝은 이러이러했는데, 내가 (항상 I가 주어다) 이런 식으로 상황을 대처했다. 뭐 이렇게 말하면 된다. 결과적으로 프로젝은 나의 행동/처리로 인해 어떻게 되었다. 이런정도 준비하면 될듯.  덧붙여,, 아마존은 이걸 리더십 프린시플과 살짝 연결하면 된다.



===============================
인터뷰 결과
===============================
인터뷰는 화요일이 었는데  목요일에 합격 통보를 받았으니 매우 빠르다. 합격 통보는 전화를 직접 받았다.  시애틀에서 개발자들(interviewers)과 리쿠르터가 멜번으로 와서 일주일 머물렀으니, 목요일에는 낮에 직접 리쿠르터에게 전화를 받았다. 잘 했고 축하한다고.  자기가 states (미국을 states라고 하나보다)로 돌아가서 다시 이멜을 주겠으며, 그 후에는 오퍼와 리로케이션 합의가 진행된다고 했다.


To be continued...

AWS 레소스 중 SNS와 SQS에 대해

AWS (아마존 웹 서비스)에는 정말 많은 레소스가 제공되는데 그 중 현업에서 흔하게 쓰고 있는 것이 있는데 이게 SNS와 SQS다.   처음에 이걸 쓸때, 도대체 뭔 차이인지 잘 몰라서 헷갈렸었다. 이름도 비슷하다. SNS는 Simple Notifi...