見出し画像

「iOSアプリエンジニアだけど、バックエンド開発もしてみたい!」を叶えたGOの交換留学の取り組み

はじめに

皆様、はじめまして!GO株式会社の髙橋です。

GO株式会社のエンジニア組織では、一定期間自身がメインとして担当している業務を離れて、自身と関係のある部署に「留学」し、留学先の業務を担当できる「交換留学」という取り組みが存在します。

私は普段はiOSアプリエンジニアとして勤務していますが、ずっとバックエンド開発もしてみたいと思っており、今回、この交換留学を活用してバックエンドエンジニアの経験を積むことができました。

この記事では、「iOSアプリエンジニアだけどバックエンドも書いてみたい!」を支えてくれた交換留学という取り組みに、実際に参加してみてわかったことや、そこで得られたことについてご紹介します。

自己紹介

私は、GO株式会社(以下GO)に2022年12月に入社して以降、iOSエンジニアとして勤務しています。

前職はお野菜のEC会社で数年間iOSエンジニアをしておりました。
なのでiOSエンジニア歴はトータルで約9年ほどになります。

普段はiOSエンジニアとしてコードを書いたり設計したりレビューしたりしつつ、職場内で組織される職能横断チームのチームリーダーとして、実際のアプリ開発に携わるのはもちろん、チームで担当する案件やチーム全体の窓口担当としてチーム外とのコミュニケーションなども担当しています。
趣味はギターで、会社の軽音部で近く開催されるライブのために練習中です。
ストラトキャスターが好きです。ハーフトーンがとても良いですよね。

交換留学の取り組みとは

GOでは、タクシーアプリ『GO』を中心に社会の交通インフラを支える多様なプロダクトを開発しており、その中でも『GO』アプリのシステムは非常に複雑で、エンジニアには多岐にわたるスキルや経験が求められます。

システムの規模が大きく複雑な構成であるため、開発組織は技術領域毎に分かれています。
これにより各エンジニアは専門分野に特化したスキルを磨くことができる一方、異なる領域での知識や経験を積む機会は限られます。

エンジニアがより一層GOの開発に携わるうえでの総合力・技術力を高め、より多角的な視点を持つことは、GOのシステムの成長にとって非常に重要です。
そこで、GOではエンジニアが他の領域での実践的な経験を積むことを目的として「交換留学」という取り組みにチャレンジをしています。

バックエンド開発への憧れ

私は日々iOSアプリの開発をしていますが、サーバー側担当者の方と相談するたびに「コードベースを理解し、API開発の背後の考え方を把握できれば、もう一歩踏み込んだ提案ができるのに...」と感じていました。

サーバー担当者との相談に限らず、APIからはどのような値が返ってきて、それはどういうコンテキスト上にある値なのかをAPIのコードベース上で理解できれば、アプリの設計やデバッグの時にプラスになると思っていました。

そういった課題を感じている中、タイミングよくバックエンド部署との交換留学を募集しているという話があったので、参加してみました。

交換留学に入るにあたりやったこと

所属しているチームのチームリーダーだったこともあり、交換留学への参加にあたり下記2点の調整が必要でした。


  1. チームリーダーの業務をどうするか

  2. iOSアプリエンジニアとしての業務をどうするか

チームリーダーとしての業務は、たまたま同じチームに前任チームリーダーがいたため、前任のチームリーダーにお願いして調整しました。

iOSアプリエンジニアとしての業務は、今回の交換留学でバックエンド開発についての知見が増え最終的にはアウトプットが向上するため、短期的にはある程度チーム全体のアウトプットが下がってしまうことは許容していただくことで調整しました。


交換留学でやったこと

 今回の交換留学ではバックエンド開発メンバーとしてのオンボーディングを実施していただいた上で、実際に案件を担当しました。

 まず、オンボーディングの際、始めにバックエンドチームから「バックエンドチームメンバーとの関係値構築を行うためにNon1は実施されますか?」と提案をいただき、留学期間中の案件開発や今後の開発の両面で必須だと感じたため、関係値構築のためのNon1を実施させていただきました。
あまり触ったことのない技術領域ではありましたが、Non1を通して、普段のiOSアプリ開発で触れている『GO』の一部だったので、新たなサービスドメイン知識のキャッチアップが比較的少なく済んだのはありがたかったです。
 また、社内で展開されている資料でのインプットも行いました。バックエンドチームのオンボーディングの資料は充実しており、システム全体のアーキテクチャや各レイヤーの責務などをスムーズに理解することができました。
 尚、私が業務でGo言語を扱うのは初めてだったため、Go言語自体のインプットも行いました。チームメンバーに気軽に相談できたり、社内向けに展開されているAIツールを利用することで、大きなトラブルなく開発を行うことができました。

 オンボーディング後には、Go言語といういつもと違う技術領域に触れるのはもちろん、実際にバックエンドチームで乗車料金に関わる案件を担当させていただきました。

 開発の中で、またAPIインターフェースの決定の時には、「一度合意したAPIインターフェースをクライアント側の要望により修正を加える」という「バックエンド開発現場ならでは」の経験ができたのもよかったです。
一度合意したAPIインターフェースに修正を加えると手戻りが発生するため、基本的には避けるべきプロセスだったと考えています。
しかし今回の修正では、バックエンドとクライアントが両方歩み寄ってお互いの実装をより前向きな方向に向けるための修正だったため、結果的に修正してよかったなと考えています。

また本記事の趣旨からは少し外れてしまいますが、担当した案件のAPI開発完了後にそのまま自分がiOSアプリ側の実装も担当することになりました。
結果的に今回担当した案件では、APIの用件定義からクライアント側の実装までの開発作業全体を自分で担当することができ、大変良い経験ができました。


交換留学で得られたこと

1. APIの後ろにあるドメイン知識や考え方、バックエンドエンジニアの開発の知識と思考を吸収できる

実際バックエンドで案件開発に携わることで「このAPI返却値はどういう値なのか」というのを理解できました。
その結果、前々から課題に感じていた「バックエンドのコードベースを知っていれば、APIの背後の考え方がもっとわかれば、もう一歩踏み込んだ提案ができるのに...」というモヤモヤを解消することができました。

また「この値はアプリではこう使おうと思っているけど、APIとしてはこういう値だから、ちょっと使い方を変えてみよう」というように、バックエンドのドメイン知識や考え方を普段のiOSアプリ開発の設計などに活かすことができるようになったのもよかった点の1つです。

2. 事業戦略上の案件を担当することで、仕事の範囲が広がった

実際に案件を担当することで、自分自身の仕事の範囲が広がったと思っています。

事業戦略上の案件の特性として、リリース日が設定されており基本的にはそのリリース日を動かしにくいことや、計画的にリリースに向け動いていくために逆算したスケジュールが設定される、という点があると考えています。
この特性により事業戦略案件を担当する開発現場ならではの経験が生まれ、そこから「スキル」が得られると考えています。
これらのスキルは単純に「きちんと現場を経験したか、自分が開発したものがリリースされたのかどうか」といったわかりやすいものから、「GOの開発現場ではどのような会話がされているのか、何か意思決定をする時に何を優先的に決定するのか」といった言葉には表しにくい暗黙的なものまでさまざまなものを内包していると考えています。
これらの経験をしているか、経験により得られるスキルを持っているかというのは、自身の業務の幅を広げるための大きなステップの1つと個人的に考えています。

もちろん実際に案件を担当せずともこれらの経験を行うことは可能です。
しかし私はきちんと自分で担当した方がより多くの学びがあると思っており、今回の交換留学では実際に案件メンバーとして経験できたのでとても嬉しかったです。

3. 迅速に複数の領域を横断して調整できるので、施策の進行スピードを上げられる

今回バックエンドに交換留学して実際に案件を担当しました。
その結果下記2つができるようになり、施策の進行スピードを上げるための行動ができるようになったと考えています。

  • 比較的軽微な修正で進められる案件であれば自分自身で複数職能を担当し迅速に動ける

  • 中規模以上の案件でもバックエンドの背景情報を知っているので担当エンジニアとのコミュニケーションをスムーズに進められるなど、施策の進行スピードに寄与する行動ができる

まとめ

今回交換留学でバックエンドの開発を担当させていただくことで仕事の幅を広げることができ、複数プラットフォームの視点を持ちながら日々の開発を進められるようになりました。

開発において複数プラットフォームの視点があることは、単に開発期間が短くなるだけでなく、施策全体の開発期間を短くすることができ、お客様により良い状態で、より早く、プロダクトをお届けすることができるようになると考えています。

今回の交換留学でお世話になった弊社のバックエンドチームの皆様、そして自分を快く送り出してくれたアプリチームの皆様、本当にありがとうございました。

今後はiOSアプリ開発もバックエンド開発も素早く迅速にできるエンジニアとして、交換留学で得られた学びとスキルを日々の開発に活かしていこうと思います。

お読みいただきありがとうございました!