Skip to main content

실리콘밸리 구직 체험기2_201505 - 8. 구직 노하우


작년에 포스팅한 글을 보고 조언을 구하시는 분이 있어 제 개인적인 생각을 이렇게 다시 포스팅해 드립니다.


조언을 구하신 내용이 "어떻게 해야 기본이 탄탄해지고 개발자 다운 모습이 갖춰지는 지를 알고싶습니다."인데 이에 대한 답변을 제가 할 수 있는 입장인지는 잘 모르겠습니다. 그 이유는 제 비전인 "작가가 글을 쓰듯 코딩을 하고 그 보수를 받으면서 70세가 될 때까지 일을 하는 것"을 이루기 위해서 추구하는 방향이 좀 일반적이지는 않을 수 있기 때문입니다.
제가 좋아하는 것은 만들고 싶은 것을(아이디어를) 만들어 동작하는 것을 보는 것 입니다. 그렇게 하기 위해서 필요한 요소 기술들을 갖추어 가고 있습니다. back-end에 os(linux, unix, AWS ...), Database, storage, Webserver / WAS 등등, front-end에 RIA, javascript, jsp, css, android 등 앱이 동작할 때 필요한 기술을 이것 저것하면서 제 관심과 열정이 생기는 대로 공부를 해 가고 있습니다. 물론 기술 트랜드를 고려하면서요.


기본이 탄탄해 지려면 학술적으로 깊이있게 공부해야 한다고 일반적으로 생각하지만 저는 특정분야에 깊이 있게 공부하는 것을 좋아하지 않습니다. 책을 잘 읽지도 않죠.
오히려 트랜드에 기민하게 따라가는 것에 익숙하고 잘하는 편입니다. 다양한 분야에서 필요한 만큼(깊이가 있을 수도 있지만 대부분은 얇게) 공부하고 적용합니다. 적용하지 않는 공부는 거의 하지 않는다고 보시면 됩니다.


70세 까지 엔지니어로 살기 위해서 어떤 전략적인 선택을 해야 할지는 저에게도 아직 숙제입니다만 중요한 것은 이론적인 것만 가지고 솔루션을 제공하는 것(컨설팅, 이미 오랫동안 회사업무로 해오던 것이라)을 좋아 하지 않으며 hands-on 스킬을 이용해서 실질적인 것을 구현해야 제가 즐겁다는 것은 확실합니다.


다만 이렇게 다양한 기술에 대해서 지속적으로 활용할 수 있는 능력을 갖추기 위해서 활용했던 방법은 다음과 같습니다.
- SI 프로젝트에서 기술적으로 리딩합니다.
 필요한 기술 또는 관심있는 기술을 프로젝트에서 직접 적용합니다. 누가 요구하지 않더라도 제가 도입을 주도합니다.
 공부가 일이 되도록 조정합니다. (위험해 보이기도 하지만 이곳 실리콘밸리에서도 많이 볼 수 있다고 합니다.)
- stack별로 레퍼런스 앱을 정리해 둡니다.
 플젝이 끝나면 반드시 중요한 기능으로 구성된 앱을 정리해서 나만의 공간(SVN, git)에 저장하고, 필요하면 항시 참조할 수 있도록 실행시켜 둡니다.
- 검색이 쉽도록 준비해 둡니다. (과거에는 데스크탑 검색엔진을 쓰다고 지금은 클라우드를 씁니다.)
 - 소스: 이클립스에서 search > file search > searched resources (저는 다른 검색 기능을 죽여놓습니다.) 를 통해서 검색
 - 문서: 본문검색을 지원하는 구글독에 문서 정리 (적용해 본 기술은 반드시 분야별로 구글독에 정리해 둡니다.)


기억력이 좋지 않은 관계로 메소드명 조차 잘 기억 못하지만 어떤 연관된 것들을 사용했었다는 힌트만으로 검색을 해서 바로 적용할 수 있도록 했습니다.
정리할 때에는 구구절절한 내용보다는 바로 적용할 수 있는 command나 설정만을 기술하고, 깊이 있는 내용은 관련 링크를 걸어두었습니다.
결국 기억력이 떨어지는 제가 다양한 분야에서 hands-on한 기술을 갖는 방법은 검색이라고 생각합니다.


경험상 비전공자인 제가 면접 준비를 하는 과정에서 스터디를 하고 예제 문제를 풀면서 느낀 것은 기본기가 정리된 것도 사실 입니다만, 경우에 따라서
미국에서의 기술면접에서 알고리즘(코딩 문제)를 강조하는 이유는 짧은 시간동안 개발자를 파악할 수 있는 방법이 제한적이기 때문이라고 생각합니다.


on-site 인터뷰를 하기 위한 접근 방법이라면 다음과 같이 진행했습니다.
1. 한글판으로 구해서 공부 Cracking the Coding Interview with Author Gayle Laakmann McDowell
- 너무 어려운 것은 스킵했습니다.
2. 기술 문제은행 검색 (ex. Spring (Java) Interview Questions, Java Interview Questions)
3. 나만의 문제 은행 작성 (내가 작성한 것은 거의 외울 정도로 반복적으로 문제 풀기)
real interview source and examples
4. white board 인터뷰 준비
5. behavioral 인터뷰 준비
본인만의 문답지를 작성하여 외움 (거의 외우게 됨)

사람마다 생각하는 방향과 좋아하는 방법이 다르며, 해외 채용에 대한 정답을 제가 가지고 있는 것 아니기 때문에 제 경험이 단지 도움이 되었으면 합니다.


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 \       -