BASE,inc 藤川(えふしん)氏「エンジニアの技術力とは、技術で期待に応えていける人」

2015年9月3日開催「HACKER’S MEETUP[BOOST]#01;」にて登壇された、えふしんこと藤川真一氏の登壇内容を書き起こした記事です。

成長するエンジニアとそうでないエンジニア

大変耳の痛い話でしたね。っていう話も一つなんですけど、お題として一つ頂いた「成長するエンジニアとそうでないエンジニア」という内容で話をさせていただければと思います。BASE,incの藤川と申します。よろしくお願いします。

まず自己紹介ですけど、ネットでは「えふしん」という名前で活動しています。今までネットのキャリアとしましては、2000年ぐらいに最初デジハリにいって、そのあと受託の会社に誘われて、Web2.0の時代にペパボ、今のGMOペパボという会社にいって、そこで家入さんと仕事して、そのあとペパボいるときに「モバツイ」っていう、ツイッターを携帯でやるサービスを作りました。

その後それを使って独立して、それを会社売却した後に、BASEとちょうど知り合ったので、BASEの顧問技術をやりながら、ツイキャスっていうサービス、自分の顔とかを生中継して会話をするサービスに、一応社員として関わるようになりました。

あとは慶応義塾大学のメディアデザイン研究科っていうところの大学院のところに行っていて、ツイキャスに入ったときには、ツイキャスをやりながら大学院生やって、BASEにも週一行って、自分の会社も一応持っていて、今も持ってるんですけど、”ShopCard.me”というiPhoneアプリを作りながら、っていうわけのわからない人生を送ってきました。

そのあとBASEが資金調達を行ったり、会社が成長してちょっと手伝いを強化をするということで、1月くらいにCTOとして入って、取締役をやっております。
BASEという会社は、完全無料のネットショップ構築サービスから始めたサービスで、「お母さんでも使えるショップサービス」です。あと近々PAY.JPっていう決済サービスをやります。

BASEが、楽天さんとかカラーミーショップも、楽天さんで言えばRMS、カラーミーショップはカラーミーショップとか、そういう簡単にショップをつくるという、CMS+クレジットカード決済機能みたいなものにすると、BASEのPAY.JPは競合的な話をすると、海外の「Stripe」とか、日本だったら「WebPay」さん、今LINEに買収されましたけど、LINEPayの一部分。

そういうサービスと同じようにAPIの決済として、そのあとゆくゆくは「PayPal」みたいに、簡単にものが買える機能を提供していきたい。BASEが簡単に物を売れるとしたら、Payは簡単に物を買えるというものを、2軸でやっていこうということで、やってます。技術的にはちょうど今、採用をやっていて、デザイナーとかももちろんつける。

BASEはCakePHPとかAWSでやってる。PAY.JPは完全に違って、PythonAWSとか。あとはそろそろ人数が増えてきちゃったんで、戦えるサーバー管理して、データ解析とかできる人を探しているんですけど、簡単に見つからなくてどうしよう。というところです。

「技術力」と「それ以外」の違いとは?

そんなような話の延長線上で、成長するエンジニアの話を考えてきました。よく、技術力があるとか、技術力がないとかいうじゃないですか。技術力ってなによ。定義がわかんないんですね。技術力ってなに?っていったときに何て答える?

パッとあげてみたんですけど、「誰も作れないもの作れる」とか、「みんなができないものをできる」、「素早く正確にコードを書ける」、「バグをつくらない」、「バグを見つけられる」、他人のバグを見つけるのもすごい技術がいる、知識がいる。あとは「未知のことにチャレンジする」とか、「他人が作った仕様とかコードをちゃんと理解する」とかも、やっぱり技術力がいる。

多分これ全部、技術力のうちなんだ。もうちょい具体的にいうと、みなさんが大好きなRaisを素早く書けるとか。最近のことをいうと、CとかGoとか、Rとかで、すごい高速だったりとか、並列処理が本当にできますとか。あとはさっきのデータ解析の事例でいうと、Hadoopとか、Rとか、Pythonの機械学習のほとんどが書けるとか、アルゴリズムをきっちりわかってるとか。こういうことって大事ですよね。

あとオープンソース自分で管理してることもだし、そうでなくとも、一サービスの中でユーザーさんに喜んでいただけるサービスをしっかり安定的に提供することも、すごく大事なことです。

じゃあこれに対して、技術力じゃないものもあげてみようかなと思って、あげてみた。
例えば「商品企画力」「マーケティング」「営業力」「プレゼン」「英語が読める」とか。これ、けっこうなんかエンジニアの技術力に入りません?って感じになって、ネットで技術力っていう話が上がっていると絶対これ入ってるんですよ。

最近「ウェブの残念などうのこうの」っていう話があって、とある会社さんを結構ネガティブに叩いてる記事がありました。でもそこで書いてあることって、実は技術力じゃなくて、「商品企画力」とか「マーケティング」とかそっちだったりとか。もしくはもう少し市場的な話で行くと、なんかいろいろタイミングもあるしとか、そういうの全部ひっくるめて技術力って言われちゃってるなあと。

なんかこの記事が結構あって、この記事見ました?見ていない方がいたら説明しますけど、こんなタイトルの記事があって、ちょっと面白かったです。要するに、この会社さんの元エンジニアの人が、昔こういう理由で、やめたんですよと、その自分たちがおとしめられてるような記事がちょっとあったので、それに対して正しく反発するというような意図なんですが、まぁ、詳しくは調べてください。

そのあとTwitterをみてて、結構いいRTがあったんです。その前にKさん、あー言っちゃった、この会社の人が、結構技術力についてツイートされてるんですよ。ちょっと言いづらいんですけど、Kさんの思想がこういう人たちと合ってないなっていうのがわかっちゃって、そういうこと言ってる人を見つけました。

要するにこちらの人はCのレイヤーとかが好きなんです。そこを技術力だとしているので、もっと上流の、割とそのなんだろ、Webってコピペでもコード書けるじゃないですか。そういう人たちに技術力がないよねっていうのが、思想のバックグラウンドにあるかなって。それが多分、思想のいろんな、もろもろの軋轢につながってくるんだと僕は勝手に思ってる。

この人結構いいこと言ってるなと思ってて、まず一部に突出して極める人がまず軽視されているのもったいないし、かつ一分野を極めることだって難しいし、たくさんあるのも大変だし、それぞれのレイヤーでいろいろ定義がありますよね。Webで早いコードを書くのは求めていない。

早いっていうのは処理速度っていうことですけどね。おそらくCの処理速度は求めていない。当然です。間にHTTPの通信があるので、サーバーサイドがいくら早くても、通信、HTTPにまるめこまれちゃうのでノイズしちゃう。まあ、そういう話ですよね。

最後ウェブエンジニアの戦場はセキュリティだと思う。って言っていて、いいなと思ったんですけど。とにかく、一つの定義で語れる話じゃねえなって思ったんですよね。

いいエンジニアとは、「期待を作り、期待に答えられる人」

ここからつまんない話になっちゃうんですけど、当たり前の話しかしません。良いエンジニアっていうのは結局これだと思っています。「期待を作りだし、期待に応えられる人」です。

Webのエンジニアにおいて、プロダクトをつくり与えられた仕事だけをやるだけだったら、「期待を作り出す」ことはできません。でも、エンジニアに関していうと、それは実はできる。いいプロダクト、いいプログラムを作りだすことで、これ良くない?みたいな感じの提案ができる。

それに対して、安定的に動くとか、使いやすいシステムを提供するとか、楽しくなるよね、みたいな感じで期待に応えてあげると、それはよいユーザーエクスペリエンスを、大きく実現したといえると思います。こういうシンプルな組み合わせの解釈。

ケーススタディ的に、BASEはどういうサービスとしてやっていますかというところを少し。うちは「お母さんでも作れるネットショップ構築サービス」です。だから、お母さんが作れないものは提供しません。僕らは内部の倫理として、この機能、お母さんは使うかなっていうところがすごい魔力を持っていて、使わないとなったものはやらないっていうことですね。

デザインファーストって言っているんですけど、普通は仕様から始まるところを、デザインから入ります。なので表はとにかくシンプル、裏はいくらでも複雑でもいい。そこはエンジニアリングが頑張ればいいので、Googleの検索窓がある意味理想ですよね。裏はめちゃめちゃ複雑なアルゴリズムをやっているけれど、表は一個の窓口。昔のGoogleですよ。なので表面的にすごいことっていうのは、やってもいいんですけど、そこが別に見せるところじゃないですよね。徹底的に使いやすさを考えた上で、その技術を選ぶことが、やっぱり求められている。

次にPAY.JPのケースとしては、こっちはシステム間のゲストのAPIの決済サービスですと。とにかく安定性こそ命。決済だからね。安定性こそが命で、ただ制約が少ない。管理画面とかって、そこまでって言ったら怒られちゃうけど、BASEほど重要じゃない。ものを売る機能ではないので。なので制約が少なくて、自由に技術選択できるから、全部判断を任せたら、今Reactでやってる。

サーバーサイドも最初はReactでやってたんですけど、なんか途中で、これはこのまま進んだらやばいんじゃないかっていうのを彼ら自身が言い出して、サーバーサイドはPython、フロントはReactになりました。なかなかいい選択だと思います。

技術で期待に応えていくこと

この二つのサービスのどっちか優先することを求められた時に、どう答えるかっていうのは、人それぞれどっちが好きか。ほかにも、いろんな会社を並べていくとわかると思うんですけど、まあ好きなところを選べばいいんじゃないかなと。ただそういうなかで一番これから大切なのは、これじゃないかなと。「期待してくれてる人たちと、噛み合ってること」その、自分がやりたいと思ったことが、そのコミュニティ、そのグループのなかで噛み合ってるからこそ、お互い期待するし、応えられるし、信頼を得られる。

なので、それに合わせてステージを変えたいのもよいですし、もしくは、自分たちでステージを作ったりとかもできるんだよね。僕がわりと思っているのは、僕が大学卒業してプログラマになる時に、その狭い視野では、あんまりコンピュータプログラムおもしろそうじゃねえなって思ってて、いかなかったんですね。

製造業に行ったんです。あとからWebにきました。このコンピューターサイエンスの序列だったりとか、いわゆる工学的な、なにが合理的かみたいな話も、転換して、今はコンテンツとかメディアだったりとか、そもそも生活に密着して、コンピューターシステムが生活の一部になっていますよね。使ってもらえるというコニピュータビジネスが、面白いと思ってきたんです。そういったのって大事かなと。

そういう感じで仕事していくんですけど、期待に応える、期待って例えば上司とかから何か仕事が与えられた時って、期待だと思うですよね。それをこなすわけですよ。こなすのも理想をいうと、ちょっといいものとか、ちょっとスピード早くこなすのって大事です。そうして適切に期待に応えると、それに対しての信頼が生まれるんですね。

新入社員で、ちょっとこれやってよ、っていうちっちゃい仕事をきっちりこなすっていうので、信頼が生まれる。そうするとサービスだとブランドができる。それによって、もっとこういうふうなものができない?っていって新しい期待が生まれて、期待に応えると、また信頼が生まれる。

このループ構造ですね。これが基本的な仕事のありようなんですけど、これをまあ技術力で実現するのがエンジニアだなと思ってます。なので、期待を作りだし、期待に応えると、信頼が生まれる。信頼は新たな期待を生み出し、さらに期待に応えていく。そうすると本人は自動的に成長するわけですよ。

たったこれだけの話を言いたかったんですけど、それが、自分たちの技術だったりとか、今の会社だったりとか、会社が目指す方向に対して先回りしていくことで、新しい期待を得られる。

つまり、新事業を考えている時に、担当させてもらえる人と、担当させてもらえない人の差っていうのは、日常的に期待に応えてるかどうかだと思うんです。日常的に先を見せているというか、この人だったらできるかなって思わせれば、アサインされる。この人だったら難しいかなっていうと、ちょっとやめておこうかなっていう話になるわけですね。

そうすると技術力が上がるし、社内の効果が上がるし、会社もビジネスも大きくなれば、給料も上がる。なのであなたは誰の、どういう期待に応えられるのが楽しいですか?っていうところで話を終わらせていただきます。

当記事の元になるイベントの紹介はこちら:「日本発のオープンソースで世界を目指す。MAISIN&CO.のイベント「HACKER’SMEETUP [BOOST]#01;」に行ってきました。」