変化し続けるキャリアと変わらない原体験
YAPC::Japan::Online keynote
Mar 5th, 2022
YAPC::Japan::Online
- 開催めでたい
- キーノート光栄
- オンライン開催
- id:onishi さんに先んじてしまった
- YAPC::Kyoto 中止残念でした (延期とのことです)
- 今後のオフライン開催に期待
- 新しいハイブリッドな形にも
- Discord活用いいですね
Me
自作のスライドツール
- Perl製
- 昔はそういうのが流行っていた
- 今回敢えて使っている
本日お話すること
- YAPC::Tokyo 2019 でもキャリアの話をした
- 「Songmuさんにキーノートみたいな話された」by tokuhirom (本来のキーノート担当)
- かぶらないようにキャリアの話など
- 「ハッカー」を良い意味で使います
- なるべく「ソフトウェアエンジニア」という用語を使います
自己紹介
経歴
- 2005 語学学校営業兼システム担当
- 2009 SIer
- 2011 カヤック
- 2014 はてな
- チーフエンジニア
- Mackerel プロダクトマネージャー
- 2019 Nature (IoT/エネルギースタートアップ)
- 2021 Launchable (外資のテックスタートアップ)
- Principal Software Engineer
特徴
- 業界デビューは遅め (カヤックに入ったのが30歳)
- バックエンド主軸のWebアプリケーションエンジニア
- いわゆるDevOpsやSRE領域
- インフラエンジニアではない
- あくまでアプリケーション寄り
- Webアプリケーションエンジニアの中でインフラ領域や低レイヤが比較的得意
- エンジニアリング組織のマネジメントや採用活動経験
- プロダクトマネジメント経験もある
- 言語は最近はGoが多い。仕事ではJavaメイン
好きなもの
- 安定稼働が好き
- バッチシステムが好き
- OSSが好き
OSS活動
- 気軽に量産している
- 質より量
- BlogもOSSも、細々と続けたことが今の自分に繋がっている
私とPerl(現在)
- 多くのCPANモジュールを無駄に上げている
- Web+DB Press連載「Perl Hackers Hub」監修チーム
- 著者探しをpapixに引き継いでから本当に何もしていません…
- 隔月の連載執筆者を常時探しています!
- 仕事や趣味でちょっとしたスクリプト、ベターシェルスクリプト的利用
CPANモジュールの数
CPAN
今年のPerl活動
その過程でMinillaにパッチを送った。
Riji
https://metacpan.org/pod/Riji
- 自作のBlogツール (static site generator)
- 私のBlogサイトはこれを使っている
- Gotanda.pmのサイトでも使ってくれている
- Markdownファイルのgit履歴からRSSを出力してくれるのが便利
- v1を出して、リリース時にコンテナも作るように
- GitHub Actions と GitHub Container Registry
Test::RedisServer
https://metacpan.org/pod/Test::RedisServer
- typesterからメンテを引き継いだもの
- テスト時にテンポラリプロセスを立ててしまうという発想
- kazuhoさんの Test::mysqld 発のアイデア
- ちなみに、Test::mysqldのメンテナンスも今僕がやっています
- コンテナ時代になって利用シーンは減ってきた
- issueが上がってきたので対応した
Minilla
- CPANモジュールオーサリングツール
- tokuhiromが作り始めた
- 開発にも関わらせてもらった
- インスパイアでGo版のgodzilというものを作っている
- 年初にいくつかpull requestを送った
- badgeのURL変更 -> https化
- masterブランチコンベンションの廃止
- 世の中の変化に追随
- syohex++ skaji++
Perlの良さ
- 自分の道具箱に入っている
- 一生使うでしょう
- sed/awkを使うより良いと思っている
- 正規表現のeオプションがとにかく便利
- まだ使われている
- DuckDuckGo, Booking.com, cPanel, Fastly...
- LINE, DeNA, Mobile Factory...
- ちゃんと進化している
- 利用が減少している現実はある
- SDK等のサポートが乏しくなっている現実
- 僕も新規プロジェクトで採用することは無いと思う
Web会議中にライトを付ける
Perlから学んだ少し悲しい現実
- 良い技術が世で積極的に使われるとは限らない
- ユーザーに優しいことが弱点になることもある
- 後方互換をどれだけ大事にするか
- ユーザーに合わせすぎることが足かせになることも
- CPANの仕組みの涙ぐましい努力
- TMTOWTDIの土壌
Launchable
Jenkins
- 革命的だった
- CIが民主化された
- クラウドがなかった時代
- みんながテストを手元で実行していた(実行していなかった)
Ukigumoシリーズ
レイヤー分離されている綺麗な設計。
- Ukigumo::Server
- Ukigumo::Client
- テスト実行クライアント
- テストを実行して結果をサーバーにAPIポストする
- Ukigumo::Agent
- テスト実行ノード
- イベントを受け付けてテストを実行する
疎結合であることの特性(Ukigumo)
- 手元での実行結果もサーバーに投げられる
- 分散実行がやりやすい
- 反面オールインワンじゃないわかりづらさもある
密結合ならではの良さ(Jenkins)
- 全部入りのわかりやすさ
- Plugin機構
- 意外なキラーコンテンツ
- 実行中のアウトプットを見られる
- CircleCI, GitHub Actions等では当たり前になった
- ワークフローパイプライン
学び
- 思わぬ使われ方の中に進化の種がある
- 常に疎結合が正しいわけではない
- コミュニティによる設計思想の違い
私とYAPC
- 2009年から大体参加
- 2012年からスピーカーをすることが多い
印象深いYAPC
- 2009 YAPC::Asia 初参加 Plack回
- 2012 YAPC::Asia 初登壇 スピーカーハッカソン
- 2013 YAPC::Asia 中国語LT
- 2015 YAPC::EU グラナダ
- 2019 YAPC::Tokyo ベストスピーカー
2009 Plackの凄さ
- 当時はその価値が分からなかった
- miyagawaさんがエコシステムを作った
- PerlのあらゆるWebフレームワークで使われる共通インターフェース
- 技術を作る側
- 使う側のCasualさも大事
2012 初登壇とスピーカーハッカソン
- 公式コンテンツではなくて有志によって開催されていた
- CPANモジュールのメンテナンス
- YAPC会期中にでたアイデアの実装
- ハッカーの末席に加われたような嬉しさ
2013 中国語LT
- Rijiの紹介
- YAPC::Asia なのだから中国語もあっていいだろうと思った
- ウケてよかった
- LTとトークのハードルの逆転現象があった
- 偉大なLT職人達: makamaka, moznion, dameninngenn
- コミュニティーに認知されてきた実感
2015 YAPC::EU グラナダ
- Uzullaさんのベストトーク契機
- 日本のPerl Mongerが何人もトークしに行くムーブメントが生まれた
- 海外が身近になった
2015 YAPC::EU 前夜祭
2015 YAPC::EU 登壇
2015 YAPC::EU 🍺
2015 YAPC::EU 🍺
ISUCON2
- typesterがRedisを投入して勝った
- 飛び道具がキレイに嵌った
- 国内でRedisブームが到来する
- typesterの技術審美眼には度々驚かされる
- typesterに「Songmuさんには安定感があって安心」と言ってもらえた
- その後の仕事でも
- Natureのキャリアにつながっている
- 余談: Text::Xslateの凄さ (gfx++)
私はメンテナンスが好きだし得意
- 育てていく過程が好き
- 新しいものを作る人は飽きっぽい人が多い
- 事業も引き継いだ
- 自分のそういう特性に気づけた
- 生み出すのが得意ではないジレンマはある
技術的負債
- 技術的負債を生み出したい人なんていない
- 新しいチャレンジは技術的負債になりがち
- 責任を持てるかどうかは大事
- 技術的負債を恐れて新しいチャレンジができなくなることも問題
いろいろな人がいるから面白い
- プログラマー風林火山
- 弱点を補完する役割分担
- 自分と異なる人は新たな観点をもたらしてくれる
- 視野が狭いことも時には強みになる
- 無知なdisりはよくないけど
- そういうのも暖かく見守れると良いですね
私のキャリア
- キャリアアップ: リードエンジニア -> エンジニアリングマネージャー -> CTO
- そこからの IC (Individual Contributor) 回帰
キャリアアップの中での心がけ
- 自分がやりたいことをできる状況を作り出す
- 信頼を勝ち取ってから自分の好きな技術を導入するとか
- 正しく自己主張をする
- 察してもらおうとしない
- 自分の成果を説明できるようにする
- 自分を無条件に評価してくれる人なんていない
- 察してもらいたいなら察する
- 意図を汲む
- 過去の経緯・今の施策がどうしてそうなっているのか
- 仕事の報酬は仕事
- チャンスを逃さない
- 仕事を断らない
- その先にチャレンジがやってくる
順調な(?)キャリアアップの中で感じていたもやもや
- 砂上の楼閣感
- 基礎の英語力やエンジニアリング能力の不足
- 楼閣が崩れてしまうことへの不安
- 「人間力?」でごまかして生きてきた
- マネージャーとしての力不足
- 自分の未来が収束していくことへの不安
- 日本で技術幹部としてしか生きていけなくなることへの不安
Launchableでプラットフォームを作る
自分の夢が乗るソフトウェアがたどり着けるところと、他の人がその人の夢を乗せられる器のようなソフトウェアではたどり着けるところの高さが違う。
他の人が自分の夢を乗せられような、ってのがゴール
原体験が刺激された
- Plackの原体験が刺激された
- 僕にとってのOSSはナイフづくりでしかなかった
IC(イチ開発者)としてLaunchableに入社
- ワールドワイドなマーケットが相手
- エンジニア向けプロダクト
- Javaを書いている
- 公用語が英語
Pendulum Career
- キャリアも振り子・螺旋である
- 言いたいことは大体ここに書いてあった
マネージャー経験は糧になる
- 良い経験になったし、今も役立っている
- また戻るかも知れない
- グローバルなチームをマネジメントする機会もあるかも?
「変化は常に正しい」
- 保守的な自分に言い聞かせる言葉
- 変化力が持続性につながる
- 変化してまたもとに戻るのも変化である
- 経験になる
経験は強い
- 若い人は優秀
- 優秀でないと困る
- 知の高速道路は人類の叡智
- 若い人が優秀な業界は幸福
- 経験で勝る
- 老化による衰えも技術で抑えられる
英語
- 40歳手前から学習再開
- 死ぬまで極められない(=死ぬまで成長できる)
- 川口さんですら「読むのは日本語に比べて3倍遅い」
- 終わりがない道の楽しさ
- ソフトウェアエンジニアリングも同じ
英語は別にマストじゃない
- できたらより面白いことができる可能性があるという話
- 他のハイクラスな職種は、英語が"マスト"であることも多い
- 英語がそれほどできなくても海外や近い環境で働けるチャンスがある
- ソフトウェアエンジニアは恵まれている
テクノロジーと英語
- 英語に対する敷居は下がっている
- テクノロジーの力は素晴らしい
- 学習アプリも充実している
- 殆どが機械翻訳で成り立つ未来は来る
- でも全ては置き換えられないし、置き換えて欲しくはない
- 言語の多様性が文化を生む
- 正しいコード・個性のあるコード・美しいコード
- 正しい文章・個性のある文章・美しい文章
原体験を大事にしたい
- 変化し続けていく中での行動原理
- 根源的な欲求が大事
多様性
- 様々な魅力的なハッカーの存在
- 自分を受け入れてくれたことへの感謝
サブカルからメインストリームへ
- 社会的責任が伴うプロダクトも増えてきた
- 高学歴エリートの参入も増えてきた
- 優秀な人が流入してきてより面白いことができるのは良いこと
- エリートとのシナジー
ハッカー: ゼロからモノづくりができる
- 業界の成熟と細分化に伴う環境の変化
- アイデアを出すのは「ビジネス側」で安定的な基盤や開発体制を整えるのがエンジニアリング?
- それも一つのあり方、だがそれだけではない
- コモディティ化の落とし穴
- 可換可能になりすぎるリスク
- イノベーションを生み出せる側であって欲しい
- Plack, Jenkins
- Google, Facebook, Hatena etc.
- もちろんエンジニアだけの特権だとも思ってはいけない
Webエンジニアバブルをどう捉えるか
- 市場価格に自分の価値を決めてもらい過ぎない
- 自分の価値を自分で決められるのが理想
- 今の市場価格の根拠を説明できるか
- 私も完璧にできる自信は無いのだけど
- イノベーションを生み出す側にいられられなくなるリスク
- 「エンジニアは単価高いから事業立ち上げには不要」と言われてしまいかねない
- ソフトウェアエンジニア界隈が巨象化してイノベーションのジレンマに陥るリスク
多様性: 「変な人」を直ぐに排斥して欲しくない
- Brilliant Jerks問題
- 「口の悪いハッカーの時代は終わり」
- 言いたい事はわかるけど
- 排斥の言葉にも聞こえる
- 本当に変な人なのか
- 優秀な人が入ってくるのは良いこと
- 同様に爪弾き者も受け入れる業界であって欲しい
- そういう多様性がイノベーションにつながると信じている
ソフトウェアエンジニアの素晴らしさ
- ローリスク・ミドルリターン
- 人生の充実
- 「自由」な職業
- 多様な働き方があっていい
ソフトウェアエンジニアが増えて欲しい
- 増やす必要がある
- まだまだコード化されるべき領域は多い
- 思いついたことをコードに落とすのは時間がかかる
- シンギュラリティはまだ先
- 世界は複雑で変化し続ける
ソフトウェアエンジニアになれる人を増やす
- ゼロサムではない・プロスポーツとの違い
- パイを広げる余地・必要がある
- いろいろな人を受け入れられるように
- 超人だけが生き残れる世界ではあってはいけない
- 「〇〇じゃないと生き残れない」とか言わない
- 土日にコードを書く必要はない
- 書きたい人は書けばいい
自分が続けたいこと
アンラーニングできていない?と思うことはあるが原体験なので大事にしたい。
「死ぬまで続けるかも」という感覚を持つようになってきた。
感謝
- YAPCに
- ハッカーの皆様に
- Perlコミュニティに
- ソフトウェア・エンジニアリングに
- OSSカルチャーに
- Web業界に
宣伝
- Launchableに興味ある方是非連絡ください
- ただし、採用は現在空いていません
- 採用が空いたときにお知らせすることはできます(僕もそのルート)
- 個人スポンサー等してもらえると嬉しいです