[Perl] autovivification

perl에서는 autovivification 이라는 강력하고 어찌보면 생소할 수 있는 기능이 있다.

 

autovivification 이란?

깊은 깊이를 갖는 자료구조에서(deep data structure), 선언과 초기화에 필요한 장황한 코드를 사용하지 않고도 초기화를 진행해 주는 기능이다.

다음 예제를 통해 살펴보자.

use Data::Dumper;

my $fruit_count = {};

print "Before: \n";
print Dumper $fruit_count;

$fruit_count->{apple}++;
$fruit_count->{orange}++;

print "After: \n";
print Dumper $fruit_count;

위 예제의 실행 결과는 다음과 같다.

ahn-soohan@Mac-261:fout/perl_practice $ perl autovivification1.pl 

Before: 
$VAR1 = {};
After: 
$VAR1 = {
          'orange' => 1,
          'apple' => 1
        };

선언하지 않은 orange와apple에 대해서 카운터가 1씩 올라가 있는 것을 볼 수 있다.

이처럼 autovivification 은 잘 활용하면 편한 기능일 수도 있겠지만, 의도치 않은 결과를 나타내면서 악마와 같은 기능을 할 수 있는 양날의 검이다.

다음의 예제를 한 번 살펴보자.

use Data::Dumper;

my $members = {};

print "Before: \n";
print Dumper $members;

print "It exists.\n" if exists $members->{ahn}->{items};

print "After: \n";
print Dumper $members;

결과는 다음과 같다.

ahn-soohan@Mac-261:fout/perl_practice $ perl autovivification.pl

Before: 
$VAR1 = {};
After: 
$VAR1 = {
          'ahn' => {}
        };

위의 소스 코드에서는  ahn이라는 필드를 선언한 적이 없는데도 불구하고, 비교에 쓰였다는 이유만으로 해쉬에 ahn이라는 필드가 생성되어있다. 이 기능의 강력함을 좀 더 잘 살펴보기 위해 더욱 deep한 필드에 대한 실험을 해보면,

use Data::Dumper;

my $members = {};

print "Before: \n";
print Dumper $members;

print "fruit exists.\n" if exists $members->{ahn}->{items}->{fruit};
print "vegetable exists.\n" if exists $members->{ahn}->{items}->{vegetable};

print "apple exists.\n" if exists $members->{ahn}->{items}->{fruit}->{apple};
print "potato exists.\n" if exists $members->{ahn}->{items}->{vegetable}->{potato};

print "after: \n";
print Dumper $members;

print "fruit exists.\n" if exists $members->{ahn}->{items}->{fruit};
print "vegetable exists.\n" if exists $members->{ahn}->{items}->{vegetable};

결과는 다음과 같다.

ahn-soohan@Mac-261:fout/perl_practice $ perl autovivification.pl

Before: 
$VAR1 = {};
after: 
$VAR1 = {
          'ahn' => {
                     'items' => {
                                  'fruit' => {},
                                  'vegetable' => {}
                                }
                   }
        };
apple exists.
potato exists.

없던 ahn뿐만 아니라, 하위 필드인 items와 그 밑에 fruit와vegetable 까지 생성된 것을 볼 수 있다. 게다가, 처음 if문에서는 exists에 걸리지 않았던 조건문이 autovivification후에는 exists에 걸려서 코드의 동작이 달라진 것을 볼 수 있다. 이런 경우는 보통은 개발자가 의도하지 않은 경우가 많으므로, 이런 부분에 대해서 주의를 할 필요가 있다.

autovivification을 사용하지 않도록 하기 위하여

아래 코드 한줄을 추가해주면 autovivification이 일어나지 않도록 할 수 있다.

no autovivification;

위 예제에 이 코드를 추가하여 실행하여 보면 아래와 같은 결과를 얻을 수 있다.

  • 코드:
    use Data::Dumper;
    
    no autovivification; # here!
    
    my $members = {};
    
    print "Before: \n";
    print Dumper $members;
    
    print "apple exists.\n" if exists $members->{ahn}->{items}->{fruit};
    print "potato exists.\n" if exists $members->{ahn}->{items}->{vegetable};
    
    print "apple exists.\n" if exists $members->{ahn}->{items}->{fruit}->{apple};
    print "potato exists.\n" if exists $members->{ahn}->{items}->{vegetable}->{potato};
    
    print "after: \n";
    print Dumper $members;
    
    print "apple exists.\n" if exists $members->{ahn}->{items}->{fruit};
    print "potato exists.\n" if exists $members->{ahn}->{items}->{vegetable};
  • 결과:
    ahn-soohan@Mac-261:fout/perl_practice $ perl autovivification.pl 
    
    Before: 
    $VAR1 = {};
    after: 
    $VAR1 = {};
Advertisements

nginx conf에서 location 설정

nginx conf에서 location 설정

  • location = [PATH] (Exact matching)

[PATH]에 해당하는 경로만 적용. location이 이 경로와 매치가 되면 곧바로 검색을 중단하고 이 이하의 설정을 적용한다. 다른 경로 검색을 줄일 수 있기에 조금은 더 빨리 처리할 수 있다.

  • location [PATH] (Prefix matching)

[PATH]로 시작하는 경로들에 적용. 하지만 다른 경로를 검색하여 regex 매치가 발생하는 경로가 있다면 그 경로의 설정을 우선적으로 적용한다.

  • location ~ [PATH regex] (Regular express matching)

[PATH regex]의 규칙에 해당하는 경로들에 적용.

  • location ^~ [PATH regex] (Regular express matching)

[PATH regex]로 시작하고 regex 에 걸리는 경로들에 적용. 이 규칙에 해당되면 바로 탐색을 중단한다.

  • location ~* [PATH regex] (Regular express matching)

location이 [regex] 로 끝나는 것들에 적용. 다만 ^~가 더 높은 우선순위를 가진다.

우선선위 정리

  • Exact matching
  • Regular express matching

  • Prefix matching

 

제6차 Kodeveloper 고군분투기

jsoup을 이용한 파일 다운로드 (@msna)

지난 시간서 이어서 자동 동영상 다운로드에 대한 발표를 진행하셨다.
RSS피드를 이용한 자동 다운로드를 Transmission + FLEXGET를 통해 진행하셨고,
jsoup을 이용한 크롤링에 대해서 발표하셨다. 이 과정에서는 우선 사이트의 구조를 확인하고 크롤링을 하였고, 큰 구조를 확인한 뒤 세부구조를 확인하여,
대상을 타겟팅하여 크롤링을 진행하셨다.
몇 단계의 실패가 있었는데, 첫번째는 User Agent를 설정하지 않았던 부분, 그 다음은 본문화면에 대한 쿠키 설정의 누락, 그리고 마지막은 컨텐츠타입에 대한 설정 에러였다.
이것들을 해결하고 무사히 크롤링을 마칠 수 있었다고 한다.

그러나 결론은.. 위의 기능을 제공하는 기존 라이브러리가 있었기에, 그냥 기존의 라이브러리를 이용하자. 로 이어졌다.

키보드 (@fish)

각 종 키보드 종류에 대한 발표와, 키보드가 돌아가는 간단한 원리 그리고 소재 등에 대한 발표였다.

키보드 종류:

  • Rubber dome
    제일 흔하고 싼 키보드로 보통 회사에서 지급하는 키보드들이다. 노트북들도 대부분 이 종류다.
    키감은 그렇게 뛰어나지 않다. 보통은 키캡 밑에 플라스탁이 X자로 교차되면서 그 가운데 고무(안에 있는 스프링)을 누르는 방식으로 작동이 된다.
    최근 맥북은 이것이 X자가 아니라 V자로 교차되는 방식이라 키감에 불만을 표하는 유저도 상당수 있다고 한다.
    X자 형태로 제작하면 라이센스비가 들어서 이 부분의 지출을 줄이고자 하는 것이 이렇게 만든 이유라고 한다.
  • 기계식 스위치 (mechanical switch)
    금속끼리 부딪혀서 작동하는 원리의 키보드. 몇 가지 스위치 방식이 있는데 체리 스위치가 제일 많이 사용된다고 한다.
    한국 개발팀서는 이 방식의 키보드를 많이 사용하지만 일본에서는 그렇게 눈에 띄지 않는다고 한다.

키캡(keycaps)

  • ABS: 제일 흔한 플라스틱 저가형 소재. 시간 지나면 누래지는 키보드들이 이 키캡이다. 방염방지 약품이 자외선 쐬면 나타나는 현상이라고 한다.
  • PVS: ABS와 비슷한 흔한 저가형 소재.
  • PBT: 좋은소재. 다만 가격이 위 소재들의 1.5~2배라고 한다.
  • POM: 체리에서 쓰이는듯?

사이즈

  • 풀: 비개발자들이 가장 많이 사용하는 오른쪽에 숫자판까지 다 달려있는 흔한 키보드.
  • tenkeyless : 오른쪽 숫자판이 없는 형태의 키보드.
  • ISO VS ANSI: ISO는 엔터가 ㄱ자, ANSI는 일자
  • 그외에 75% 60% qwerty 사이즈가 있다고 한다.

DIY

키보드 DIY를 위해서 가장 필요한 부분은 인내, 용기, 돈, 돈, 그리고 돈! 이라고 한다.
3D 프린터로 키보드 튜닝은 추천하지 않으셨는데 이유로는 키캡이 거칠고 3D 프린터로 뽑기에는 크기가 너무 크다는 것이었다..
흔히 하는 방식중 하나로는 레이저커터로 아크릴잘라서 쌓는식이라고 한다.
부품은 cherry MX가 alps보다 구하기가 좀 더 쉽다고 한다.
키보드 펌웨어는 새로 짜기에는 재미없고 단순작업이라 그리 보람있는 일은 아니기에 그냥 기존에 있는거 쓰는게 낫다고 하신다.

Bingo

Azure를 이용하여, 그 중에서도 메시지 Queue를 이용하여 빙고게임을 구현하고자 하셨지만,
구현이 미완성이었다.

Incidents Management

라쿠텐에서의 장애 대응에 대한 간단한 발표를 하셨다. 언급해도 되는 부분인지 모르겠지만..
오류가 오면 오류알림이 Bot으로 도달하면 자동으로 티켓이 업데이트가 되고, 개발자는 그 티켓을 보고 대응한뒤 Bot에 상태를 업데이트하여 통지를 하면,
티켓이 자동으로 업데이트가 되는 식으로 작동한다고 한다.

2016년 그리고 2017년

2016년의 막이 내리고 2017년이 밝았다.
2017년부터는 주1회씩 블로그 포스팅을 하고자 한다. 일일커밋과 비슷한 느낌으로 개발 관련 포스팅을 하고자 한다. 아주 조금이지만 읽어주는 사람이 있고, 설사 읽어주는 이 없더라도 내 개인적인 개발에도 도움이 되리라 믿기 때문에 다른 것보다도 블로그 포스팅을 열심히 해보고자 한다.

2016년 회사일

FreakOut에 입사한지 일년이 조금 더 지났다.

아직도 광고에 관해서 모르는 것이 많고 많이 배워나가는 단계다.

~ 6월: LINE Ad Platform

상반기에는 우리 FreakOut의 자회사 MTBurn에 파견되어 LINE에 광고를 배포하기 위한 플랫폼 개발에 시간을 보냈다. MTBurn에서 개발된 SSP(Supply Side Platform) Hike에 LINE에 필요한 프로토콜을 추가하여 개발하고 이를 위해 Go언어를 배우고 써보는 좋은 기회가 되었다.

애초에 SSP를 개발할때는 OpenRTB에 충실한 프로토콜을 구현하고자 하였으나, LINE에 광고를 내보내게 되면서 변형된 프로토콜을 많이 구현하게 되었다.

FreakOut에서의 업무도 같이 처리하였는데, 우리의 DSP를 Hike와 연결하는 부분을 구현하였다.

~ 10월 Video Ad for LINE

Hike를 통해 LINE Ad Platform과 성공적으로 연결하고, 그 다음 업무는 LINE에 동영상 포멧의 광고를 배포하는 것이었다.

상당히 어려운 부분이 있었는데, 라인의 광고를 사진, 동영상에 상관없이 같은 spot id로 오게 되어 있는데, 사진과 동영상의 광고가격 책정이 다르기 때문에, 내부 경매를 할 시에 참조해야되는 인덱스를 따로 써야되는 문제가 있었다.

이는 인덱스를 두 번 읽어야하기 때문에 시간적으로 퍼포먼스가 상당히 안좋아지는 문제가 생겼다. 이 부분의 해결을 위해서 단순히 연결하는 부분 이외에 우리의 DSP가 갖고 있던 여러가지 문제점들을 최적화하는데 많은 시간을 할애하였다.

다행히 시간을 줄이는데 성공하였고, 완전 만족스럽지는 않지만 실제로 배포를 하기에는 문제가 없는 수준까지는 만들었다. 앞으로 이 부분은 인프라 증설로 해결하지 않을까 생각된다.

~ 12월 Demographic targeting

LINE에 광고를 배포하게 되면서, LINE의 Demographic 정보(연령대, 성별)를 로그에 축적할수 있게 되었다. 이를 LINE면뿐만 아니라 다른 면에도 활용해보기 위한 프로젝트가 다음 업무였다.

우리 회사의 DMP에 audience_id를 기반으로 설정해놓은 segment로 Demographic정보를 추측하는 것이 주요 내용이었다. 단순히 Naive bayes를 사용하여 예측해봤는데 생각보다는 나쁘지 않았다. 예측 결과를 성별과 연령대를 따로 내는 것보다 [성별-연령대]를 묶어서 예측하는 것이 결과가 더 좋았다.

그리 복잡하고 어려운 프로젝트는 아니었지만, 그래도 하둡쪽의 소스코드도 많이 보게 되고, 회사에 들어와서 간단하지만 처음으로 해본 머신러닝 관련 프로젝트여서 상당히 뿌듯하게 한 프로젝트다.

업부면에서 느낀점

손으로 움직이기 전에 설계와 문서 정리부터..

내가 성격이 상당히 급한 편이라 개발자로서는 치명적인 약점인데, 이것을 여실히 느낀 한 해였다. 가장 많이 느꼈던 점은 코드리뷰를 내고 나서 다른 사람들에 비해서 상당히 많은 코멘트들과 리뷰를 받게 되는데, 한두번이 아니었기 때문에 이에 대해 생각을 해봤다.

나의 역량이 모자란 측면도 있었겠지만, 내가 할 수 있는 우선적인 일은 코딩을 시작하기 전에 설계부분에 좀 더 신경을 쓰고 문서 정리를 확실히 해놓는 습관을 들이는 것이다. 문서 정리는 이번 년도에 가장 신경 쓴 부분이고 매니저도 요구한 부분이었고, 매니저의 평가는 괜찮은 편이었다. 하지만 내 스스로 만족스러운 코드를 작성하기 위해서는 더욱 이부분에 충실해야하고, 더 많은 부분 세세한 부분들에 대해서 생각해야겠다고 느꼈다.

그 외 활동

외부 발표

큰 컨퍼런스는 아니고 매월하는 스터디긴하지만 외부에서 해본 첫 발표라 서툴기는 하고 어찌보면 아무것도 아닐수도 있지만 참 뜻깊게 생각한 발표다.

Cousera – Introduction to Natural Language Processing

스터디 발표를 준비하면서..

한인 개발자들끼리의 스터디가 최근 결정이 되었고 1회 모임을 가졌었으나, 나는 그날 모임에 참석하지 못했다. 1회 발표자였던 김현재군의 지목으로 2회 모임의 발표자를 제의 받았다. 나 역시 마침 지금 회사로 옮긴지 1년이 되어 1년동안 공부하고, 배우고, 일했던 내용을 정리할 좋은 기회라고 생각되어 선뜻 수락하였다. 지금 현재 발표는 무사히 마쳤고, 이번 글에서는 발표를 준비하면서 느낀 점들을 정리해보고자 한다.

 

 스터디는 청취, 청강보다는 발표를!

일하면서 많은 개발자님들의 글들에서도 볼 수 있고, 현 직장의 매니저도 강조하는 부분이다. 나 역시, 석사과정에서 수도없이 느꼈던 부분이고, 이번 발표를 준비하면서도 새삼 느꼈던 부분이다.

발표에서 가장 중요한 부분은 청중들이 알아들을 수 있는가이다.

이를 위해서는 해당 지식에 대해서 머리속에 잘 정리가 되어 있어야 하는 것이 기본이다. 머리속에 있는 지식을 입 밖으로 꺼내어 말로 전하기 위해서는 많은 연습도 필요하지만, 머리속에서 내용이 잘 정리되어 있지 않은 상태에서, 어렴풋이만 알고 있는 상태에서는 버벅대거나 청중들이 알아듣지 못할 말들만 나올 뿐이다. 특히, 단순한 내용 나열만이 아닌 청중들이 알아듣기 쉬운 표현으로 말을 하기 위해서는 발표에 필요한 지식들을 유기적으로 잘 이해하고 정리 할 필요가 있다. 어떤 내용을 어떤 순서로 전할지, 어떤 내용을 꼭 말하고, 어떤 내용을 말하면 이해에 방해가 되기에 생략할지… 모두 내용에 대한 이해가 없이는 불가능한 일이다.

이렇듯 청중들이 알기 쉬운 발표를 위해서는 기존에 알고 있는 내용도 정리하고, 매끄러운 진행을 위해서 여러 자료들을 찾아보고, 이것들을 내용에 넣고 빼는 일을 반복하면서 준비해야 한다. 또한, 예시나 예제까지 직접 준비한다면 내용 이해는 더욱 확실해 질 것이다. 이만한 공부 방법은 없다고 생각한다.

 

자신있게!

물론, 대단한 사람들, 대가들의 발표도 많이 있지만, 그렇지 못한 사람도 자신감을 갖고 과감히 발표자가 되도록 하자. (물론, 나도 아직 부단히 노력해야되는 부분이다.) 청중의 입장이 되어 생각해보면, 스터디에 참석하는 것은 전문적이고 상세한 내용을 알기 위해서도 있겠지만, 그보다는 새로운 내용과 그에 대한 개요(introduction) 및 간단한 팁을 얻고자 하는 목적이 더 크리라고 생각된다. 물론, 전자에 해당하는 스터디도 있으나, 후자의 케이스도 충분이 많았던 것으로 기억된다. 그렇기에 어려운 내용이 아닌, 자신이 알고 있는 지식만 확실하게 잘 정리하여 전달을 하는 것만으로도 그 발표는 충분히 가치가 있다.

나 역시 이 업계에서 대단한 실적을 올린 그런 개발자도 아니고, 경력도 아직 일천한 개발자이다. 그래서 청중들의 귀중한 시간을 망칠 수 없다는 생각에, 내가 할 수 있는 부분만 확실하게, 열심히 준비하였다.

겁 먹지 않고, 저지르고 보는 것이 필요하다. 자신있게!

일본에서 일하면서 듣는 질문들(취업)

일본에서 일하다 보면 많이 듣게되는 질문들이 있는데, 오늘은 이에 대해 포스팅을 써볼까 합니다.

일본에서 일하기 위해서 일본어는 어느정도 해야됩니까?

사실 워낙 case by case라 모든 질문에 대한 답은 이 문구를 앞에 달고 한다는 것을 전제로 하겠습니다. 그리고 소프트웨어 엔지니어로서의 입장을 얘기하는 것 또한 전제해두겠습니다.

일본어를 못해도 일을 할 수 있고 취업을 할 수 있습니다. 실제로 라쿠텐같은 경우는 회사 공용어로 영어를 사용하여 토익 800만 넘으면 지원이 가능하고 실제로 일본에서는 토익 800을 넘는것이 부담스러워 일본인들도 넣는 것을 어려워하는 점도 있습니다. 실제로 외국인의 비율이 점점 늘고 있다는 라쿠텐 출신의 저희 회사 엔지니어도 말하고 있습니다. 라인 같은 경우에도 일본어를 못해도 입사 자체에는 지장이 없는 것으로 알고 있고.. 저희 회사도 실제로 중국인 엔지니어가 일본어를 거의 못하는 상태로 입사하였습니다.

그러나 일본어가 안된다면 취업 자체는 가능할지 모르나, 본인 스스로가 일을 하면서 불편함을 겪게 되는 점이 가장 큰 문제가 될 것이고, 이것이 간혹 퍼포먼스로 이어질 수가 있습니다. 라쿠텐 같은 경우는 영어가 공용어라고는 하나, 일본인과 의사소통할때는 아무래도 영어가 잘 통하지 않는 경우도 있다고 합니다. 저희 회사 같은 경우는 일본어가 안되는 외국인은  영어로 진행해도 별 무리가 없는 포지션에 있는 경우가 대부분이긴 합니다만, 다른 포지션에서는 영어로 커뮤니케이션이 힘든 팀도 분명 있습니다.

그리고 일본어가 전혀 안되는 상황이어도 뛰어난 실력을 입증할 수 있으면 입사에 큰 문제는 없다고 생각됩니다.

특히, 신졸로 신입으로 들어오는 직원의 경우 미친듯이 뛰어난 이력이나 경력이 아니어도, 포텐셜을 보고 채용한 후 일본어 교육을 실시하는 경우도 있으니, 일단 부딪혀보는게 좋지 않을까 생각됩니다.

일본의 현재 취업 상황은 어떤가요?

여러가지가 맞물려 취업 경기가 괜찮은 편입니다. 베이비붐 세대가 은퇴하는 점도 있고, 일본도 한국과 마찬가지로 소프트웨어 엔지니어에 대한 수요가 필요한 상황입니다. 특히, 게임 업계 같은 경우에는 유니티 엔지니어가 상당히 모자란 상태인데, 이는 분명 한국 엔지니어들에게 유리한 상황이라고 생각합니다.

백엔드 엔지니어, 머신러닝 엔지니어들에 대한 수요도 많이 필요로 하는 상황입니다.

초봉 & 연봉상승은 어느정도 되나요?

보통 신졸은 300~350 받는 경우가 많고, 그외에 게임업계 같은 경우가 돈을 더 주는 경우가 많습니다. 그리고 상여는 연2회정도 나오고.. 교통비는 물론 지원됩니다.(안 해주면 일본의 철도값 감당 못합니다.) 그리고 회사에 따라서는 주택수당 혹은 주택보조를 해주는 경우도 있는데, 이 경우에 독신의 경우에는 상당히 도움이 됩니다.

여기에 세금 같은 경우에는 보통 보험+소득세로 15%정도 띄인다고 보면 되고, 주민세는 부양가족이 얼마나 있는지에 따라서 다른데 이는 저도 아직은 정확하지가 않아 나중에 따로 포스팅 올리겠습니다.

연봉상승 같은경우에는 저도 아직 그렇게 사회생활을 길게 한 것이 아니라 잘은 모르겠지만, 오르는 폭이 확 크지는 않은 것으로 알고 있습니다. 최근에는 일본 역시 장기근속이 미덕이던 시대는 지나고, 이직을 통해 몸값을 올리는 케이스가 많은것 같습니다. 적어도 엔지니어에게는..

일본의 업무 환경은 어떤가요?

퇴근 & 야근 & 야근수당

일본도 물론 야근과 퇴근시간에 대한 상사, 팀의 눈치보기가 없는건 아닙니다. 한국의 그런 문화들은 아마도 일본에서 유입되었을 것 같으니.. 다만, 한국에 비해서 체감상은 심하지는 않다고 생각됩니다. 특히, 상사가 퇴근 못한다고 눈치보면서 퇴근 못하는 그런건 거의 없다고 봅니다. 업무자체가 많아서 야근하는건 있지만..

그리고 대부분의 회사에는 월 45시간이 넘어가면 야근수당을 지급하도록 되어있습니다. 야근수당을 지급하지 않는 일본회사는 거의 없고, 있다면 이미 블랙회사로 악명이 자자할 것입니다. 그리고 한 직원이 월 45시간을 넘어가는 것이 일정이상 되면 정부차원에서 경고를 받는것으로 알고 있습니다. 그래서 일본에서도 정직원들의 야근시간에 대하여 신경을 쓰는 편입니다.

여기서 함정은 간혹 저런 현상을 피하기 위해 퇴근계에는 정시퇴근이라고 찍고 야근을 하는 직원도 있긴합니다만.. (제 이전 사수가…) 그건 개인의 성격문제라 봅니다. 저걸 강요하는 회사라면 블랙회사이니, 애초에 잘 알아보고 안갈수 있도록 해야죠.

업무 스타일 & 회식

업무 스타일은 한국보다 업무시간에 좀 더 집중하는 분위기랄까.. 한국에서 일해본 경험은 적지만, 업무시간에 좀 더 우직하게 업무에 집중하는 분위기(혹은 우직하게 업무에 집중하는 척)입니다. 딱히, 티타임 내지 담배타임 등의 시간으로 보내는 시간은 거의 없는 편입니다.

회식 같은 경우에는 간혹 있긴 합니다만, 대부분의 회식은 각자 부담이기 때문에 오라고 딱히 강요하지도 않습니다. 그걸 가지 않는다고 업무나 평가에 반영되는 분위기도 아니고.. 회식문화 안 좋아하는 분들에게는 다른건 몰라도 이 점만큼은 일본이 편하지 않을까 생각됩니다.

한국계..

간혹 비자를 얻기 쉽게 얻기위해, 한국계 인력파견 업체 혹은 한국계 SI업체로 취업을 하여 건너오는 분들이 계신데, 잘 알아보고 오시는 것이 좋다고 생각합니다. 사실, 여러 문화가 공존하는 회사문화는 각 문화의 어떤점들이 융화 되는가가 중요한데, 이런 한국계 등은 한국과 일본의 안 좋은 점들을 섞어놓은 경우가 많은 것으로 알고 있습니다.

물론, 라인같은 좋은 기업도 있지만, 잘 알아보시는게 좋다고 생각합니다. 특히, 취업 계약 과정에서 뭔가 석연찮은 부분이 있으면 취업 후에 블랙일 확률이 높으니 피하시는게 좋다고 봅니다. 예를들면, 취업비자도 안 나왔는데 우선 관광비자로 일하라고 시킨다던가.. 시용기간 중에는 월급은 반토막 내버린다던가.. 그런 경우도 있다고 하니 잘 알아보시길 바랍니다.

일본 취업에 도움이 될만한 사이트 및 에이전트

아래에 생각나는 사이트들을 적고 이번 포스팅은 마치겠습니다. 다른 질문들도 몇 개 더 있는데 그건 다음 포스팅에..

Work in Japan : http://www.workinjapan.co.kr/

Top Career: http://www.topcareer.jp/

Global Touch: http://cafe.daum.net/globaltouch

그 외에 외국계 중심으로 연결시켜주는 Robert Walters(제가 최근 이직에 이용한 에이전트) 등이 있는데, 이런데는 개인적으로 문의를 주시는 것이 좋을 것 같습니다. 상황이 허락한다면 제가 도움을 드릴 수 있을지도 모르겠습니다.

 

 

 

 

 

 

 

 

中途採用、FreakOut Inc.

 이전 회사에 입사한지 1년도 채 되지 않은 10개월차. 과감히 회사를 옮기기로 결정하였다.

지금 회사의 상황이 생각보다 별로 좋지 않고, 좀 더 재미있는 일을 하고 싶었다. 머신러닝과 관련된 분야가 새로운 알고리즘 개발과 같은 내가 추구하는 일과도 좀 더 맞지 않을까하는 생각에 고민을 하던 차에 회사 상황도 그렇게 되어 이직을 결심하였다.

LinkedIn을 통해서 여러 에이전트들이 말을 걸었고, 이직에 관심 없을때는 무시하던 메일들에 답변을 하기 시작하면서 이직활동에 시동을 걸었다. 에이전트와 직접 만나 상담을 하고, 해당 에이전트의 회사의 여러 에이전트로부터 여러 군데 기업을 소개받기 시작하였다. 처음에는 서양계 회사들 중심으로 생각하다가 점점 여러군데 넣기 시작하였다.

그러던 도중 도쿄 한인 미트업에서 FreakOut에 대한 간단한 발표를 들었고, 해결할 재미있는 문제들에 대해 다루는 회사라고 판단되었고, 마침 에이전트의 클라이언트 사에 포함되어 있기도 하여, 에이전트를 통해서 지원하였다.

면접은 대부분 무난한 질문들이었다. 특별히 어려운 질문에 대해 파고들기보다는 여러가지 내가 해왔던 것들에 대한 소개가 대부분이었다. 다만, 가장 큰 문제는 나의 회사 경력이 일천하다는 점이었는데, 새로운 기술에 대한 도전에 대한 부분에 대하여 어필을 하려고 노력하였다. 특히, 빠른 시간에 더 많은 트래픽을 처리해야되는 환경에서 일하고 싶고, 그것이 알고리즘에 대해 주로 연구하고 공부해온 내가 일하기에 적합하다는 점을 어필하였다.

내정을 받기는 하였지만, 내 회사경력이 아직 일천하여 가능성을 보고 내정을 통보하였다는 회사 말에 협상의 여지는 크지 않았고, 백프로 만족할만큼 연봉을 올려받지는 못하였지만, 그래도 금전적으로도 단기적으로나 장기적으로 지금 회사보다 유리하다고 판단하였고, 일에 대한 적성도 맞을것 같아서 현재는 이직 결과에 대해 만족한다.

2014秋新卒、Work in Japan, DRECOM 합격수기.

 

2014.7.28에 Work in Japan 카페에 올린 합격수기 입니다.


 

이력


일단 저의 이력을 공개하는 것이 지원자분들께서 참고하기 좋을 것 같아 공개합니다.
이력서에 담았던 내용들은 이 곳 링크의 내용과 비슷합니다.

https://jp.linkedin.com/in/ahnsoohan

수상경력 같은 경우에는 고교시절의 것이 좀 많이 있어서 넣어야되나 고민했는데,
넣어서 손해보지는 않은 것 같습니다. 전공 관련 수상이기에 일단은 적는게 좋겠다고 생각하여 적었습니다.

서류 지원, 필기시험 (국내에서의 프로세스)


이런식으로 이력서를 작성하여 지원을 하였고, 필기시험을 봤습니다.
필기시험은 난이도가 높지 않았습니다. 거의 다 맞추지 않았나? 싶은 정도였고,
시중에 파는 인적성 검사 문제중에서 쉬운 편의 문제들만 나온다고 생각하시면 될 것 같습니다.

그리고 리쿠르터와의 간단한 면접이 있었는데,
여기서는 간단한 자기 소개 이후에, 제가 했던 전공부분들을 얘기하고,
지원할 기업을 선택합니다.

저는 이 자리에서 세개의 기업에 지원하였습니다.

  • DeNA
  • DRECOM(ドリコム)
  • Yahoo! Japan

이후에 야후재팬은 서류탈락되었고,

DeNA에서는 인터넷을 통해 추가적으로 인적성 시험을 봤습니다.
인적성 시험의 난이도는 극악이었습니다.
제 스스로 인적성 검사와 같은 시험에는 강하다고 생각했는데,
손도 못댈만한 문제들이 매우 많았습니다.
결국에 DeNA의 전형은 여기서 탈락으로 끝이 났습니다.

DRECOM에서는 화상으로 면접을 1회 실시하였습니다.
이 자리에서 DRECOM의 HR담당자와 일본어로 면접을 진행하였는데, 일본어를 못하셔도 무방합니다.
(일본어 부분은 이후에 더 설명 드리겠습니다.)
면접내용은 자기소개, 일본으로 취직하고 싶은 이유, 그동안 해왔던 프로젝트 등에 대하여 얘기하였습니다.
사실 기술적으로 깊게 들어가는 면접은 아니었습니다.

이렇게 면접을 진행하고 DRECOM과는 다음 프로세스로 계속 진행되었고,
이후에 추가적으로 GeePlus라는 회사와도 면접을 진행하게 되었습니다.

일본에서의 프로세스.


이때 부터는 일본으로 건너가서 면접을 진행하였습니다.
숙소는 이케부쿠로 선샤인 시티 호텔에서 4박5일간 묵었습니다.
첫날은 현지 리쿠르터들과 면접에 대한 연습을 진행하였는데,
자기 소개와 일본에 취업하고 싶은 이유에 대해서 정확히 생각하고 갈것을 요구했었습니다.

도쿄역에 부근에 있는 일본 Recruit사에서 진행되었고, 아침 8시부터 저녁 6~8시까지 진행되는 강행군이었는데,
사실 대기 시간이 대부분입니다.

GeePlus

면접이 1회 진행되었습니다.
게임 개발을 진행하는 회사고, GREE사와 합작하여 설립된 회사라는 정도를 알고 있었습니다.
면접 내용은 이후에 적을 DRECOM과 흡사합니다.
이 회사와는 면접이후에 다른 진행사항은 없이 탈락을 통보받았습니다.

DRECOM(ドリコム)

결론부터 말하면 제가 현재 내정을 받은 회사입니다.
크게 세가지 사업을 하고 있는 회사입니다. 게임개발이 중심이고, 소셜러닝, 광고 솔루션 등의 사업에도 관여하고 있습니다.
이 회사는 다른 회사에 비해서 일정과 면접이 좀 더 타이트하게 진행되었습니다.
둘째날 다른 업체에 지원한 지원자들 보다 더 빠르게 숙소에서 출발하여, 아침 9시부터는 한시간정도 기업에 대한 설명이 있었습니다.
저를 제외하고 20명이 좀 넘는 인원이 있었는데, 저말고는 전부 중국인이었고, 일본어를 전혀 못하는 중국인도 반 이상이었기에, 중국인 지원자들을 위한 통역도 같이 진행되었습니다. 한국인을 위한 통역은… 없었습니다. 제가 일본어가 되는 점이 다행이었습니다.

1차 면접이 오전에, 그리고 2차면접이 오후에 있었습니다.
면접의 내용은 역시 앞에서 설명한바와 같이 면접내용은 자기소개, 일본으로 취직하고 싶은 이유가 위주였고,
그 이외에는 제가 했던 프로젝트 부분이나 언어, 공부한 내용등을 물어 봤습니다.
역시 기술적으로 그렇게 깊이 들어가는 면접은 아니었습니다.
그나마 제가 생각할만한 포인트는, 마지막에 질문시간이었는데, 이때 저는 오히려 역으로 제가 면접관이 된것 마냥 이것저것 많은 질문을 했고,
회사에 대하여 정말 많이 물어봤습니다. 마지막에 질문시간은 꼭 주어졌는데, 여기서 열심히 질문을 하는 그럼 모습들이 면접관들에게 좋은 인상을 심어주지 않을까 생각해봅니다.

주요 질문 내용은,

  • 회사에서 앞으로 어떤 식으로 게임을 개발할 것인지?
  • 주로 사용하는 언어가 무엇인지?
  • 회사에서는 기술적으로는 어떤 면에 주목하고 있는지?
  • 어떤 사람을 회사에서 선호하는지?

등등 최대한 이것저것 많이 생각해내려고 했습니다.

그렇게 면접이 끝나고 다음날 오후에는 3차로 임원 면접이 있었습니다.
사장님과 부사장님이 들어오셨는데, 여기서도 면접의 내용은 얼추 비슷합니다.
다만 부사장님께서 약간의 압박을 주시긴했습니다.
일본에 왜 취업하고 싶은가에 대한 질문에, 새로운 시장과 유저를 위해 일해보고 싶다라고 했더니,
그럼 한국 유저나 시장을 상대로한 일은 재미없고 하기 싫은 것이냐 라는 식으로 면접 내내 안받던 압박을 처음으로 받았습니다.
그래도 적당히 잘 넘어간 것 같습니다.

셋째날 면접이 끝나고 저녁에는 회사 임원분들과 인사담당자와 같이 저녁 식사를 하러 긴자에 있는 식당에 갔습니다.
20명이 넘던 인원이 여기서 5명으로 추려졌습니다.
리크루터분께서 저희 5명에게 이 저녁식사도 면접의 일환이라고 생각하라고 미리 귀띔을 해주었습니다.
5명은 식사를 하면서 끊임없이 임원분들과 얘기하였고, 회사에 대한 질문, 생활에 대한 질문도 끊임 없이 하도록 노력하였습니다.
제가 면접 막판에 질문을 열심히 하기위해 생각해두었던 것들이 도움이 된 것 같습니다.

그렇게 저녁 식사를 마치고, 호텔로 돌아오는 도중에 마지막 길을 건너기 직전에 리크루터가 저희를 세우더니,
저희 5명중 3명에게 너희 합격, 나머지 불합격. 이런 통보를 하는 것입니다.
참 뜬금없는 통보지만, 뭐 일단 저는 합격했습니다.
오퍼를 받은 세명중에 한명은 아예 일본어가 안되는 중국인이었습니다.
엔지니어를 뽑는데는 일본어가 당장은 그리 중요한것 같지는 않습니다.

넷째날에는 오전에는 좀 여유있게 보내고, 오후부터 회사 본사 견학을 갔습니다.
그리고 수당이나 인사시스템등에 대한 간단한 브리핑을 받고, 내정 계약서를 받습니다.
당장 사인할 필요는 없고, 한국에 갖고 와서 추후에 사인하여 보내줬습니다.
그리고 저녁때는 회사내 카페에서 간단한 식사겸 환영식을 하였습니다.

그렇게 일본에서의 일정이 마무리 됩니다.
사실, 초반에 면접에서 탈락이 되면 일본에서의 일정은 많이 널럴해지고 관광도 다녀오고 하는데,
끝까지 살아남으면 그런 기쁨은 없어집니다. 밤에 맥주한잔정도 하면서 피로를 푸는정도? 가능하더랍니다.

그 이후


그 이후에는 일주일에 1,2회정도 회사에서 제공해주는 일본어 교육을 온라인상으로 받고,
개발기술 책도 한움큼 받고, 간단한 기술개발 과제도 부여받아 진행하였습니다.
그렇게 큰 부담을 가질만한 과정은 아니었습니다.

그리고 지금은 비자 관련 수속을 마치고, 집 구하는 것을 알아보고 있으면서, 실컷 놀고 있습니다.

맺음말 & 면접 관련


면접 관련하여 가장 포인트는 자기 소개와 일본에 취업하고 싶은 이유입니다.
자기 소개야 본인에 맞게 잘 또박또박 말하면 될테고, 후자가 좀 생각보다 명확하지 않을수 있습니다.
일본에 취업하고 싶은 이유로 여자친구/남자친구가 일본에 있어서, 일본 애니나 게임이 좋아서, 일본 드라마에 감명받아서.
뭐 이런식으로 말하면 면접관이라면 납득을 할까요? 아닐겁니다.

저같은 경우에는 일본어가 되고, 소프트웨어 개발 관련으로 공부를 많이 했기때문에 두가지가 다 되기 때문에,
일본에서 일하면 내 능력을 잘 발휘 할 수 있을것이다. 그리고 일본 유저나 시장은 경험해보지 않았기때문에, 새로운 환경에 대한 기대감도 크다.

뭐 이런식으로 어필했습니다. 더 좋은 답이 있으면 그대로 해도 좋을 것 같고요.

제가 생각하는 일본취업에서의 가장 중요한 점은 자기 어필과 적극성인 것 같습니다.
기술적인 질문은 크게 들어오지 않으니 면접에서의 의지를 어필하는 것이 중요하지 않을까 생각해봅니다.

참 글이 두서없이 길어졌는데, 추후의 지원자분들께 도움이 되었으면 좋겠습니다.