流沙河鎮

情報技術系のこと書きます。

30歳になったのでIT業界で過ごした20代を振り返る

いくつかの大胆なフェイクが混ぜてあるので、以下はフィクションである

先日30歳の誕生日を迎えた。僕にとっての20代は文系学部を卒業して全くの未経験からIT業界に入り、亀の歩みで適応し、何とかITエンジニアの端くれを名乗れなくもない程度まで成長を遂げるまでの期間であった。世の中には若くから情報工学を志し、素晴らしいスキルと実績を兼ね備えた人々が星の数ほどいるが、自分はそういった人間ではない。中学生の頃から数学が全くできなかったし、大学は文系私立だし、学部生時代にプログラミングに触れたことは一度もなく、就活は雰囲気で受けたら受かったSIerに入った。IT業界を選んだのは何となくITがカッコ良さそうだったからで、情報システムのことなど何も分かっていなかった。僕が就活をしていた2015年頃は、文系未経験でも大きめのSIerならITのことがよく分からなくても下請けが何とかしてくれるので無問題(そんなわけないだろ!)といった噂が身の回りの就活生の間で囁かされていた。IT業界で身を立ててやるぞなんて意気込みはなかったし、盤石な企業規模のSIerで程よいワークライフバランスを維持しつつ順当に悪くない給料を貰って生きていけたらいいなとか、最近は第二新卒市場も盛んらしいから上手く行かなかったら他業界に転職すればいいやとか、そんなことばかり考えていた。

ゆるふわ新卒時代から7年が経ち、1度の転職を経て気がつけばIT業界に肩まで浸かった日々を過ごすようになった。恐れ多くも僭越ながら人様の設計相談に乗ったり、実装支援したり、技術選定の助言をしたり、勉強会の講師をしたり、時には組織規模の技術戦略を提言したりといったことで飯を食べている。多少は知っていると言えなくもない技術領域も出てきており、クラウドを用いた設計全般やデータ分析基盤に関しては少しは語れると思う。鬼のように堅い業界で統制を守りつつ新しい技術を活用したり機動的な開発/運用を推進できるよう日々戦っているので、スケーラブルな統制の整備に関しても多少は語れるかも知れない。自分なりの思想/好みめいたものも芽生えてきていて、プラットフォームにおける統制と自由のバランスであるとか、仕組みが技術的/運用的/組織的にスケールするかであるとか、プロダクト指向で自己組織化されたチームの組成であるとか、アプリとインフラ/開発と運用/技術とビジネス一体でのチーム運営であるとか、そういったテーマについて考える時間が増えた。仕事以外の時間は趣味の開発をしたり、気になる技術を調査したりして過ごす。交友関係は業界関係者が殆どを占めており、毎日のように気になった技術ネタを送り合い、飲みに行けば日付が変わるまで技術談義に花を咲かせる。まだまだ知らないこと、分からないこと、出来ないことが多く、業界に入って7年経っても自分が「一人前のITエンジニア」である自信は持てていないが、少なくともそれを目指したいと願っている。

既にキャリアは安定軌道に入っているかといえば全くそういうわけでもなく、20代はゼネラリスト的に生きてきたので、次は何かの分野を極めてみたい気持ちが高まっている。そんな節目を迎えていることもあって、これまでの足跡を振り返ってみようと思う。

[2016][22 - 23歳] 新卒研修と初めてのプロジェクト

深く考えずに入ったSIerは古き良き日本企業だった。同期はほとんどが理系で半数以上が院卒、情報科出身もゴロゴロいたので、人事部がなぜ自分を技術職で採用しようと思ったのか理解に苦しんだのを覚えている。新卒研修ではトラディショナルなSIerならではの平凡ながらも手厚いカリキュラムが準備されていて、アプリからインフラまで手広く基本を学べるようになっていた。しかし、自分はどうにも座学というのが苦手で講義をじっと聞いていられず、覚えたばかりのJavaをずっと書いていた。今思えばインフラの話はもう少し真面目に聞いておけばよかったと反省している。
研修が終わり、配属の季節がやって来た。企業としてはあらゆる業界をカバーしている中で、事業部門によって担当が分かれていた。R&Dなどの部門もあったがIT素人の自分には縁のない世界で、僕が配属されたのはエンタープライズの中でも最も堅い業界の1つといって差し支えないであろう領域を担当する部署だった。
初めてのプロジェクトはちょっとしたWebアプリの開発と保守だった。当時の僕は新卒研修こそ受けたものの実際の業務では素人に毛が生えた程度にすぎず、とにかく人並に仕事が出来るように追いつくので精一杯だった。PMであった上司は厳しく、顧客との話し方、ドキュメントの作り方、設計、実装、テスト、リリース等々、事あるごとに非常に厳しく詰められた。当時ゆるふわ新入社員であった僕にとっては良い薬であったと思うが、何かにつけて周囲の人々に庇って貰ったり、分からないことを一つ一つ懇切丁寧に頂いて少しずつ仕事を覚えていった。ダメすぎる新人を暖かく支えてくれたプロジェクトメンバーには今でも感謝しかない。

[2017][23 - 24歳] システム完全に理解した → 何もわからない

1年目と同じ案件に引き続き携わった。規模が小さく複雑な仕組みでもなかったこともあり、2年目も終わりに差し掛かってくると全貌が把握できて、大抵の機能は何処をどう弄れば作れるのか分かるようになってきた。一度仕組みが分かってしまうと刺激が少なく退屈に思えて、なにか新しいことがしたい欲望が湧いてきた。実際には分かっていないことの方が多かったのだが、当時は自分の狭い責任範囲の中で表層しか見えておらず、「完全に理解」した気になっていた。
そんな折、個人的な友人からちょっとしたツールの開発を依頼された。Excel VBAでボタンをクリックするとインターネットをクロールしてレポートを表示するツールで、既に愛用しているものに機能を追加して欲しいということだった。ちょうど退屈していた時期だったので都度飯などを奢ってもらいながら色々と機能を足していたのだが、ある時これを日次で自動で実行するようにしたいと依頼された。最初に考えたのはExcelを開いたパソコンを何処かに上げっぱなしにしておいて周期的に実行させる仕組みだったが、それはいくら何でも原始的すぎるし、不安定すぎるように思えた。そこで調べた所、サーバー?を使えばパソコンを上げっぱなしにしておかなくてもプログラムを動かせる?らしいことが分かった。いやお前仕事でwebアプリ作ってたんとちゃうんかと突っ込まれても仕方ないが、当時の僕は自分が作ったアプリがどういう理屈でデプロイされ、webに公開されているのか全く理解していなかった。アプリとインフラを担うチームが会社レベルで分かれていて、ローカルで動く状態になったアプリをビルドしてインフラ担当の他社チームに渡すと、何かしらミラクルな作業が発生してブラウザからアクセスできるようになる、ぐらいの解像度で理解していたのである。そういうわけでVBAを動かすサーバー?をどうすれば使えるのか調べていた折、Amazonが貸しサーバ屋さんをやっているらしいことを知った。これがAWSとの出会いであった。如何せんそのレベルからスタートしたのでUbuntuを1台建ててSSHで繋ぎこむだけで相当な苦労があったのだが、ようやくUbuntuが用意できてさぁツールを動かすぞとなった折にとんでもないことが分かった。なんとUbuntuではExcel VBAが動かないのだ。じゃあ仕事で使ってるJavaで書けばいいじゃんという話なのだが、今となっては思い出せない意味不明の理由で僕はUbuntuJavaを動かす方法が分からなかった。そしてこれも今にしてみると意味不明だが、当時の僕はJavaは動かせないがPython?なら動くっぽいぞという結論に至った。そこで、退屈なことはPythonにやらせようを読んでPythonを覚えて、VBA製のクローラーを書き換えた。その後も定期実行に用いるcronを発見するまでに時間がかかったり、そのままでは友人氏がクロール結果を確認できないのでSESでメールレポートするようにしようとしたらSPF, DKIM周りで詰まって届かず悶絶したり、seleniumを導入したらheadless chrome がアホほどメモリ食ってOOMで死んだり、後にサーバレスの存在を知って上げっぱなしのEC2からLambdaへ移行したら無料枠に収まってインフラ代がほぼタダになったりとアクロバティックな思い出が沢山あり、その全てが後の仕事に活きる貴重な財産になったし、どうやら自分はシステムのことをまだ何も理解してないらしいぞと気づくきっかけにもなった。

[2018 - 2020][24- 27歳] 新たな門出と愉快な日々

趣味のクローラーは順調に拡張が進む一方、本業は停滞しており行き詰まっていた。そんな折にプロジェクトを異動することになり、これが人生の転機になった。新しい案件では自分1人で顧客企業に出向することになった。チームは大所帯だったが、そこに自社の人間は1人もおらず、僕は見習いスクラムマスター兼エンジニアとして徒手空拳でチームに居場所を見つける必要があった。新天地のシステムは古典的な大企業のシステムとしてはクレイジーと言える要素を多数含んでいて、ここでの経験はあらゆる点で過去の2年間から一線を画していた。開発/運用、アプリ/インフラでチームの境目がなくシームレスに全てに関わることが出来たし、技術組織とビジネス組織が限りなく近い距離に有り、全員がより良いプロダクトの実現と収益向上に向けて一丸となって動いていた。収益を追求するシステムで、新機能を出して暫くすると収益影響を示すレポートが回ってきて成績がいいとフロアで歓声が上がった。プロセスはスクラムで、古典的なウォーターフォールで育った自分にとって全く新しいパラダイムだった。重要業務を担うに足る信頼性と競合を出し抜くための高頻度な改善を両立する必要があり、トラフィックは莫大かつ右肩上がりに増えていて、それらを複数のDCで動く数え切れないサーバ上の膨大なプロセスがカオティックに絡み合いながら処理しており、それぞれの要素は頻繁に更新されていた。技術スタックは多岐にわたり、エッジが効いていて刺激的だった。システムは24/365、チームの半数は海外にいて、ユーザもグローバルだったので開発も運用も文字通り夜討ち朝駆けだった。
極めつけに、そこでは現場の開発者やチームが作るべきと思うもの・作りたいものを自分で考えて提案して、認められればすぐに作ってリリースすることが出来た。これは鈍重な事前検討や稟議による予算確保を踏まえて案件を組成してから実開発が始まることが多いエンタープライズでは稀有というか、他で聞いたことがない環境で、日常的にビジネスサイドと会話して機能をどんどん足したり、プラットフォームを改善したり、新しいアイデアを実験したりといったことに、全体の指針、エコシステムとの整合性を破壊しない範囲で好きなだけ取り組むことが出来た。土曜日にナイスなライブラリを見つけたので、土日に自宅で技術面やライセンス面等を検証して、月曜の日が昇らないうちに職場へ行って実装してテストを通し、夜明けとともにみんなに説明して賛同を得て、昼にはリリースするようなこともあった。
この頃はとにかく大変で、とにかく楽しかった。複雑で広大、日々変わりゆくエコシステムは常に何処かしらが壊れていた。局所的にコンポーネントが壊れるのはチームのアジリティとトレードオフな部分もあり、当時の僕たちの能力も鑑みるとやむを得なかったと思う。スクラムマスター業の傍らでエンジニアとしては開発と運用の狭間の役回りで動くことが多かった自分は、所々に綻びが有りながらも全体として決定的な破綻をきたさないよう、信頼性や障害回復力、可観測性を高める努力をした。加えて、システムに集まるデータの分析基盤の面倒も見るようになり、日々増え続けるデータを受け止め続ける難しさと、よりよく利用できる仕組みを作る面白さを知った。チームには一生かけても追い付けないであろう素晴らしいエンジニアが沢山いて、そんな人々とシステムや技術について話すのが何よりも楽しかった。

[2021 - 2022][27 - 29歳] 初めての転職とここ数年の暮らし

面白おかしい日々にも終わりが来た。本籍のSIerからそろそろ出向を解除するので戻ってきなさいと指令が出たのだ。しかし、この頃には自分が目指したいキャリアと会社が期待するそれにギャップを感じるようになってきていた。これは会社が悪いというよりは、自分が直近の数年で古典的なSIとは異質な環境に慣れきってしまったので、その世界へ帰っていけるイメージが持てなくなってしまったのだ。同時に、5年間向き合ってきた業界全体にも自分なりの課題感を持つようになっていて、鈍重かつ高額でレガシー、非ビジネス/ユーザ指向なシステム/チームが多い現状を組織、業界規模で変えていくには今とは違う立場で顧客に相対する必要があるのではないかと感じ始めていた。

そこで転職を考え始めたものの、いわゆる上流工程や抽象的でマクロな問題だけに集中する立場ではなく、あくまで技術者として顧客のシステムをより良いものに変えていく手伝いができる仕事がよかった。そんな折、その要求を満たせそうな、顧客企業のマクロなIT戦略から個別システムの局所的な議論まで、粒度を行き来しながら自由な裁量で取り組んでいける面白い仕事を見つけた。それで早速応募してみた所、幸いにも縁があったので転職することにしたのだった。
現職はなかなかに刺激的な仕事で、様々な企業、チームから舞い込む技術相談に応えたり、提言するのが主な仕事だ。対象が特定の技術領域に限定されないのが恐ろしいところで、コンピューティングやネットワークといった足回りの話から、特定のミドルウェアに関する話、データ分析やオブザーバビリティといったテーマ、内製化推進やセキュリティポリシーの見直しまで本当にありとあらゆるテーマが飛び込んでくる。支援の形態も「非エンジニアでも分かるように概要を教えてくれ」といったものから「技術的な詳細を解説して欲しい」「作るのを手伝って欲しい」「作ったのをレビューして欲しい」「運用に載せたら問題が出て困ってる」等々本当に多岐にわたる。これらはなかなかに難しい作業で、断片的な資料やコードから全貌を読み取ってフィードバックしなければならない。無邪気に理想論を口にすれば良いというものでもなく、顧客のプロセスやルール、チームのケイパビリティなどを考慮しながら妥協する部分、挑戦して頂くべき部分を見定める必要がある。プロセスやルールを変える必要があれば関係する部門へ一緒に出向いて話をつけに行くし、開発者のスキルが足りないならそれを補う方法を考える。組織の技術戦略を偉い人に提言するのも仕事の一部だ。もちろん全ての領域を自分1人で対応できるはずがないので専門家の支援を仰げる仕組みは整っているが、どんなテーマでもある程度までは独力で対応し切る必要がある。
明らかに自分のような未熟な人間に勤まる仕事ではない気がするが、詳しくないテーマに対応する度に滝汗を流しながらキャッチアップして何とかやり切り、だましだまし分かることを増やしている感じだ。業界や顧客企業の開発プロセスや設計思想、組織の在り方にアプローチしていく当初の目標も少しは達成できており、顧客と共に、組織の中で絶対変えられない/実現できないと思われていた物事をひっくり返した時の喜びは何物にも代えがたい。また、領域横断で色々な仕事をする一方で、前職時代から関心のあったデータ分析基盤に係る技術に関して徐々に理解を深めていて、周囲からサポートを依頼される機会が増えてきている。データ分析基盤に元々詳しいという程でもないのだが、色々な相談に乗っているうちに、気づけば人より少しだけ詳しくなっている自分に気づくのは面白いものだ。また、それを機会に自分が7年間向き合ってきた業界とは全く考え方が異なる、例えばゲームや(いわゆる)インターネット系の企業の顧客と話す機会が増えてきたのも刺激的だ。

[2023][29 - 30歳] これから

改めて20代を振り返ってみると、自分のような人間が今もIT業界に身を置けているのは本当に周囲の人やチームに恵まれたおかげだと思う。先輩方に受けた(今も受けている)恩を忘れず報いていきたいし、自分も既にいい年なので、これからに続く後輩たちに繋いでいく努力もしていきたい。