Skip to main content

실리콘밸리 구직 체험기2_201505 - 3. 새로운 위기


실리콘밸리 구직 체험기2_201505 - 3. 새로운 위기

우리는 지난 1년간 lockscreen app과 messenger app을 만들었습니다.
나는 backend restful API를 만들고 cms를 node.js, angular.js로 만들었다. 또한 AWS 인스턴스를 관리했습니다.

마지막 몇달 동안 기존 lockscreen 앱과 CMS 관리 대신에 메신저 앱에 집중했습니다.
한국에서는 매출과 이익을 내지 않으면 투자를 받을 수 없는 환경이지만 매출 없이 유저수 증가에만 집중하는 모습이 참 생소했습니다.

우리는 사용자의 행태를 확인하기 위해서 BI툴을 이용해서 사용자 수와 retention rate 등을 추적하고
새로운 기능에 대해 사용자의 반응을 점검하면서 기획을 수시로 바꿨습니다.
많은 기능을 새로 만들고 ab test를 통해서 또 많이 폐기 했다. 실제 만든 기능 중에 절반 이상은 버려 졌습니다.


locket앱은 2014년 google store의 베스트 앱으로 선정되기도 했다. 그러나 사실 이 시점에 이미 우리는 메신저 앱에 올인 하고 있었습니다.



우리가 만든 메신저 앱은 초반의 반응이 워낙 좋아서 정체되었던 lockscreen 유저수를 단번에 따라 잡았습니다.
특히 Retention Rate 이 좋아서 사용자들의 제대로 사용하고 있다고 생각했습니다.
잠깐이지만 google play 에 featured 되고, 인도에 가입 지원을 했을 때 사용자 수가 급증하기도 했습니다.

https://www.facebook.com/photo.php?fbid=10204901853057587&set=a.2225490048257.118046.1577949323&type=1

그 시점에서 안드로이드 개발자 1명과 co-founder 한명이 회사에 대한 비전 차이로 떠나고 그 이후 갑자기 상황이 바뀌게 되었습니다.
더욱이 와이프는 믿음이 안생긴다고 교회를 안가겠다고 했습니다. 한국에서 그랬듯이 나는 아이들만 데리고 교회에 나갔습니다.
회사는 seed money를 소진하기 전에 투자를 받기 위해 노력했으나 투자 유치에 실패했고
다른 회사에 selling하기 위해서 준비를 했습니다. 나를 포함한 4명의 엔지니어들이 인수기업에 가서 인터뷰를 봐야 했습니다.
우리는 꽤 많은 시간과 노력을 들여서 체계적으로 인터뷰 준비를 했습니다.
내부 스터디이외에 회사를 지원해온 advisor와 유명한 저자(Gayle Laakmann McDowell)를 초빙 알고리즘 스터디를 진행했습니다.


- computer science 준비
특히나 datastructure에 대해서 반드시 암기해야 하며, 복잡도에 대한 대답을 할 수 있어야 합니다.


2015-04-15 Spring (Java) Interview Questions


2015-03-13 Java Interview Questions


Groupon


Interview questions(google, Questions, Facebook, Dropbox, Square, Yelp, Zynga, Twitter...)


기술면접 준비


real interview source and examples
on-site 또는 on-line, on-site 리허셜 때 풀었던 문제 들로 보통은 알려진 회사들 또는 startup의 코딩 문제가 어렵고, 중견회사의 문제는 무난하다고 알려져 있습니다. 적어도 queue, stack, DFS, BFS, BST, bubble sort는 기본으로 외우고 있어야 했습니다.


- behavioral 인터뷰 준비


- white board 인터뷰 준비
반드시 연습장이 아니라 화이트 보드에 문제를 푸는 연습을 따로 해야 합니다. on-site에서 어떤 식으로 질문을 인식하고 풀어가야 하는지 시뮬레이션이 되어 있어야 합니다.
내가 리허설을 통해서 교육받고 경험한 on-site코딩에 대한 흐름은 다음과 같습니다.
  1. interviewer가 질문을 하면
  2. 가능한한 간단한 example input과 output 값을 먼저 기술하고 interviewer에게 확인 받는다.
  3. interviewer가 동의하면 어떤 알고리즘으로 구현할 지 간단히 설명한다.
  4. 적절한 메소드의 시그니쳐(메소드명, input과 output)을 기술한다.
  5. 그 이후 로직을 구현하고 마지막에 example 데이터를 흘려 검증한다.
  6. 보통 복잡도에 대한 질문을 받게 된다.
이 과정에서 interviewer과 소통을 하는 것이 일반적이지만 소통이 힘들면 차라리 초반에 간단히 접근 방법만 설명하고 코딩에 집중합니다.




- Gayle 인터뷰 준비
Cracking the Coding Interview with Author Gayle Laakmann McDowell


나는 그루폰과 엘프, 스퀘어 온사이트 인터뷰에 참여했는데 결과는 모두 실패였습니다.
인터뷰한 느낌은 제안 발표하려 가는 것보다는 덜 긴장되었습니다.
영어가 미숙하니까 이 정도면 봐 줄만한 것이 아닌가라고 스스로 핑계를 만들었습니다.
사실 이런 핑계 또는 영어실력 때문에 실제 할 수 있는 것보다 절반도 못보여 주었습니다.
영어가 미숙한 개발자, 아키텍트들은 본인의 역량을 반도 펼치기도 쉽지 않다고 생각했습니다.


CEO는 팀 전원을 넘기기를 원했지만 우리는 어린 친구의 경험과 전공 문제, 나의 커뮤니케이션 문제로 회사를 selling에 번번히 실패했습니다.
내부적으로 체계적으로 준비했기에 낙관했으나 여러 번의 실패 이후 나는 ceo에게 나의 입장을 얘기했습니다.
회사 입장에서 인수 회사가 인정할 만큼의 매력적인 senior 엔지니어로 평가받지 못한 내가 부담이 될 수 있었습니다.
가족까지 데리고 온 나로서도 어짜피 working status가 중요했고, visa transfer 지원해 줄 회사를 찾아야 했습니다.
나는 바로 severance pay를 약속받고 퇴사를 했습니다.


2013년 4월 1일 만우절 날 출근 전철안에서 갑자기 문뜩 나 답지 않게 "나 SF로 간다..."라고 만우절 거짓말을 페북에 올렸었는데  그리고 2014년 4월 1일에 SF행 비자 lottery를 받을 수 있는 sponsor를 구했습니다.
그리곤 2014년 9월 22일에 가족을 데리고 진짜 SF에 들어왔습니다.
그런데 6개월만에 또 다른 변화가 만우절에 일어났습니다.
정말 거짓말 같지만 나는 미국에서의 첫번째 회사를 6개월만에 관두었습니다. (2014년 2월부터 9월까지는 원격근무를 했으니 실제 미국에서의 근무는 6개월밖에 안된 시점이였습니다.)
나의 카톡 타이틀 처럼 나는 다시 여행을 떠나게 된 것이다. "인생은 멈출수 없는 긴 항해!"
참 다이나믹 하지만 그분이 시작하신 것이고, 나도 그분이 원하시는 바를 찾아 가야 한다고 생각을 했습니다.
고생이라 생각하지 않고 또 다른 항해를 시작한다고 생각하려고 노력했습니다.


Comments

Popular posts from this blog

DevOps JD's required skills from LinkedIn

From some of DevOps JD on linkedIn, I realised that DeveOps should be the leader of the organization. https://docs.google.com/spreadsheets/d/1P520nH0pYcAdN0rJcnMQqsgu9cV9GdknztJ92J8l7-s/pubhtml DevOps' Required Skills From LinkedIn on 8/30/16: DevOps should be the leader of the company! Yahoo Netflix Samsung Salesforce Fortinet SUM OS admin UNIX systems Unix platforms Linux administrator Linux VMs Docker VMs VMware, OpenStack, Hyper-V Openstack, KVM, VMWare Version control version control systems Git, SVN Cloud Amazon AWS AWS AWS, Azure DB MySql Oracle, MySQL, NoSQL Mysql administration and strong command of SQL MySQL RabbitMQ MySql, MongoDB, Redis, Oracle, ProgreSQL N/W TCP/IP networking, DNS, HTTP NAS Understanding of network stack, network tuning, subnet/VLANs. HAProxy, DNS, IPTable Script Lang Shell, Perl, Python, Ruby, PHP bash Python, Bash/tcsh a scripting language: Perl, Python and Unix Shell preferred Python, Perl, Ruby Python, Ruby, Shell, PHP Web LAMP stack

Ubuntu GUI with VNC on Xenserver

Xenserver 에서 Ubuntu GUI 를 쓰기 위해서는 VNC 가 답인 듯... Installing Ubuntu Gnome GUI on Ubuntu Server 12.10 with VNC Update Repositories # apt-get update Install gnome and vnc: # apt-get install gnome-core vnc4server Start VNC Server: # vncserver (You’ll then be prompted to create and verify a new VNC connect password) Kill the currently running VNC Session: # vncserver -kill :1 Edit VNC startup config file: # vim .vnc/xstartup Uncomment the following line: unset SESSION_MANAGER Add the following line: gnome-session --session=gnome-classic & Comment Out the following two lines: x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & End result should look like: #!/bin/sh # Uncomment the following two lines for normal desktop: unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc gnome-session --session=gnome-classic & [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/

Install CoreOs on linode without VM

Install CoreOs on linode without VM 1. Add a Linode 2. Create a new Disk   CoreOS 3. Rescue > Reboot into Rescue Mode 4. Remote Access   Launch Lish Console 5. make an install script cat <<'EOF1' > install.sh # add needed package sudo apt-get update sudo apt-get install -y curl wget whois sudo apt-get install -y ca-certificates #sudo apt-get install gawk -y # get discovery url discoveryUrl=`curl https://discovery.etcd.io/new` # write cloud-config.yml cat <<EOF2 > cloud-config.yml #cloud-config users:   - name: core     groups:       - sudo       - docker coreos:   etcd:     name: node01     discovery: $discoveryUrl hostname: node01 EOF2 # get the coreos installation script #wget https://raw.github.com/coreos/init/master/bin/coreos-install wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install # run installation chmod 755 coreos-install sudo ./coreos-install \       -d /dev/sda \       -