Skip to content

Instantly share code, notes, and snippets.

View kenichi-fukushima's full-sized avatar

Kenichi Fukushima kenichi-fukushima

View GitHub Profile
@kenichi-fukushima
kenichi-fukushima / google.md
Last active March 2, 2024 13:56
未経験から独学でプログラミングを身につけて新卒でグーグルに入った話

2008年に新卒でソフトウェアエンジニアとしてグーグルに入社しました。2019年時点ですでに退職しています。

学生時代

東京大学の電子電気情報学科という申し訳程度にコンピューターサイエンスをかじっているところから、そのまま修士課程に進学しました。研究分野は自然言語処理でした。大学がつまらなくて行かなくなった時期があり、留年して学部2年生を2回やっています。ただ勉強はかなりできたほうだと自覚しています。線形代数の試験で満点を取って授業中に名前を読み上げられたのを覚えています。大学院に進学してからは研究が面白くて土日や正月も関係なく研究室に通っていました。1月3日にどうせ誰もいないだろうと思いながら研究室に行ったら普段は忙しくて姿を見せない教授がいたのには驚きました。

プログラミングの経験

プログラミングは大学に入ってから99%独学で身につけました。所属していたサークルのウェブサイトの管理をやることになったのがきっかけで、手打ちのHTMLを少しだけ書き変えることから始まり、JavaScriptでダイアログを出したり、Perlで掲示板CGIをつくったりと少しずつステップアップしていきました。できることが増えるたびに作りたいものが増え、作るたびにできることが増えと、どんどんプログラミングに没頭していきました。

最初の1〜2年のあいだは周囲にプログラミングをする人がいなかったので独りで手探りでやっていました。また、時代的にも、自分自身のリテラシー的にも、ウェブで自分が知りたいことをピンポイントで見つけることは現実的ではありませんでした。なのでプログラミングやコンピューターの知識はもっぱら本で身につけました。大学の図書館や本屋に通って棚の端から端まで目をとおしては今の自分に必要な知識を授けてくれそうな本を探すという毎日を送っていました。これはとても効率の悪いやりかたで、標準ライブラリ以外の、いわゆるサードパーティー製ライブラリというものがあることをしばらくのあいだ知らずにいて、ウェブクローラーをつくるのに生のTCPソケットの上に自前でHTTPを実装するところから始めるというような感じでした。大学を留年して暇を持てあましていたからできたのだと思いますが、このときのあらゆる困難を自力でブルドーザーのように薙ぎ倒していった経験は今でも自身のよりどころになっています。

@kenichi-fukushima
kenichi-fukushima / return_value_optimization.cpp
Created September 11, 2018 03:04
No copy on returning a local variable
// How to run it:
// $ g++ --std=c++11 ~/return_value_optimization.cpp && ./a.out
//
// Output is
// copying obj1
// obj2 is not copied.
#include <iostream>
#include <string>
-> cordova-plugin-dialogs
cordova-plugin-dialogs (1.2.0) - Analyzing on iOS 8.0 platform.
Preparing
Analyzing dependencies
Inspecting targets to integrate
Using `ARCHS` setting to build architectures of target `Pods-App`: (``)
import re
import sys
def ToScreamingSnakeCase(s):
return '_'.join([m.group().upper() for m in re.finditer(r'[A-Z][a-z]*', s)])
for line in sys.stdin:
print ToScreamingSnakeCase(line)