6年勤めたNTTを退職した人の同期だけど私も6年勤めたNTTを退職しました

 

f:id:hichihara:20181130220331j:plain

6年間通った職場

 

11月末付で6年勤めたNTTを退職しました。色々と話題のkumagiとは同期入社で同じ研究所、同じ部署、ブースは2個くらい離れたところでソフトウェアエンジニアをしていました。

 

kumagi.hatenablog.com

 

長いようで短かった日々ですが、本当に満ち足りた思いでいっぱいです、関係者の方々には大変お世話になりました。

 

振り返り 

2012年に入社したときに配属になった先はクラウド基盤開発を行っている部署でした。てっきり研究ができるものだと思っていたので、どうしたものかと最初は戸惑っていましたが、気づけば開発の沼へとどっぷりと浸かり、なんやかんやあってOSS活動に目覚め、OpenStack Neutronのコミッタ(コアレビューア)になって、最近はコンテナ周りのネットワークなどを中心に活動しています。

研究所について

NTTの持株と呼ばれる組織は研究所を持っています。大雑把に言うと、NTTグループ会社で提供されるサービスの技術を研究開発している組織で、日本企業の持つR&Dではかなりの規模になります。NTTという大企業の安定した収益のなかで、研究所では直近で必要になる応用研究から何十年か先に必要になるであろう基礎研究まで幅広い研究開発が行われています。

研究・開発について

6年間働いて、NTT研究所の研究開発の良い部分も悪い部分も多く見てきました。良い部分としては、とにかく自由な発想で研究が出来るという点にあると思います。NTT研究所は電柱や光ケーブルの素材から世界でも有名な暗号技術、ネットワーク装置、ソフトウェアからUIUX、画像処理、音声技術、自然言語処理まで本当に多種多様な研究をしている部署と研究者がいて、その研究成果を届ける先であるNTTグループ会社も多種多様な業種が揃っています。その中では、全然異なる分野の全く新しいことを始めたいと思ったとして「それはうちの本業とは関係ないよね」と言える物のほうが少ないんじゃないかと思います。どんな分野の技術でも始められる下地があって、それをサービスとして提供できる先もあるのは強みだと思っています。

ただし、悪い面というか上手く回ってない面もあると感じていました。それは事業会社との距離がどうしても遠くなってしまうことです。企業の開発部署や開発した成果物を受け取る先の部署にいたことがある人なら感じたことがあるかもしれませんが、開発を行う部署と運用行う部署、またそのサービスのお客様と接している部署との距離は同じ会社であっても遠くなりがちで、コミュニケーションが上手くいかず、色々な失敗が起きてしまうことが多々あると思います。NTT研究所はそのコストがとても大きい場所です。研究開発を行っているなかで、運用側やお客様からのフィードバックはとても重要なのですが、別の会社ともなると会議一つ設定するのも大変ですし、ましてやそれぞれの会社は異なる意思決定の元に動いているため、連携することが非常に難しいと感じました。

給与・環境について

日本の平均年収よりも高く、よく比較される電機メーカーやSI会社に比べて低いというわけでもありません。生活していく上で困らない十分な給与を貰うことができます。また、研究所の環境に限って言うと私はMacProに64GBメモリを積んで27インチディスプレイで仕事を主にしていました。持ち運び用にはMacbookProを持っていましたし、パフォーマンスなどを測りたいときは、コアとメモリをたくさん積んだサーバを買って試験をしていましたし、全く不満がなかったです。kumagiが例の記事であげていたセキュリティ施策の問題は確かに周りでも不満を持っている人はいますが、単に今までが緩すぎたという事実の裏返しの部分もあると思っています。NTTの提供する様々なサービスの総ユーザ数は数えることすら出来ないほど多く、その数の分だけ個人情報を持っており、また我々の大株主は日本国です。歴史的経緯などを加味しても、セキュリティをガチガチに固めるのは当然の判断だと思います。ただ、反発がある部分として、ガチガチに固めるあまりに気づいたら全く身動きが出来なくってしまった、という印象も一部ではあるので、そのあたりは今後改善の余地があると感じています。

私自身の話について

私は上記のような環境の中で本当に様々な経験を積ませてもらいましたが、そのなかで一番感謝していることが、私の希望通りにOSS活動する時間とお金を惜しまず提供してもらえたことです。詳しい経緯は下記のスライドを見てもらえばわかると思います。

 

www.slideshare.net

部署は開発で大忙しのなか、私は上司に直談判してOSS活動をさせてもらえる時間を貰うことができました。それからは会社に出社してすることは、パッチのレビューのみ、ミーティングもほとんど参加せず、ただただ毎日パッチ投稿やパッチレビューをする日々でした。この間、会社の成果や売上に何の貢献もしていません。なんなら、カンファレンスの出張費や検証用のサーバ購入費などとにかく金を食いつぶしてばかりの存在な上に、成果を出せないまま2年もそんなことを続けさせてもらいました。しかし、そのおかげでOpenStack Neutronのコミッタになることが出来ました。ベンダやディストリビュータではない会社でOSSフルコミットさせて貰える会社はそれほど多くないと思っていますが、私の希望を叶えてくれた会社には感謝しかありません。気づけば、私のチームは、OpenStack公式プロジェクトのプロジェクトリーダーが2人、コミッタが2人いるとても強いチームになっていました。これはOSS活動を例に出しましたが、研究や標準化などといった分野でも同様に研究所は研究者を信じて時間とお金を惜しげもなく与えて成長を促してもらえる場所です。kumagiの例の記事では負の面ばかりがクローズアップされていますが、前半に書かれている良い面も事実として注目をして欲しいです。

 

さて、じゃあなんでお前は転職するの?という疑問の回答としては、研究所はどうしても事業会社との距離が遠い、つまり実サービスから遠いところで研究開発をすることが多くなってしまうという点で、もっとサービスに近い場所で開発をしたいという点が大きな理由としてあります。 研究所にここまで育ててもらった恩返しがしたいという気持ちや新しい技術を身につけるなら研究所のほうが良いんじゃないかという気持ちなどが渦巻く中、私の決断としては外に出てみたいという気持ちが強くなりました。

 

蛇足的な話

こんな言及はしたくないのですが、kumagiの記事がバズりすぎていて、さすがに困った感じになっているので、少しだけ余計なことを書くと、NTT研究所は悪い場所ではないです。上に書いた通り、社員を信じ、圧倒的に成長できる機会をくれます。私は学生時代に書いたコードで一番行数が多かったのが大学の課題で書いたコンパイラC言語で3千行くらい)でしたし、某インターン面接で「好きなソートアルゴリズムとその実装方法を教えて?」という質問にバブルソートしか回答できず即落ちしたくらいのレベルでした。そんな私でも気づいたら大きなOSSのコミッタになれるまでに成長できる機会を与えてくれるような会社は人生何回やり直してもNTT研究所しかなかったと思います。

 

追記

あっ、GAFAではないです。

OpenStack Contribution Github Page List

Neutron Project

https://github.com/openstack/neutron/commit/b9d0c5418dcf397fe06976aae5d1749ec99a662a
https://github.com/openstack/neutron/commit/e3d211b265443674f3143467139c43984bb0a080
https://github.com/openstack/neutron/commit/95bbb7385bbd538de99a94b20e2f58718cce16d7
https://github.com/openstack/neutron/commit/96f0142b8089a85f1a031f236c6d39fd463bf86c
https://github.com/openstack/neutron/commit/574572397152eea16c08ec256e014c7f387a2dff
https://github.com/openstack/neutron/commit/fe2249c12aa37624601e4b3be789bd21de72be0d
https://github.com/openstack/neutron/commit/cf97509f2b84cf1deaafa3176e58f7db0e515216
https://github.com/openstack/neutron/commit/2873bb3acf4fc1db14141c154bd7e4b9ff8030cf
https://github.com/openstack/neutron/commit/2f8b4e06feb4a03f77490c7758c5979005e0ea68
https://github.com/openstack/neutron/commit/e3063496cfc6fa39ac6d2b76da0d876c8dfdebd2
https://github.com/openstack/neutron/commit/86c4af7a6083e1c391dbfb484c45d25eaeaaaa39
https://github.com/openstack/neutron/commit/b56f008f3a01e5dbbf5b0744a9286a8302c3326a
https://github.com/openstack/neutron/commit/66c7c604fe3be6b80deaa1cac86117ebad9ee3d1
https://github.com/openstack/neutron/commit/0daed9ebcab7d46d066fd9d8af576d9aca0a7205
https://github.com/openstack/neutron/commit/951cd80c341fdc2783c8e3042a9e93becab58e36
https://github.com/openstack/neutron/commit/a348c389583a0b7a9c48ed5a7cbc4ae734b766ee
https://github.com/openstack/neutron/commit/82b3ccaffd36c1226d4b0590f56075f4894cfd22
https://github.com/openstack/neutron/commit/dc68662a0be831b66fc50d6bca7a8f1d70351200
https://github.com/openstack/neutron/commit/7fb8d542efab555e2e3b466fe9a04fb77d836c02
https://github.com/openstack/neutron/commit/ec1457dd7503626c917031ce4a16a366fe70c7bb
https://github.com/openstack/neutron/commit/0ae3c172ae4a7f80df5473ed53b8424ea408c583
https://github.com/openstack/neutron/commit/8daf493a7df4e1e2aa608aa87774581ab3069e53
https://github.com/openstack/neutron/commit/3f1c75ade76518905a76f636312b481d754651e8
https://github.com/openstack/neutron/commit/5700afb3201b240e9cc8bfaf7a86b69ce66aacec
https://github.com/openstack/neutron/commit/999ee86deaab2d72069f9d16c3a7d893c1426fc4
https://github.com/openstack/neutron/commit/ef2a5543cc7e15769031f81c921d4babb7e14d04
https://github.com/openstack/neutron/commit/6e500278191296f75e6bd900b94f7e36cc69edf2
https://github.com/openstack/neutron/commit/65aea5d57728a7dcf9ad9665693305f97fd1918d
https://github.com/openstack/neutron/commit/ae1fb6e87225900bedbc68d014369a1adaa4fcab
https://github.com/openstack/neutron/commit/2c62cd6ec0751a355c4db3f430e1c5d9e7a45bf7
https://github.com/openstack/neutron/commit/9c2c3021a64462af37ac69f66a21e314988f5906
https://github.com/openstack/neutron/commit/d04284b0a1c19a0486636a846aff21e7b9ad9610
https://github.com/openstack/neutron/commit/d02bcb9c3917028948b08c319d1443d487c36846
https://github.com/openstack/neutron/commit/a6c8d60e5e5ad41096dcf1f258b2983d2c6beb77
https://github.com/openstack/neutron/commit/6ff8582896646f1e88d1a754cd476147e02c1834
https://github.com/openstack/neutron/commit/95e2b53a7bf9fd162960389fec7dfc97b1729c50
https://github.com/openstack/neutron/commit/5b5eee766bb1891fc55660f8f45df561c42ccb90
https://github.com/openstack/neutron/commit/dc4268b8547ba9416c3c1de4fb41597ab9d5a6df
https://github.com/openstack/neutron/commit/8dde08679902149576a9173ebda3f847e65c964f
https://github.com/openstack/neutron/commit/86617741bcbe040cc95f1fb733525895725279b3
https://github.com/openstack/neutron/commit/6b253e0cc3ea6caa28e17b3cd2e5dfd60bbc7bb2

 

Neutron Library Project

https://github.com/openstack/neutron-lib/commit/e1a3c983ff90e1c9ad99f7f6bd272b723033a44b
https://github.com/openstack/neutron-lib/commit/13f3ea617b1ba7544a3aa1ec394bb31345b2394a
https://github.com/openstack/neutron-lib/commit/1412f1edb221b586698f7878061dd903e8c9abef
https://github.com/openstack/neutron-lib/commit/59005a0a7815e9ca6065eb89b92e107402f6c2ba
https://github.com/openstack/neutron-lib/commit/75ceeeb98cdab0b2c5ba4acb90f1012841ff0d05
https://github.com/openstack/neutron-lib/commit/9817dc494bdfe705f66e01ccf3431b29529bb0f9
https://github.com/openstack/neutron-lib/commit/3fe13e237d8cdfaaca4863c10d35024159edde1c
https://github.com/openstack/neutron-lib/commit/7c5b02d59aac2c989b140255d241ac0ed0ffc66b
https://github.com/openstack/neutron-lib/commit/4f71837e4147d090f226a9a09706930e6324d59c
https://github.com/openstack/neutron-lib/commit/7050f29501b12ee401eea0041179cdd4cf3b8a86
https://github.com/openstack/neutron-lib/commit/d8f65bc9ee0c6b36cb43f9c2c9ad8c36e5aeeca3
https://github.com/openstack/neutron-lib/commit/9011e1d71d93d42bb335e1638be7103d14402f4e
https://github.com/openstack/neutron-lib/commit/468358599240b7a12478ed7a6e8da92f430f13b5

 

 

Neutron Specification Project

https://github.com/openstack/neutron-specs/commit/4b399c23d8ec7083d7b2118c82afc402c11dddbb
https://github.com/openstack/neutron-specs/commit/94cff5c93016621ba3df9f94f930ab91666f239e

 

Neutron Client Project

https://github.com/openstack/python-neutronclient/commit/4d4e4decc39fe68f3624f92903ed29edd605375e
https://github.com/openstack/python-neutronclient/commit/00940cf7c51b3f502adc07277dede90c817237d6
https://github.com/openstack/python-neutronclient/commit/c91f9f2ccd7d61012673d5f3adb201e0767b939d
https://github.com/openstack/python-neutronclient/commit/53e2ad1ba964bade5ebc2cb2b74113b46adc3f19
https://github.com/openstack/python-neutronclient/commit/6bc4685f6b50fb8883c67b7f80b12ced6228d27b
https://github.com/openstack/python-neutronclient/commit/f67f4af8bd733f5bd186a7c02211ed0667e08a96
https://github.com/openstack/python-neutronclient/commit/65118c09eb08e760590939e57d3b1a485c567f91
https://github.com/openstack/python-neutronclient/commit/65812849419bd13b2f72bcfc8a40ae6c5078427b
https://github.com/openstack/python-neutronclient/commit/709928b5503f8899ddb7bc772f23432212284082

 

Networking Lagopus Project

https://github.com/openstack/networking-lagopus

 

Devstack(QA) Project

https://github.com/openstack-dev/devstack/commit/40aae6adbfce1bd896d5f7b0e281e798b56d1ca8
https://github.com/openstack-dev/devstack/commit/508931ff367df646d1fa6068008fe550c5572d02
https://github.com/openstack-dev/devstack/commit/97cc85b9b1661cb73f732b854a3f2ebd738539ed
https://github.com/openstack-dev/devstack/commit/36daecd1a362a6a5388aa4ee5c5269563a820cbf
https://github.com/openstack-dev/devstack/commit/2bb3a648929550ae9ff237185be43d864e1e0225
https://github.com/openstack-dev/devstack/commit/1c506c5c3422b80ca01903f929b47011a4f969e1
https://github.com/openstack-dev/devstack/commit/22cf648cf64029b6ba34a77aadd43b356acd53e7
https://github.com/openstack-dev/devstack/commit/7ab3e39bc485acc2b54d7496a77c2e43eda4e799
https://github.com/openstack-dev/devstack/commit/d48d672a8d36a70b10456496159fecf7551e89f8
https://github.com/openstack-dev/devstack/commit/4f91f93557d088b315e1687db9fa462888a06312
https://github.com/openstack-dev/devstack/commit/5c0546e427a02ca7f84eac0894bc84073fa32638
https://github.com/openstack-dev/devstack/commit/cc5715531b46f558faffefe4fe6e77d48af2368b
https://github.com/openstack-dev/devstack/commit/469a6d8f663bc335bdb86248a951065c2260a0cb
https://github.com/openstack-dev/devstack/commit/daa9a734e2fe008a32ed0f98501e2ce2f80167c8

 

Tempest(QA) Project

https://github.com/openstack/tempest/commit/1950d229c0d536aa1298edfaee15a36a040eb727
https://github.com/openstack/tempest/commit/31a054a5bbe5447b879512abfa3b7cb5fd41954b

 

OpenStack Manual Project

https://github.com/openstack/openstack-manuals/commit/02cf1684a34e76ccfd8032fb2e8e260d3d2179f7
https://github.com/openstack/openstack-manuals/commit/ebabbb9f565188cd303fcefeac9a6922a1f9958f
https://github.com/openstack/openstack-manuals/commit/c5abf0cdedd7d49ab9dcde5c173ce835674bc767

 

Nova Project

https://github.com/openstack/nova/commit/6f47afd4d65bd8b382d01d8b552bc242d8809b23
https://github.com/openstack/nova/commit/62e8dd3042bb62c0e11db6cfd64ca9841eb689b9

 

Nova Docker Project

https://github.com/openstack/nova-docker/commit/d1ad84793b7f2182de04df8a5323d6928af672ca
https://github.com/openstack/nova-docker/commit/e00df55d02048996e35e5755f016bee134ced6f8