見出し画像

35歳になったソフトウェアエンジニアがこれまでとこれからについて想うコト

ソフトウェアエンジニアにとって35歳定年説は散々語り尽くされたネタなので、あえて自分が何か書くことでもないよなと思いつつ、実際35歳の誕生日を迎えたここ数日、これまでの事や、これからの事をふと考えていたので、つらつらと書いてみようと思いました。

自己紹介

楽天でフリマアプリ「ラクマ」のEngineering Managerをしています。

僕の専門はiOSエンジニアで、ラクマのiOSとAndroidのエンジニアが所属するMobile Application Development Teamのマネジメントと、もう一つ大きいレイヤーでサーバーサイドエンジニアの2チームが所属するService Application Development GroupというグループのVice Managerもさせていただいています。

普段はiOSアプリのコードを書きながらチームマネジメント、プロジェクトマネジメント、プロダクトマネジメント、採用、評価に携わらせてもらい、ある程度組織の意思決定にも関わらせていただけるようになりました。

27歳のときに思い描いた35歳の自分

今の自分に至るまでは、本当にしがない、ソフトウェアエンジニアの底辺にいた自分が、27歳のときに思い描いたロードマップを元に、少しずつ着実に自分を変えることができました。

27歳当時、僕は会計システムを開発している会社で働いていました。
担当してたのは中小企業向けのシステムで、Windows上で動く昔からあるクライアント・サーバー型システム。Windowsのデスクトップアプリケーションとして、財務データを表示したり、設定画面のメンテに携わっていました。

開発環境は当時でも化石のようなDelphi 5。言語はObject Pascal。あとはDBアクセスするのでSQLは使えたのと、一部C#で書かれた機能もあったので、少し分かる。その程度です。

チケット管理?Excelでやりますよね?  git?なにそれ?

当時のスキルを今思うと本当にヒドいもんです。転職はあまり考えていませんでした。当時2012年頃は、今なんかに比べるとまだまだ転職市場も活発ではなかった気がしますし、古い会社でしたので、転職をする人もいなければ、中途入社で来る人も少なかったです。
1クラスが数万行のコードをデバッグし、バグを見つけることがスキルアップしていく手段だと思っていました。

Rebuildと出会い、もう一度Web業界を目指す

ラジオが好きだった流れで、Podcastを聴くようになり、そこでRebuildに出会いました。

まったく分からないWebの技術、そしてその進歩の速さにとてもワクワクして聴いてました。
自分の知ってる知識といえば学生時代にレンタルサーバーを借りて、フリーのFlashサイトのテンプレートをメモ帳にコピペし、FTPでアップロードしてたくらい。

憧れはあったので就活ではWebサイト受託会社に応募したけど全敗した過去がありました。

世の中的にも新しいWebサービスがどんどん生まれ、とにかくこのままでは完全に置いていかれるという危機感でいっぱいでした。

この世界に行きたい。

就活での失敗から、もう一度チャレンジしたいという思いで、どうやったらあちら側に行けるのか、自分には足りないのかを考え、巷で言われている35歳定年説の35歳までにはどんな自分になっていたいか。を考えました。

その当時考えたことは、

あと3年以内でWebの技術を身に着け、30歳までに転職をする
・その後3年後くらいにtoCのサービスに携わる。サービス規模もある程度大きいところを目指す
・35歳までにチームのマネジメントをしている

という感じのマイルストーンを漠然と考えていました。
今のようにエンジニアスクールなんてないのでWebエンジニアとして転職を目指すには独学でやっていくしかありません。
何かしら形にする必要があるなと思いました。

クラウド事業の立ち上げのため異動

焦りを感じていながらも、何者でもない自分。

『リーダブルコード』あたりを読んだ少しの技術書の知識と、Rebuildで語られたWebの技術を少し調べた程度の知識で、会社では今自分達が使ってる技術は時代遅れだ、もっと勉強しないといけないだの生意気にも先輩に語っていました。

しかし、そんな感じの熱量を持つ若手はいなかったので、クラウドサービスの新規事業を立ち上げるという会社の方針で、新設部署の異動の話をもらい、異動しました。

画像1

(当時会社の業績も良かったので社員旅行でシンガポールに行ったときの写真)

当時の技術スタックとしては、フロントエンドはHTML5、CSS3、JavaScript。SPAでknockout.jsでMVVMパターン。サーバーサイドはASP.NETでC# 5.0でasync/awaitで非同期処理を書き、Azure上にPaaSでマネージドサービスで構築。
モバイルアプリの技術検証も必要だったので、当時はEclipsで苦労しながらAndroidの開発環境を揃えてJavaを学び、個人のMac BookにXcodeを入れ、Objective-Cを勉強しながらPush Notificationなどをサーバーから送って実機で受け取るところ試したり。

今では別に普通のことなんだけど、当時Object Pascalと少しのC#の知識しかなかった自分にとっては、猛スピードで追いつかないといけないので、とにかく勉強をしていかないといけないのと、チームは自分以外にも数名いましたが、皆自分よりも後輩だったので、インプットしたのを後輩へアウトプットとして教えるというのを繰り返していました。
当時読んだ技術書の中でもやっぱり『Webを支える技術』は良かった。

勉強会の存在を知り、自分の未熟さも知る

この頃初めて勉強会というのを知り、ドキドキしながら行ってみました。
初めて行ったのはDokugaku Dojyoという渋谷にあるGoodpatchさんのオフィスで行われていた勉強会でした。
いろんな方と交流をしながら、おしゃれなGoodpatchさんのオフィスを見学させてもらったり、転職についての相談なんかも話しましたが、自分の未熟さを知り、彼らとの差を肌で感じることが出来たのが良かったと感じました。

Swiftの登場と、初めて個人アプリをリリース

そんなこんなで初めて作ってるWebサービスを社内デモをできるようなところまで作っているときにWWDC 2014でSwiftが発表されました。

Swiftのシンタックスの美しさや、Objective-Cで挫折しかけたiPhoneアプリ開発に惹かれ、個人アプリを作ってリリースまでやってみることにしました。当時の業務で携わっていたプロダクトの方向性が定まらず、リリースが何度も延期されていた状況への反骨精神もありました。

初めてのアプリリリースは確か2ヶ月ほどかかりました。業務ではインフラからサーバーサイド、フロントエンドとフルスタックで仕事しながら、個人としてiOSアプリを出したことで、次に自分が進みたい方向性も見えてきました。

自分の関心はUI/UXに寄っている事が分かった
・Swiftは1.0がリリースされたばかり、遅れている自分でも戦える余地があるのではないか
・世の中的にはもうモバイルファーストになってる。モバイルエンジニアの需要はこれからも伸びるだろう
・自分が目指している大規模サービスでは専業化が進んでいるだろうから、フルスタックエンジニアより何かに特化した方が採用されやすいのではないか
・モバイルエンジニアでかつマネジメントスキルも身につけられれば、将来の武器になりそう

という感じで、徐々にiOSアプリ開発に比重をシフトしていくことにしました。

モバイルエンジニアとして転職にこぎつける

丁度30歳の歳に、個人アプリをリリースできたこともあり、知り合いのツテでモバイルエンジニアとして転職の話を頂くことができました。
"30歳までに転職する"という目標は過ぎてしまったものの、何とか1つ目のハードルをクリアすることができました。

画像2

モバイルエンジニアといっても、アプリエンジニアではなく広告SDKのエンジニアです。

iOS, Android, Web, Unity, Cocos2-xに向けたSDKを開発するチームでしたが、SDKなのでObjetive-CとJavaでの開発だったり、iOS SDKは結構レガシーでMRCのコードもかなり残っていました。
Swiftを入り口として入った自分としては、多少ハードルはあったものの、メモリ管理は懐かしのObject Pascalで経験していたので、もう一度ゼロからObjective-Cを勉強し直しながらARCへとリファクタリングしていきました。このときにAndroidやWebも引き続き学べたのは良かったです。

次のステージへ進むための準備

転職して業務をこなしていく中でも、次のステージを見据えていました。

簡単なライブラリをOSSとして公開、FirebaseやRxSwift、go、GCPなど周辺の技術を使って2本目のアプリをリリース。勉強会への登壇。
この頃に一番嬉しかったのはSwiftへコントリビュートできたこと。(ほんの数行の変更だけだし、英語も怪しい)

この当時とても勇気を与えてくれたのがtry! Swift 2016のセッションでした。

どのようにコントリビュートしたらいいかを詳しく説明してくれているのと同時に、

完璧でなくてもいいし、詳しくなくてもいい、なんでも知っている人はいないんだから、まずは初めてみましょう。
コアチームは初心者でも受け入れます。
真摯にコミュニケーションを取ることが大切です。

とOSSコミュニティの温かさや、エンジニアリングの大切な精神を伝えてくれました。

2度目の転職とEngineering Managerへシフト

アウトプットがいくつか出来てきた頃、2018年の32歳のときに楽天に転職が決まりました。
当時のラクマはFablic社を買収しフリルと統合をした直後でした。
ものすごい勢いの競合サービスと、買収により多くのメンバーの退社。
アプリエンジニアはiOSとAndroid一人ずつが残ってくれているという厳しい状況でした。
しかし僕にとってはメンバーが少ないからこそ、次の目標だったチームマネジメントに食い込めるタイミングで入社することができました。

とにかく人がいないので、3ヶ月で当時のマネージャーからマネジメント業務を徐々に引き続き、半年で正式にマネージャーとしてやらせてもらえることになりました。

2019年まではFablicから残ってくれたメンバーも徐々に退職し、とにかく組織の再編成と、サービスの基盤を整えるのにかなりの時間を使ったと思います。
2020年になり、徐々にメンバーも増えてきて、やっと安定的に機能改良に着手出来てきました。

先日やっと出品画像を10枚に変更しました。App ReviewやSNSにも要望が来ていてもたくさんの声が来ていて、ずっとweak pointなのは当然分かっていました。画像アップロードのAPIとテーブル構成はローンチ当初からあまり手を加えられておらず、変更を加えにくいボトルネックとなっていたのと、着手がなかなか出来ない体制に皆悔しい思いでした。
今はまだアップロードに時間がかかるので、改善していきたいと思うんですが、久しぶりにユーザーが喜んでくれた声が聞けてエンジニア冥利に尽きるなと思いました。

これからについて

とりあえず27歳のときに考えていた
"35歳までに大規模toCサービスでマネージャーとしてやってる"
という目標は到達できました。

モバイルエンジニアとしてどのようにキャリアパスを進むのかは、悩ましい課題です。世代として自分達より上のモバイルエンジニアが少ないので、自分で切り開くしか無いと思っています。
モバイルエンジニアからどのように守備範囲を広げていくかでいうと、まぁ今のところはプロジェクトマネジメント、プロダクトマネジメントを深堀りしていくのと、組織課題へのチャレンジはどのチームでも応用できるスキルになると思っています。

今のチームはエンジニアとしても成長できるし、マネージャーとして組織課題に立ち向かっていけるのはすごくいい環境だと感じてますので引き続き頑張っていきたいです。

ここまで読んでくださった方へ

参考になるかわかりませんが、もし27歳の当時の僕のようにソフトウェアエンジニアとして3〜4年やってきたが、今の状況に悩んでるようでしたら、3年後、5年後、8年後とどうなっていたいか何が足りないかを整理すると、いいんじゃないかなと思います。
夢は必ず実現するとまでは言えません。当時8年後にGoogleに入ると目標立てても入れるとは思いませんが、当時の僕にとっては楽天も遥か遠い存在でした。
僕の場合は、やれることを着実に積み重ねていきながら、チャンスが来たら飛び込んでみることが大切でした。

35歳になってもまだまだ成長できます。定年説もありませんし、学ぶことに終わりありません。
ただ一つのマイルストーンとして置くには良さそうです。
35歳で何をしていたかは、40代、50代にきっと役に立つと思ってます。

ここまで読んでくださり、ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?