新卒エンジニアでも貢献できることはある

ジモティーとの出会い

初めまして。iOSチームで開発を行っている阿部と申します。 本日は「新卒のエンジニアでも課題を克服することで、会社の成長に貢献できる」ということを体験談を元にお話しできればと思っています。

(連続して未経験者から・・・という記事が続いてることは目を瞑っていただきたいです🙇‍♂️)

自分は元々、北海道のとある工業大学で「情報技術を使って地元の観光を盛り上げよう」という研究を行っていました。この時点でお気づきの方もいるかもしれませんが、自分は地元が大好きです!

就職活動ではその地元に貢献できるようになるために、自分のスキルを高める会社を探していました。 そんな時に所属していた大学とご縁があったジモティーから内定をいただき1ヶ月のインターン期間を経て入社することを決めました。

・地元と連携し、地域活性のために働ける

・目の前に上場が控えており、成長スピードが高い

・仲間とパートナーを大切にするという文化

この3つの観点が何より魅力的に感じての決断でした。

その後、2020年の4月からジモティーでの新卒採用第一号のiOSエンジニアとして働くことになります。

研修期間から実業務に入るまで

入社してから1ヶ月は基礎的な部分を指定の書籍で学習する(いわゆる新人研修)期間でした。 ※この部分は前回の記事と同様ですね。

その後iOSのコードに触れ、導入しているアーキテクチャを学びながら実際に簡易画面を作ってみるアーキテクチャ研修に入ることになるのですが、この時の自分は「アーキテクチャとはなんぞや」という状態でした。

弊社iOSアーキテクチャはMVP(GUIアーキテクチャ)+CleanArchitecture(システムアーキテクチャ)という形を採っていることは先の記事を読んでくださった方ならご認識あるかもしれません。

f:id:jmty_tech:20201015120550p:plain

※ もし、未読の方がいましたらこちらの記事をご参照ください。

研修を進めていくと、「責務が明確に分かれているお陰で、どのレイヤーでどの挙動を担っているかが分かり易い!」と「なんぞや」状態だった自分でも実感知としてメリットを体感することができました。

その後、簡単な案件を行いながらその中で勉強していくという体勢に変わっていきます。

簡単な案件の中でも新たなテクニックが出現します。汎用性のあるcellを作成してそれを使い回すというものです。 この既存のcellを使うことで開発時間が短縮され、全くiOSを触ったことが無かった自分でもほぼ工数通りに開発を終えることができました。

※汎用性のあるcellのお話も過去のiOSエンジニアの記事に詳細が書かれているのでご参照ください。

このように弊社のiOSの開発では未経験者でも開発を効率的に行える環境が存在し、チームへのjoinがスムーズにできます。

※他にも開発効率化のために様々なツール導入など行っているのですが、それはまた別の記事をお楽しみください。

障害とモンキーテスト修行

さて、ここまで順調のように進んでいた様に見えると思いますがここから軽めの挫折が始まります。 それは自分が担当した機能でボロボロと障害が出てきてしまっていたことです。

弊社では障害のレベルを五段階に分類しており、そのうち4段階目,5段階目は重大障害として扱われています。 入社半年でこのレベルの障害を自分は出してしまい、QCDのQuality(品質)が課題となっていました。

同時期にアプリチームでも自動テストだけでは補えないケースに対応するためにモンキーテストの担当者を立てて、 結合テスト時にできるだけエッジケースのバグを洗い出そうという試みが計画されていました。

そんな個人と組織の課題感がマッチし、自分がiOS開発チーム側のモンキーテストの担当者となりAndroid開発を行っている先輩にモンキーテストをみてもらうことになります。

弊社のアプリチームでは、リリース日の前週木曜日に結合テストAndroid/iOSの両デバイスで同時に行うため、 先輩に結合テスト毎に30分時間をいただきモンキーテストの観点を教えていただきながら修行をつけていただきました。

教わった観点はkibelaにまとめ、アウトプットを出しさらにモンキーテストを実施する、これを3ヶ月続けていくことになります。

成果と成長

ざっと教えていただいた観点を書くと

- 並列と上下を考慮する
   - 構造的なデータ
       - 上下・並列の関係に位置するデータが選択される場合データの不整合が起きないか
   - UI観点
       - 表示が不必要に重なっていないか
       - アクションイベント時に不要な箇所が連動していないか
- ユーザが繰り返し使う機能は要注意
- 実際にはバシバシ負荷がかかる使い方をされるので思いっきり負荷をかけてみよう
- 見え方は問題ないが通信で余計な情報を送っていないか

などなどでした。(もちろんこの他にもまだまだありますが)

この様な観点を教わり、着々とモンキーテスト担当者としての役目を全うできる様になりました。 チームで行う結合テストの際に高負荷時にだけ起きそうな不具合の発見など、着実に成果としてチームへ貢献できていました。 もちろん、個人の課題でもあった障害の数も着実に減っていき「今月一回も障害出してない!」というところまで到達です。

さらに、この修行は別の箇所でも生かされることになります。

エッジケースやユーザの使い方をモンキーテストで考えるため、構造化された考えが身につき始めたのでしょう。 ディレクタから要件をヒアリングする際にも細かな仕様まで目が届く様になり、見落としがちな部分などをヒアリングできる様になっていました。 案件遂行のための成長にも繋がっていたのです。

この様に弊社では、個人と組織の課題を結びつけ個人の成長と組織の成長を結びつける習慣があります。

これは、

・自分の成長を実感できる

・組織への貢献も実感できる

とモチベーションが上がる2つの実感を同時に実現できる文化であると考えています。

この文化のお陰で「考え方」のスキルを身に着け、新卒エンジニアながら組織への貢献も行えたのでしょう。

まとめ

今回は新卒のエンジニアの失敗談を元に成長できる文化の一端を書かせていただきました。

今回の記事が新卒エンジニアの方や未経験の方の考え方の参考になれば嬉しいです。 また、これまでの記事で弊社の文化・技術に興味持たれた方がいらっしゃれば、この先ご縁が生まれると嬉しいです。

自分も次回執筆までにはtechのことをお伝えできる様にさらに勉強していきます!

最後になりましたが、ここまでお付き合いいただきましてありがとうございました。 もしジモティーにご興味ありましたら、こちらでエンジニアの方を募集しております!