ジェネラリストとしての Site Reliability Engineer 論

ソフトウェアエンジニアとして働いていると、専門性を尖らせているキャリアが一番カッコ良い、というような言説に出会うことが多い気がします。

  • Web アプリケーション開発者より、フレームワークのコミッターに。
  • iOS 開発者より、ライブラリのメンテナーに。
  • データベース運用者より、データベース開発者に。
  • プログラミング言語を使う人より、プログラミング言語の開発者に。
  • 現場のプログラマーより、アカデミズムの研究者に。
  • キャリアホッパーより、同じ技術を10年磨いた熟練プログラマーに。

幻想かも知れません。ですが、実際の給与体系を見ても、キャリアに対する憧れとしても、何かの技術に特化している人は、確かに求められていることがわかります。最前線を切り開き、新しい基盤技術を開発し、社会にインパクトを残す。サイエンスの世界でいうなら、ポピュラーサイエンスの応用より、研究者。確かに、かっこいい。

ソフトウェアエンジニアの業界だけではありません。「手に職をつけたい」と、資格を取得したり、大学院に通ったり。専門性が無い人はまるで居場所がないかのような、そんな幻惑をこの社会に対して覚えることがあります。

興味関心がコロコロ変わる私は、そんなテック業界でどこか自分の居場所を見つけずにいる孤児のような感情を抱いたことがあります。プログラミング言語のコミッターでもない。有名フレームワークのメンテナーでもない。技術に興味があるけれど、経営や人間、社会科学やビジネスモデルにも興味が移っていく。

技術一つをとっても、モバイルエンジニアから、フルスタックエンジニア、バックエンドエンジニアとキャリアを転々としてきた。Blockchain も Machine Learning も手を出すし、アプリ開発の経験もある。逆にいうと、何かの専門に秀でているわけではない。データベースに興味を持っていたものの、その中のデータベースがどれかと言えば、Kafka も好きだし Neo4j も好き。もちろん MySQL にも愛着があるし DynamoDB も良く使う。器用貧乏といえばそう。

SRE との出会い

ですが。私が数年前に Site Reliability Engineer (SRE) として働き始めてから、徐々に心地よさを覚えていきました。

最初はその心地よさの源泉が言語化できなかった。自分が開発したわけでもない複雑なシステムを目の当たりにし、いきなりアラートが飛んできて、なんとか手掛かりを見つけながらデバッグしていく。そのパズルを解くような感覚が好きだったと良く言っていた気がします。

確かにその「課題解決を楽しむスリル」があるものの、その心地よさとはまた別の次元のような気もしてました。

"Range" との出会い

"Range" を読んだのはごく最近のこと。このスペシャリストが尊ばれる現代社会の中で、あらゆるスキルを平均的に持ち合わせながら、複雑な問題を解いていくジェネラリストにスポットを当てた本です。

その本を読みながら、気づいたことがあります。会社や個人によって求められるスキルは違うでしょうが、少なくとも私が経験してきた SRE の職務は、技術の中でも限りなくジェネラリスト気質に合っている。

ネットワークレイヤーについても理解しながら、データベースのデバッグもできる。フロントエンジニアリングやパフォーマンスチューニングについて理解しながらも、バックエンドのコードも書ける。責務を持つシステムが複雑怪奇になればなるほど関わってくる技術は増えてくる。そんな中で必要なのは、特定の技術に対する深い技術ではなく、目の前の課題を抽象化して、過去の対応実績やスキルを相対化して幅広いインシデント対応に応用させていく、ラテラル思考(水平思考)。

もちろん、会社によって、チームによって、どことなく得意不得意は出てくる。それでも、基本的には幅広いスキルを求められる。一つの技術を取ると専門で開発しているディベロッパーには敵わないけれど、その幅の広さ、Range を持っているということ自体が強みになる。

それに加えて、インシデントを対応していくときに数々のステークホルダーを巻き込んでいくソフトスキルはもちろん、プロジェクトマネジメント力や技術以外の対人関係スキルも求められる。

好奇心のその先に

好奇心のむき先がコロコロ変わる、器用貧乏な私にとって、そんな SRE という職種が心地よく感じた原因は、ここにあるのかも知れない。そう気づいたのでした。

2023-03-28