概要
未経験からエンジニアに転職してちょうど1年ほど経ったので、これまで私が何を学んでどう成長できたかを振り返りつつエンジニアになりたい方や駆け出しエンジニアの方に参考なればいいなと思います!
未経験で入社なので学んだことが多すぎてざっくりとしか書けないですが、1年間自分がやってきたことを共有できればといいなと思います!
※未経験で内定を頂いた際の記事もまとめているのでエンジニア転職したい方は是非見てみてください🙏
自己紹介
・愛知県出身25歳、国際系の大学卒
・東京在住
・2024年に未経験で受託会社の現在勤めている会社に入社
・iOSエンジニア1年目
・パソコン苦手
・勉強苦手
・完全な異業種からの転職
未経験エンジニア転職で上京してきて1年間の感想
結論から言うと、未経験エンジニアとしての上京は自分の人生でとてもいい経験だなと心の底から思います。仕事面では色々な体験をさせていただき、日々成長できているし好きな技術に触れさせてもらえたり満足of満足です(上司と同期に感謝です)。仕事関連の細かいことは下記に記します!
実は仕事面以外でもいい経験があり、知らない土地で一人暮らしを始めたということです。引っ越してきて1日目で熱を出し,初出社までに治したり家のことを自分一人でやって焦っていたのが懐かしいです。自分で全部やったのでたくさん知って色々と経験できたことで大人の階段を登ったと感じました。
東京に上京なんて昔の自分なら考えてもなかったですが、やってよかったと思ってます。
未経験で入社して1ヶ月目
入社して1ヶ月目は同期のポートフォリオをチーム開発してみようというOJT作業を行なっていました。
同期のポートフォリオは天気アプリだったので、要件定義から始めて、そのアプリに最低限必要な機能(この機能ないと動かない)を洗い出したりしてチームで要件定義を行ないました。人と話しながら意見を交換してチームで要件を決めていくことが私には新鮮でした。それからアプリのワイヤーフレームをFigmaで作成していきました。この時点でFigmaは触ったことがなく、まずデザインツールの触り方を学ぶところから始まって慣れるように頑張ってました。それからAPIとは何かを学んでcurlコマンドでAPIを叩きレスポンスを見てみたり、Firebaseのデータベースにそのレスポンスを入れ込んでみたりと本当にたくさんの基礎知識をつけていきました。またGit/GitLab/SSH Key周りの設定やFirebase app distributionを触ったりと正直、1ヶ月目は学ぶことが多すぎて頭から学んだことが抜けていかないように必死に足掻いてました😇
2ヶ月目
2ヶ月目はGitFlowやGitHubFlowの違いを学んだりSourceTreeを導入したりアーキテクチャの種類、オブジェクト指向、SOLID原則、GoFについて学んで引き続きインプット中心の作業を行なっていました。
2ヶ月目に読んだリーダブルコードはとてもいい勉強になって、今でもコードを書く際に変数命名の際に気をつけることや美しいコードとはどういうものなのかという点で役に立っている気がします。
それからSwiftを書くXcodeの初期設定(プロビジョニングプロファイルなど)も学びました。あとは天気アプリで使うデータのER図を書いてみたりなどインプットの連続生活を過ごしていました。
3ヶ月目
3ヶ月目は入社して始めてXcodeでコードを触り始めました。天気アプリの主要となる画面を実装してみるというものでした、テストデータを作成してそれを表示してワイヤーフレーム通りのUIになっているかなどの作業をしてました。この時に自分だけだとまだ上手くUIもスムーズに作成できないしコードもボロボロで不安しかなかったのを覚えています😂
それから実務でHTMLとCSSを触って年度のバージョンアップする作業を頼まれて、初めてのプログラミング学習で触ったProgate以来、久々にHTMLとCSSを触って新鮮な気分で作業をしました。
4ヶ月目
4ヶ月目はMixiのiOS研修をやってみるという作業を行い、SwiftUIでGitHubAPIを叩いて表示するという簡単なアプリ作成でした。SwiftUIは触ったことがなかったのでいい経験でした。
4ヶ月目は初の実務がありました!初実務は小規模な改修作業でひとまず自分だけでやってみるという課題が科されました。この時に実務レベルのコード量を人生で初めてみて衝撃を受けたのを覚えてます。シンプルにコード量が多いのと色々なコードと繋がっていて複雑で最初見た時は何かの呪文かと思いました。
結果的に改修でやりたいことは達成できたのですが、今回は既存のコードを使って実装した方が良さそうと上司にレビューを受けて、既存にあるコードを理解することの重要性を感じました。まだまだ伸び代があると思うようにして前に進むしかないというのがその時の心境だったと思います。
5ヶ月目
5ヶ月目はMVVMというアーキテクチャでコードを書くにはRxSwiftというリアクティブプログラミングのためのライブラリ学習が必要だと知り、インプットしつつ、試しでコードを書いて理解することに集中してました。その他のAPI関連ライブラリのAlmofireやObjectMapperも同時並行で学習していました。
それから学んだことを活かして会社で使っているバックエンドにアクセスしてログイン機能を試しに実装してみたりして体に染み付くように作業を行なっていました。
6ヶ月目
6ヶ月目の中旬からは実務の中規模な改修作業を課されて、正直難しすぎて太刀打ちできなかったです。内容はゲストユーザー機能の追加で、バックエンドとの連携を考えながらユーザーがログインしているかしていないか、ユーザーのポイント数などを考慮して作業を進めていくものでした。バックエンドとの連携がいまいちわからなく追加で学んだばかりのリアクティブプログラミングをがっつり使う作業で難しく挫折していました。ひとまず自分で作業行って上司にレビューをもらうの繰り返しをしていました。
7ヶ月目
7ヶ月目の前半にようやく無事にゲストユーザー機能を実装することができて上司からのOKが出てリリースできました。モバイルエンジニアとして大きな実務を完遂したことが自分の中で、すごいやりがいを感じたのを覚えています。それから別のアプリのゲストユーザー機能(同じようなもの)を実装して7ヶ月目は終わりました。
8ヶ月目
8ヶ月目はバックエンドの方の知識も多少は必要ということでAWS JumpStart2025に2日間参加することになりました。AWS JumpStartは初学者のためで、初学者が多いと聞いて参加したら経験者ばかりでレベルの高い会話をしていてついていくのに必死でした😅
主にグループ作業で進めていきランダムで選ばれたグループが発表するというもので、自分のグループには経験者がいたのでその人を筆頭にグループで話し合ってAWSを使ってセキュリティはAWS WAFを採用してなどのバックエンドの構造を考えて完成させるものでした。
8ヶ月目の後半からはOJTの続きで天気アプリを本格的に進めていくために設計書やデザインを固めていく作業を行っていました。
9ヶ月
天気アプリを作成するにあたっての基本設計・詳細設計を作成して、それらを考慮しながらFigmaを使ってデザインに落としていく作業をしました。基本設計と詳細設計の違いすらもわからないところから始めたので時間がかかってしまったが、同期とたくさん意見を交換して認識をすり合わせて設計書を固めていきました。
その際にチームメンバーと意見を交わしながら物事を進めることでチーム開発に必要なものを少しは理解できた気がしました。それに私は人と話すのは好きな方なので人の意見や視点を知れるのは勉強にもなったし楽しかったです。
並行してFigmaでのデザイン作成を進めて9ヶ月目は終わりました。
10ヶ月
10ヶ月目はずっとFigmaで同期と一緒にデザインを考えて天気アプリのデザインを作成していました。自分はデザインに関しては本当に疎くてデザイナーの方々すごいなぁと思いながら既存のアプリなど見ながらなんとかデザイン作成していました。同期はデザインを少しやっていたとのことで自分より上手くやっていて勉強になることが多かったです。それから会社のデザイナーチームに完成したデザインも見てもらえることになり、プロのデザイナーさんたちの意見や観点も知ることができてすごいためになりました。
11ヶ月目
11ヶ月目からはがっつり天気アプリの実装に入っていきました。最初にFirebaseのClashlyticsやAnalyticsなどを入れ込んだりプロビジョニングプロファイルを設定して、画面ごとに同期と担当して開発を始めていきました。基本は自分たちで実装して詰まったら上司にアドバイスをいただくという流れでした。開発していくにあたって自分の思っていたよりUIや機能を実装できるようになっていて、11ヶ月目にしてようやく成長を感じました!まだまだ実務レベルで完璧にコードを書けてるかと言われると難しいですが、実務に近いコードの書き方でできているかなと思います。11ヶ月目にしてコードを書く際に、コードの処理をモジュール化し、責務の分離をして処理ごとにうまくコードを書けるようになった実感が出てきました。テストコードを触ったり、運用・保守するならコードは、こうした方がいいなとか色々と工夫ができるようになったのが小さな成長だなと感じました。
12ヶ月目
12ヶ月目も同じく天気アプリの開発を引き続き進めていきました。私は設定画面の実装を担当になり、ライセンス表記や利用規約などの実装を進めていました。実装のスピード感も段々と上がってきて今後はもっとスピード感と精度をあげて開発できたらいいなと思います。実装していく中で自然と詰まるところも少なくなってきてある程度の機能ができたら上司にマージリクエストを出してレビューをしてもらうというのが多くなってきて開発がスムーズになってきて個人的には成長を感じてます。たまに文字のうち忘れでよくわからないエラーが原因で時間がかかってしまうこともあるので凡ミスも気をつけていきたいと思いました。(まだまだですね😅)
今後の目標
今後の目標は、まず実務でもっと多くの経験を積むことです。まだ1年目ということで学習面が多く実務の経験が浅いので、今後は実務で経験値を少しずつ積み上げていきたいなと思っています。技術的な成長も勿論ですが、人との関わり方やビジネスの観点でもいろいろな知識と経験も同時並行で進めていきたいと思っています!あとは個人のアカウントでアプリをリリースすることも目標に掲げていて、現時点ではざっくりとした要件とデザイン作成しか進んでないのでまだまだリリースは先になりそうですが...(リリースできたらまた記事にしてみたいなと思います)
ひとまず、このまま学習意欲を高めたまま業務をこなして少しずつでも成長していこうと思っています、ここまで見て下った方々ありがとうございます。Enjoy your engineer life💻