ぶるーたるごぶりん

UI, UX, セキュリティとか😘

退職振り返りポエム

退職ポエムです。 退職エントリは退職日が来たら投稿します。

各年度でうまくいったこと、うまくいかなかったこと、 これをやれば良かったかなーと思っていることを書きます。

なんで辞めるのかとかは別の投稿にて。

やってたこと

  • 1-2年目 : 採用管理サービスの開発 (Scala)
  • 2-4年目 : 横断セキュリティチーム(脆弱性診断・ログ監視基盤の開発運用)
  • 4-4年半 : 脆弱性DBの開発・運用 (Kotlin/Java)

うまくやれたこと、やれなかったこと

1 - 2年目

1-2年目 : 採用管理サービスの開発 (Scala)

正直今の自分から見て何もかもがうまくいってなかったし、努力も人並み以下、スペシャリティや軸というものもないという状態だったのが反省点。 ただ結果的に次年度から持ち直したので、まあ良かったでしょう。 環境がすこぶる良かったのでそれに救われました。

良くなかった点

  • 軸が無かった
  • 深めの技術的なことは(学習コスト的にストレスと感じるので)億劫になってた
  • 結果、フレームワークとかの使い方を学んで何かをやった気になる という典型的なダメパターン

(自主的な部分で)やって良かったこと

  • 外部ベンダーの脆弱性診断レポートを読んだ事
    • 脳汁ドバドバ出て頭がおかしくなった
    • 自部署・他部署に対して(許可をもらって)脆弱性探しを見様見真似でやってた事
  • 技術書典に合同誌で出さしてもらった事
    • 身内開発者コミュニティみたいなのに所属した事で、色々と学びであったり、やる気などをを得られた事

次節にて書くんですが、 ガッツリとした新規開発っぽいことを結果的にあまりやらなかった2年間で、結果として新機能開発に対してあまり興味が出ない人間になった気がします。 もしかしたら元々そうだったのかも・・・?

とはいえ、それが結果的に今につながっていると思ってるので経験と今の方向性的に大変良かった気がします。 今と違う道に歩んでたのであればミスマッチになってたかもしれないので運ですかね。

(受動的な部分で)良かったこと

  • バグ修正チームの所属と対応 [短期]
  • (結果として)非機能要件の開発ばかりやってたこと(パフォーマンス・バグ・セキュリティ・開発環境整備など)[長期]
  • HTTPサーバをRFCを見ながら開発しようの会への参加(先輩の完全なボランティア)
    • 一時ソースに当たれという強い圧力
    • (仕事がScalaで、まだそれほどわかってもいなかったのに流行っているという理由で Goをやって)「一つの言語をマスターできないやつは他の言語やってもマスターできない(意訳)」というど正論を(優しく)アドバイスしてもらった事
  • めちゃくちゃ丁寧に仕事する方と同じチームで開発した事
    • 完全に自分の中での仕事の姿勢が整ったのでこの会社で働いた中で一番良い経験だった
  • 実費で海外カンファレンスに出たりするような先輩などが居たのでやる気が上がった
  • セキュリティチーム発足時に声をかけてもらって異動したこと

脆弱性レポートが面白すぎたことで完全に道を踏み外しましたが、 それまでは特別「何か1つに軸を」という点が疎かでした。

ただ、レポートを読んで面白いと思って気がついたら異動していましたし、 非機能要件周りへの欲求みたいなのが合わさっていい感じになったので、チープですがパズルが合わさったみたいな感じですかね。 とはいえ殆ど環境のおかげなので同僚の方々には感謝。

あと自分は馬鹿なりに行動力はあるタイプだと自負していて、そこ前面に出して色々活動してたのは褒めていい気がしてきました。

やれば良かったこと

「やれば良かったこと」というより、「今の方向性(セキュリティ)じゃなかったらこれをやったら良さそう」という内容になってしまいますが、 例えば以下をやったら良いのかなーと思いました。

  • ISUCON の過去問を一通りひとりでやる
    • サーバーサイド・ミドルウェア・ブラウザ・フロント周りの領域に大なり小なり足を突っ込めるため、初年度のエンジニアとしては登場人物のマッピングができて良さそう
    • 各要素のパフォーマンス周りにある程度の自信ができるのに2,3年くらいかかりそうだけどそこを越えれば一端のエンジニアにはなれそう?
      • 毎日1-2時間競プロやるの2年くらい続ければ良さそう
      • とはいえ今のセキュリティと同じで好きじゃ無いと大変きつい茨の道
      • 逆にいえば軸足とやる気があればたいていなんとかなる気もする
      • 問題は、競プロガチ勢とかのスキルがフルで求められるような土壌が多くの会社でない問題

仮に今別の道があったのであれば一つ軸を作るためにもISUCONとかの過去問全部やって、競プロとかに入り浸るような動きすれば、 まあ多少なりとも軸はできたのかなーと思います。

  • 仕事で使ってるOSSのコントリビュート
    • 正確にはコントリビュートが良いというよりは、利用言語におけるBetterな書き方とかを学ぶために
    • ただよっぽど気合がないと、(かつその特定要素に自信がないと)枝葉の修正しかしなさそう
  • 合わせて大きめの開発を個人か仕事でやる
    • ようは枝葉と根元部分の開発をやれというだけの割と当たり前の話になりそう

こっちはすごい当たり前の話になりますが、大きめの開発・小さめの開発を両方やっておくのはやっぱり重要だなと。 あとは(多少)Angular(.js)での開発があり、変にそっちに気が散ってた時期もありましたが、バッサリフロントは切るくらいの気持ちで 特定分野以外やらないという決意をして動いた方が良かったなと思います。

書けば書くほどこの年ダメだったなあ

(書き終わってから思い出しましたが)これをちゃんと丁寧にやれば良いだけだった。 https://github.com/kamranahmedse/developer-roadmap

2 - 4年目

2-4年目 : 横断セキュリティチーム(脆弱性診断・ログ監視基盤の開発運用)

ここら辺はこちらの記事に書いてある通りなのでまあ良いでしょう。 https://brutalgoblin.hatenablog.jp/entry/2020/02/15/153805

(自分の中では、プライベートの時間を確保した割りに)それなりに成長実感もあってかなりうまくいきました。

勉強癖というか、努力の仕方であったり、キャリアパスや自分が何に対してモチベがあり、 どういう点が弱いかなどが言語化できたのが良かったと思います。

あと強いオーナーシップを持って仕事に取り組んでいたのは素直に良かったです。 自社開発系のセキュリティは、強いオーナーシップ + フットワークが軽い( + 会社がそれに理解を持っている)と、かなり楽しくやれると思ってます。 なので「(誰もやらないなら)俺がやる(比喩表現です!)」くらいの強い気持ちが大切だと改めて思います。

今思う(時間もやる気もしっかりあれば)やったら良さそうなこととしては

  • 診断・ペンテスト周りを伸ばすのであれば特定分野のCTFを継続的に続けるのが(若干遠回り感強いですが)近道なのかなあ。ひとまずは毎日HTBやってます。半年くらい続けるつもり
  • ログ監視・インシデントレスポンスとかを伸ばすのであれば MITRE ATT&CK あたりの読み込みとそれっぽい環境を作って自分で封じ込みみたいなことやるのが良さそうな気がします。が実際どうなんでしょう?
    • 少なくともブルーは、レッドよりも攻撃寄りの知識があった方が良いとどなたかもいってましたし、最終到達地点を遠くに設定するのであれば、遠いようで近道な気がしてます。
    • 同僚の人が SANS - SEC504 を強く推してたので受けたい気持ちはありましたがSANS高すぎて個人でやりたい層には厳しすぎ

セキュリティのキャリアパスも、(勉強するための)ロードマップも殆どない気がしていて、 開発者向けの各要素のロードマップが、 セキュリティエンジニア向けに提供されてたら幸せになれそうな気がしました。 (誰か〜〜!!誰か氏〜〜〜!!)

あ、あと仕事の中でNISTシリーズ、FIPS, PCIDSS に(広く浅く)目を通す機会があり、結構良かったですね。 やはりホワイトペーパーは正義。

4 - 4.5年目

4-4年半 : 脆弱性DBの開発・運用 (Kotlin/Java)

最後の年ですね。

期間が短いのであまり書くこともないですが、失敗したことは結構ありました。

  • 自分の役割と評価者が求めていることのギャップを理解せずに突っ走った

    • これは「評価を上げる」という観点に絞った場合、確実に埋めておかないとガッツリ失敗する部分なのでかなり失敗した気がします。
      評価者はセキュリティエンジニアではなかったので、実施したタスクの効果などの理解の難しさはあったはずですが、それに甘えて「タスクの有用性を伝える」という機会を能動的に作りに行かなかったのは反省点(どう伝えれば良かったのかも不明)
    • そもそも「俺はこれをやったぞ」をアピールだけしても評価されるわけがないので、組織として今何に注力しており、自身のスキルで何を与えられるのかを理解をするのが重要なんでしょうね。サラリーマンですね。まあコロナとか色々なものが重なってとにかく失敗したので仕方ないと言ってしまうとそれまでなのかも。
  • Kotlin/Java わからんまま進んでた

    • Scalaしかやってなかったので、Kotlin/Java 周りにあまり理解がなかったのですが、それをそのままにして突っ込んでいったのはあまり褒められたもんじゃなかったですね。
    • 一応ロールはセキュリティエンジニアでしたが、セキュリティサービスなのもあって開発もある程度求められるような立ち位置にありました。そういう立場としっかりと認識していたにもかかわらずこうだったので、手を抜いていたのは事実。
  • インフラ弱い

    • わかりきってたことなんですが、ズーーーーーっと億劫でやっていませんでした。

と、書き終えてから気がつきましたが、あまり良かった点が思いつかない・・・。

あるとすると 台湾のIT大臣 オードリー・タン氏のGithubの草 より、自分は草が生えてなかったのに恥ずかしさを感じ、毎日草を生やす活動を始めたことでしょうか。 今は草を生やすのはやめて毎日CTF(正確には Hack The Box)をやるチャレンジしてます。

同僚の人で毎日(確か4年間も!!)草を生やしてる方がいたのですが、やってわかりましたがかなりきついです。本当に尊敬できるなーと感じます。 そこまでの情熱と根気は自分にはないので、できる範囲で頑張っていきたい所存です。

総合的に見て自分のよかったこと・反省点

以上、振り返ってみましたが結構「うまくやれてたこと」「やれてなかったこと」って多いですね。 4年半という長さを考えれば妥当なのかもしれないですが。

自分で言うのもあれですが、直近2年半は、総合的に見ればうまくいった方だと思います。 自分を制御してそれなりに頑張れた気がします。

あと改めて思いますがTwitterに生息しているような72時間耐久CTFみたいなことやってそうな方々は化物だなーと思います(褒めてます。いつもやる気をもらってるので感謝)。

うまくいったキッカケは、やはり先輩に言われた「一つの言語マスターできないやつは他の言語もマスターできない(意訳)」と言うど正論パンチだと思います。 結局のところ、仕事で行える範囲というのには限りがありますし、色々な物に手をつけるすぎると器用貧乏になりがちです。

別に器用貧乏が悪いわけじゃないですし、言い方を変えればカバー範囲が広いと言えます。 ただ、自分の場合は求められる仕事の範囲に対し、「カバー範囲が広い」ではなく、「広すぎて」「浅すぎる」でした。

なのでそこを矯正できたのは大成功でしょう。


あまり関係ないメンタル的な面では、以下のような事柄が自分のやる気を出させてたように思えます。

  • ゴールの日程が決まっている事柄を起点に、インプット・アウトプットをしたこと(CISSP受験/カンファレンス発表/技術書典の参加など)
  • Twitter に気絶するまでCTFをやってたり、9割セキュリティの話しかしない強者(またはそう見える人)を見て「このままだと死ぬ」と暗示をかけてたこと
  • エンジニアの同僚と専用のチャンネルを作って、間接的にその人たちが頑張ってるのを見て「このままだと死ぬ」と暗示をかけてたこと
  • 台湾のIT大臣よりコミット数が少なかったため「このままだと死ぬ」と暗示をかけてたこと
  • Pink Floyd の Time の歌詞 に大切なことが全て書かれているのでそれを不定期に読んで「このままだと死ぬ」と暗示をかけてたこと (TwitterBotでTimeの歌詞を呟く奴がいて、それで遊んでいるうちに癖になってた)

半分ジョークですが、半分はマジで、 この辺りの危機感というか、背水の陣を敷くのは自分のスペック上、正しい運用でした。

なんせ(就職前までの20数年間の経験上)、比較的に才能がないのは自覚してましたし、 逆に自分の良いところは馬鹿なりに努力はする点だと理解してたので、そこをうまく伸ばしていけばそれなりには力が付くだろうと。

(考えて)努力さえすれば良いと言う完璧な根拠も出揃っていて、

  • 人類全体を見れば思ったよりも努力をしてる人が少ないのは自明
    • 流行ったゲームの壺おじのクリア率を見るよりも明らか(5%くらいしかクリアしてないはず)
  • Pink Floyd - Timeにとにかく大切なことが全て書いてある
  • ダルビッシュ氏も考えて努力しろ(意訳)と言っている
  • なろう系で努力して最強になっている描写が多数観測されているため、なろうは真実を語っている

と、完璧な根拠が出揃っています。 なのでそれを信じて突っ走って正解でした。

でも何度も書いてしまうんですが、何よりも同僚の方に多く刺激をもらえたのが体験の割合として良かったです。

めっちゃ丁寧に仕事をするタイプの人であったり、 異常なスピードでコードを生成する人だったり、 わざわざ休日に時間まで作ってくれてアセンブリルノワールで教えてくれる先輩だったり、 毎週Scalaのコップ本の輪読会を(すでに読破済みであるにもかかわらず)開催してくれる先輩であったり。 あげればキリがありませんが、自分の足りない部分や、こうあると良いと思える部分を持ってる人たちに囲まれたのはお金では買えられない経験だったように思えます(エモ)

最後に

もう書くことないのでこれで終わりです。

貰えるものは貰いたいのでお金払いたい方はほしい物リストから何か買ってください。

Amazon の Wish Listはこちらです。 https://www.amazon.co.jp/hz/wishlist/ls/2UICHQMVQMTJP/ref=nav_wishlist_lists_1?_encoding=UTF8&type=wishlist

Bandcampの Wish List はこちらです。 https://bandcamp.com/kumagoro_alice/wishlist

それと一切関係ないですが、今年一番オススメのヘヴィメタルの新譜は、 インドのプログレッシブメタルバンド Pineapple Express - Passage です。 皆さん今すぐ書いましょう。

退職エントリは 11月中旬にに公開します。