12年勤めたNTTを退職しました

 修士卒で入社し、12年と4ヶ月間勤めたNTT研究所を退職しました。昨年話題になった id:kumagiid:hichihara の近くの部署です。自他ともにあんまり転職しそうにない人だと認めていた私がなぜ転職することに決めたのか、自身の振り返りの意味も込めた退職エントリです。

振り返り

入社まで

 高校生のときに趣味でプログラミングを始め、早々に進路は情報系で行くことを決意していました。大学は東京工業大学の5類・情報工学科に進学し、画像処理全般に興味があったため研究室ではコンピュータグラフィックス分野の研究をしていました。就活については、今ほどソフトウェアエンジニアのポジションが明確でなかった時代と記憶しています。いくつか受けた中で運良く内定がもらえてプログラミングもできそうなNTT研究所に就職することに決めました。

入社直後

 当時は研究所全体にフレッツ光ネクスト開発の大きな流れがあり、初期配属の情報流通プラットフォーム研究所では、ネットワーク機能を活用したアプリケーションを検討していました。プログラミングをする機会はそれほど多くなかったものの、ネットワークプロトコルに関する知識を多く身につけることができました。

出向

 面談のたびに手を動かす仕事がしたいと言っていたら出向先としてNTTソフトウェア(現在のNTTテクノクロス)を見つけてもらいました。R&D寄りの部門だったこともあり、出向当初は特に決まった仕事がなく、研修室へ入り浸ってサーバやスイッチで遊ぶなどして身につけた知識で社内研修をしたり、プロジェクトの支援をしていた覚えがあります。そのうちRyuのプロジェクトに拾ってもらい、OSS開発を初体験しました。Ryuプロジェクトを通じてOSS開発の作法や、Linuxのネットワーキングの仕組みを学びました。

研究所帰任

 出向前に所属していた部署が再編されており、再編先のソフトウェアイノベーションセンタに帰任しました。前よりもソフトウェアに特化した研究テーマや人が揃っており、勉強になることの多い日々でした。ここではSheepdogの開発やトラブルシューティングをしたり、低レイヤ通信を使った新規研究テーマを検討してみたりしました。これらの仕事を通じてカーネルや低レイヤの知識を強化できました。

 直近では、社内向けのオンプレミスのGPUクラスタ構築をするチームのチームリーダーを任されており、初期設計とチームの立ち上げ、口コミでユーザを集めてトライアル運用までをやりました。ようやく軌道に乗りこれからというタイミングで抜けるのは心苦しくもありますが、頼りになるメンバー達なので任せて大丈夫と確信しています。

f:id:Jinmen:20190719153312j:plain
武蔵野研究開発センタ構内の桜並木

プライベート

 一方でプライベートではひたすら声優イベントに行って年間100イベントを越えたり、友人と一緒にイベンターノートの企画・開発をしたり、スマホゲーにハマったりしていて、仕事よりも趣味中心で生きてきました。昨年は子供が生まれ、2ヶ月の育休を取得し、マンションを購入し、持病の手術をし…とドタバタだったのでしばらくはゆっくりしたいと思っていて、転職するつもりはあまり無かったのですが…

f:id:Jinmen:20190719155412j:plain
堀江由衣さんのMV撮影地である小金井公園で1歳の娘と散歩

退職の理由

 特定の分野にこだわりがあって専門性を深めたい人なら異動は避けたいものだと思いますが、私の場合は定期的にリセットして別の分野にチャレンジできることはむしろ楽しいと思っていました。では何故転職を考えたかというと、実は何か決定的な理由があるわけではありません。長く勤めていると大小少なからず不満はあり、良いところもたくさんあったわけですが、そのバランスが転職に傾いたというのが実際のところです。その中で大きな理由を3つ挙げてみます。

管理職へ一直線のキャリアパス

 まだまだ技術を深く知り、コンピュータシステムに向き合い、手を動かし続けていたかったけれども、周りからはそのような役割を求められなくなったことが大きな理由の一つです。変化を感じ始めたのは4年前に役職が付いた頃で、もはや自分が手を動かして仕事をこなしたりリードすることよりも、新たな仕事を作り出す立場であることを強く求められてきました。研究テーマを検討して具体化し、目標を立ててロードマップを描き、実行のために必要な人員や経費に関してエンピツ舐めて資料を作り、幹部へ説明し…という、まあ要するに予算獲得の仕事です。

 特に私にとって重荷だったのは、指揮系統ラインに加えて暗黙のライン外のステークホルダーも多く、調整に次ぐ調整が必要で何かと意思決定コストが大きいことでした。計画を立てたら各所に説明し、意見を取り入れ調整し、計画に反映して再度説明し…と繰り返すうちに段々疲れてしまいますし、計画がやっと承認されていざ実行となっても今度は報告資料、気付いたら次期の計画作成…と、内部資料作成に多くの時間を割いていました。

 今年は管理職昇格に挑戦する節目の年です。これまで管理職見習いをなんとかやれたのは技術力がまだ生きているおかげだと考えています。それによって部下とスムーズに会話ができ、他部署との議論をリードすることができ、上司から信用を得ることができました。しかし、全く手を動かせない状況が続けば早晩技術貯金は尽きてしまい、管理職としてもダメになる可能性がありました。

 プログラマ35歳定年説の典型的なケースかもしれません。また、仮に管理職に昇格して勤め続けたとしても、いずれ役職定年を迎える頃には進退を考える必要があります。その頃には最新技術のことがわからなくなっていて再就職先に困るという事態も想像がつきます。であれば、今から技術で身を立て、必要とされるスキルを持ち続けることが結果的に将来の安定に繋がると考え、改めてエンジニアとしての道を選ぶことに決めました。

社内システム環境の悪化

 一番大きい理由ではありませんが、転職をはっきり考え始めたきっかけとなったのが最近の社内システム環境の悪化です。ここ数年間、セキュリティ強化や働き方改革などを背景に、業務ルールの厳格化とそれに伴った社内システムおよび社内ネットワークのリプレースが急速に進んでいます。ところが、ルールやシステム同士がちぐはぐで業務の実態に合わない状態がずっと続いていて、なかなか改善に向かって行きません*1。結果としてOSSなどのソフトウェアの開発・検証や研究には大きな支障が出ていますし、資料作成やメール等の業務においても使っていて非常にストレスが溜まる事態になっています。

 部署やチームによっては全社のネットワークで仕事することを諦めて、独自にネットワークを構築し、クラウドサービスを導入してその上で快適に仕事ができるようになっています。私も先頭に立ってネットワークの整備をしたり、Slack/GitHub/AWSの導入を進めて維持管理し、自分と周りの人が少しでも快適に、今風のやり方で仕事できるよう努力してきました。ところが、そのような部署独自のシステムはセキュリティインシデントのリスクと見なされ、セキュリティ部門からリスクをゼロにするためのルールが大量に課されます。ルールが現実的で効果的であればまだしも、時代遅れで意味がないものも多く、またルールはどんどん追加され、その度にエクセルのチェックシートや管理簿が増え…と対応に疲弊する日々でした。

 セキュリティ対策は重要ですが、利便性や効果を十分に検討して導入する必要があります。的外れなセキュリティ対策は業務効率や従業員のモチベーションを下げるばかりか、ユーザビリティが低いことでシャドーITを誘発するため、むしろリスクを高めて逆効果になっているように思えます。また、長期間継続した場合、この環境を当たり前と考える誤ったコンピュータ・リテラシーを育ててしまう危険がありますし、既に一部はそうなりつつあります。本当に手遅れになる前に一刻も早く改善することを願っています。

 ちなみにサーバやPCなどのマシン自体は豊富に調達可能でしたので、マシンパワーの点では全く困りませんでした。

ソフトウェアエンジニアの市場価値の向上

 結局のところ給与と待遇が良いことが今まで転職を考えなかった理由だったと思います。同世代平均と比較してまあまあ多い年収と、そこそこ良い福利厚生がありますし、特に素晴らしいのは年間25日の有給休暇*2が100%消化を義務付けられていることです。勤務体系は裁量労働制で、生活の都合に合わせて午後から出社する人や16時頃に帰る人も珍しくありません。勤務時間が平均7.5時間/日を下回る月もありましたが、評価や昇格において不利になることは全くありませんでした。これは、純粋に業績や周りに与えた良い影響などによって評価していることの裏返しでもあります。また、育児休業*3や病気休暇*4を取得しましたが、問題なく昇格できました。対外的にアピール可能な目立った業績やスキルがない自分にとって、他社で同等以上の待遇を求めることは難しいと考えていました。

 ところが最近はソフトウェアエンジニアの市場価値が向上してると言います。また、知り合いが実際に高額オファーで転職している様子も目撃し、いざ自分の市場価値を確かめてみようという意味も込めて転職活動をしてみました。すると、これまで複数分野のプロジェクトで便利屋の如く問題解決してきた経験やスキルがSREの需要とうまく一致して、良いオファーをいただけたので転職を決意しました。

転職活動を終えて

 本気で転職活動を始めたのは2月後半頃です。コーディング面接対策にLeetCodeとAtCoderを毎日やるようにしていたのと、レジュメを書いて知り合いに添削してもらっていました。知り合いの紹介で数社を受けて、5月前半には転職活動を終えました。GWを挟んだので、実働は2ヶ月くらいです。コーディング面接やその他の技術面接に関しては問題なくクリアできたのですが、さらにキャリアアップを狙って行くには業績の積み重ねと英語力アップ*5が必須だと感じました。

f:id:Jinmen:20190723021440p:plain
AtCoderのコンテスト実績

 また、NTTの管理職は向いていませんでしたが、技術寄りのエンジニアリングマネージャーなどのポジションには興味があり、改めて今後のキャリアの選択肢として考えたいと思っています。

 ここに至るまで大分遠回りしてきましたが、35歳でようやくソフトウェアエンジニアとしてのキャリアをスタートできたという気持ちでワクワクしています。商用環境を直接面倒見たりコード書いたりする仕事は初めてですし、純粋にエンジニアとしてチームで仕事をすることも初めてと言っても良さそうです*6。妻子がいる中で今後のキャリアについて少なからず不安もありますが、ずっと楽しく仕事していけたらいいなぁと思います。

*1:id:kumagi の退職エントリでも言及されていたが、あれから8ヶ月さらに悪化し続けている

*2:年次休暇20日+夏期休暇5日

*3:2ヶ月間、新生児期の2~3時間授乳の夜シフトを担当

*4:療養含め2ヶ月間、持病の手術のため

*5:8年前に受けたTOEICスコアが615で、読み書きはギリギリいけるが会話は絶望的なレベル

*6:これまでは1人プロジェクトだったり、チーム仕事でもリーダーだったりした

新型光ポータブル(PWR-Q200)のWi-Fiがプチプチ切れる

昨年、光ポータブル(PWR-100F)をレンタルしてからiPhoneのモバイルデータ通信(iPhone本体の3Gデータ通信)をOFFにしてドコモの高速回線でそこそこ快適に利用していました。最近ときどきフリーズしたり3G通信止まったりするし調子悪いなーと思っていたところ、新型光ポータブル(PWR-Q200)がいつの間にかリリースされていたので早速申し込みました。

2週間待って12/23に納品。そして感想。

新光ポータブルのWAN側を自宅のフレッツに繋がってるWi-Fiにしてみたけど不安定だFri Dec 23 10:26:11 via Tween

早速怪しいです。そして2日後。

なんか通知関係がおかしいのは新光ポータブルに変えてからのような気もする。スリープ後にWi-Fi接続切れてること多いし。Sun Dec 25 02:56:33 via SOICHA

このあと今日までの約2週間試行錯誤を繰り返して、設定可能な部分は色々とパラメータを変更して試してみました。

  • Wi-Fiチャネル、送信出力
  • 無線暗号化方式(WPA2-PSK、WPA-TKIP、WEP、暗号化なし)
  • 暗号キー更新間隔
  • ビーコン間隔
  • 省電力設定オフ

しかしピクリとも改善せず。スリープ状態でなくてもとにかくLAN側のWi-Fiがプチプチ切れます。モバイルデータ通信(iPhone本体の3Gデータ通信)をOFFにしてるため、Wi-Fiが切れると次の問題が起こります。

  1. プッシュ通知が来なくなるときがある
  2. 「モバイルデータ通信はオフです」のダイアログが出てうざい

1についてはWi-Fiが切れたら必ずしもプッシュ通知が来ないわけではなく、来たり来なかったり再現性が見つかりませんでした。ViberやFBメッセンジャーなどで連絡に利用しているのでプッシュ通知が来ないのは困ります。2については動画を見ていただくとWi-Fiアイコンが一瞬消えたあとダイアログが出て、Wi-Fiが復活しているのがわかります。

色々と検証を行なっているうちに、あることがわかってきました。PWR-Q200にiPhone 4SiPhone 3GSノートパソコンをつないでロックさせないで30分ほど置いたときの最初の10分のログが下記です。なお、残り20分くらいも同じようなログでした。

2012/01/04 20:27:10 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 20:27:10 LAN WLAN: STA(d0:23:db:XX:XX:XX) is associated!
2012/01/04 20:28:18 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 20:28:18 LAN WLAN: STA(1c:4b:d6:XX:XX:XX) is associated!
2012/01/04 20:28:42 LAN WLAN: STA(d0:23:db:XX:XX:XX) is deauthed!
2012/01/04 20:29:23 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 20:29:23 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is associated!
2012/01/04 20:29:31 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 20:29:31 LAN WLAN: STA(d0:23:db:XX:XX:XX) is associated!
2012/01/04 20:33:32 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is deauthed!
2012/01/04 20:33:33 LAN WLAN: STA(d0:23:db:XX:XX:XX) is deauthed!
2012/01/04 20:33:33 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 20:33:34 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is associated!
2012/01/04 20:33:43 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is deauthed!
2012/01/04 20:33:45 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is deauthed!
2012/01/04 20:33:45 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is deauthed!
2012/01/04 20:33:47 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 20:33:47 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is associated!
2012/01/04 20:34:06 LAN WLAN: STA(d0:23:db:XX:XX:XX) is deauthed!
2012/01/04 20:35:36 LAN WLAN: STA(d0:23:db:XX:XX:XX) is deauthed!
2012/01/04 20:36:00 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is deauthed!
2012/01/04 20:36:08 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is deauthed!
2012/01/04 20:36:10 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 20:36:10 LAN WLAN: STA(c4:2c:03:XX:XX:XX) is associated!
2012/01/04 20:36:16 LAN WLAN: STA(d0:23:db:XX:XX:XX) is deauthed!
2012/01/04 20:36:18 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 20:36:18 LAN WLAN: STA(d0:23:db:XX:XX:XX) is associated!

1分半置きくらいでWi-Fi切断を示すと思われる"deauthed"が出ています。iPhoneからは1分半置きというほど頻繁に切断されている感じはしないので、恐らくすぐに再接続できた場合は影響がないのでしょう。しかし、よく見るとノートパソコンだけ切れてません。ノートパソコンはほっといても色んな通信をしていますから、比較的短いオーダーで一定時間通信が途切れると切断されてしまうのではないかという仮説を立てました。そこで、ロードし続けるWebページをiPhone 4Sで表示したままにしておいたところ…

2012/01/04 21:45:32 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 21:45:32 LAN WLAN: STA(d0:23:db:XX:XX:XX) is associated!
2012/01/04 22:15:33 LAN WLAN: STA(d0:23:db:XX:XX:XX) is deauthed!
2012/01/04 22:15:39 LAN WLAN: STA(d0:23:db:XX:XX:XX) is deauthed!
2012/01/04 22:15:39 LAN WLAN: STA(d0:23:db:XX:XX:XX) is deauthed!
2012/01/04 22:15:41 LAN WLAN: got WPA STA ASSOCIATE event!
2012/01/04 22:15:41 LAN WLAN: STA(d0:23:db:XX:XX:XX) is associated!

30分間切断されずにもちました。この時は暗号鍵の更新時間を30分に設定していたので、それが原因で切れたと思われます。暗号鍵更新で切断されるのもどうかと思いますが…。結論としてはiPhoneにずっと通信をさせておけばWi-Fiが切れないことがわかりました。

これ、ファームウェア更新とかで直るんでしょうか。PWR-Q200を返品してPWR-100F使い続けてもいいかなぁ…。