はじめまして、ソフトウェアエンジニアのちくわパンです。
エンジニア実務未経験でクイックに入社して半年が経ち、日々奮闘しながら学習する毎日です。
さて、今回はそのような背景を活かして、「実務経験を通して得た気づき」についてお話しようと思います。
私の属するプロジェクトでは主にLaravelとReactを使用しており、これはまさにクイック入社前に自分で学習していたものでした。そのような背景もあり、予想していたよりはギャップが少なく業務に携わることができています。しかし、少なからずギャップが存在したことも事実なので、それを埋めるためにはどんなことをやっておけばよかったかについて、改めて考えてみました。
入社前にやったこと
まずはじめに、エンジニアになるにあたって実際どんなことをやったかについてお話しします。実務未経験からエンジニアを目指す人は数多くいると事前調査でわかっていたため、「一線を画すにはどうしたら良いか」を念頭に置いて何をやるかを考えていました。また、実際に自身のエンジニア適性を見極めるために「実践的な開発を行う」ことも意識しました。これらの理由から以下のことを行ないました。
CRUD+αのアプリを作ってみる
React/Laravel/MySQLを利用して、単なるCRUDだけに留まらないアプリを製作していました。CRUD+αとすることで、DB設計や、Reactのチュートリアルだけに留まらない、より実践的なものづくりを行うことができます。そのため、どんなところに苦労するのか?React利用においての懸念は何か?などを肌で感じることができたのでよかったです。
作りたい機能を実現するために、とにかく調べる
特にReactに関しては当時まだ情報量が少なく、国内外問わず多くのWebサイトから情報を集める必要がありました。そのため、調査力が身についたと思います。
AWSに触れてみる
デプロイは、AWSのEC2/S3等、AWS各種サービスを用いて手動で行いました。サービス同士の接続についても自分で調べながら行うことで、インフラに対しての苦手意識が軽減したため、やってよかったなと思っています。
入社前にやっておけばよかったこと
次に、実際に業務に携わってみてわかった「やっておけばよかったこと」についてお話しします。
SQLの学習
座学で一通り学習してはいましたが、Laravelを利用してサーバー側はMySQLとシームレスに接続できていたため、実際にSQLを書く機会がありませんでした。しかし、業務では当たり前のように使用するため、欲しいデータは一通り抽出できるくらいには勉強しておくと良いと思います。
個人開発とチーム開発での相違点を意識する
当たり前ですが、自分で作る場合は基本的に「1人」、チーム開発の場合は「複数人」という違いが生まれます。自学の際は、他者が読みやすい・利用しやすいコード設計などには全く目を向けられていませんでしたが、チーム開発においてはこれらが非常に重要になってきます。ここまで気を配れるとギャップはさらに少なくなるでしょう。
デプロイの自動化
AWSには触れていたものの、なんとかデプロイできた…くらいの温度感だったため、さらに理解度を深めておけるとよかったなと思っています。具体的には、EC2で手動デプロイするのではなく、ECSでDockerごと管理したり、自動デプロイ環境を構築するなど。これらは入社後プロジェクトで触れる機会がなく、依然として個人的に課題意識を感じているため、BootCamp*1などの時間を使って触れたいと思っています。
実務でしかわからないこと
最後に、実際に業務に携わってみないとわからなかったことについてお話しします。
他者の考え方のプロセスを学ぶ
実装を進めていくにあたって悩むことは多々あります。例えば、3つの実装案を考えてみたものの、どれを選択すべきだろう、など。そんな時に保守性・可搬性・パフォーマンスなど様々な観点で考えてみると思考の幅が少しずつ広がっていくと思います。その上で先輩エンジニアに聞くと、新たな案を共有していただいたり、新たな視点を提示していただいたりと、考え方のプロセスが掴めて勉強になります。これは1人では経験できないことです。
納期・コスト意識
独学では何より期限がありません。かけた時間のコスト意識も少なくなるでしょう。 しかし、組織で開発を行なっていく以上、予算や期限があり、その中でできることをやっていくことになります。そのため、手戻りなどが極力発生しないよう、設計段階から入念に考えていくことは重要です。
クエリのパフォーマンス意識
実際のデータでは膨大な量を処理しながら、ユーザーに価値を提供しなくてはなりません。そこで、サーバー側の負荷軽減は必須事項と言えるでしょう。その一つとして、クエリのパフォーマンス意識が挙げられます。これに関しては、業務に携わってはじめて重要性を認識することができました。より良いクエリを書くにはどうしたら良いか、まだまだ改善していく必要があるので、そこは課題意識を持って引き続き学習に励みます。
まとめ
実際、1人で学習していたところから、チームで開発するというのは緊張感が伴うのも事実です。しかし、その分より大きなものを作ることができ、やりがいがあります。また、1人で抱えていた問題も、先輩方に相談しながら解決していくことができますし、先輩方のコードを間近でみて質問することで、自分の中に考え方を蓄積していくことができ、学びも大きいです。
まだまだ経験は足りないですが、できることをひとつひとつ着実に増やし、プロジェクトに貢献していけるよう日々努めていきます。
最後まで読んでいただきありがとうございます!
今回は「実務未経験だったエンジニアが実務経験を通して得た気づき」についてお話しました。
何か参考になることがあれば大変嬉しいです。
\\『真のユーザーファーストでマーケットを創造する』仲間を募集中です!! //
*1:BootCamp…エンジニアリング課では、エンジニア能力向上のため、プロジェクト業務と関係ないことでも自由に学習できる時間が月16時間あり、BootCampと呼ばれています。