3days 次世代トップエンジニア創出インターンシップ ONLINE ACE でチーム優勝した件
ℹ️ 基本情報
- 同世代の学生とチーム開発をしたいと思い大学3年の6月末に応募
- プログラミング経験はpython(2年半), Golang(6ヶ月)
- 詳しくは こちら
👀 概要
-
事前に共有された開発テーマ(今回はtappleのメッセージ機能開発)をもとにチームで開発
-
準備期間(約3weeks)で仕上げたものをインターン当日(3days)でさらにブラッシュアップするイメージ
-
チーム構成
チーム フロント(人数) バック(人数) A Swift(1) Go(2) B TypeScript(2) Go(2) C Kotlin(1) Go(2) D TypeScript(2) TypeScript(2) -
学生1名にメンター1名がつく
-
ES, 面接(2回)で選考
- エンジニア面接では技術的な質問、人事面接ではチームで長期間取り組んだ内容についてかなり深く聞かれた
-
参加者14名
-
準備期間:2022/7/25~8/18、インターン当日:8/19~8/21
📚 学んだこと
私はcチームのバックエンド(Go)としてインターンに参加しました。以下では、学んだこと中心にまとめます。
技術選定
個人開発では、「この技術使ってみたい!」みたいなノリで技術を選定しても全然問題ないと思うが、大規模開発や長期的な運用を見越した開発では、そうはいかない。きちんと技術選定をしておかないと、後々しんどくなる。では、どのような観点で技術選定をすればいいのか?ググれば技術選定に関する記事は山のようにででくると思うので、ここではそれらを読んだ上での私の考えをまとめる。
- 技術自体に関するポイント
- その技術で要件を満たすことができるか
- 導入事例が多いか
- メンテされているか
- 利用者側のポイント
- 使用技術を使える人がチーム内もしくは市場にいるか
- 使用技術の学習コスト
- 利用者が使用技術に対してポジティブな印象を持っているか
上記のポイントのうち、導入実績やメンテ情報などはネットで調べればわかるが、要件をみたせるかはネットの情報だけで判断するのは難しい。そこで必要になってくるのが、仮導入・検証である。
実際に、候補として上がっている技術を仮導入してみて、自分達の目的が達成できるのがを調べる。その後、チームメンバーのレビューを受け、OKそうなら導入。無理そうなら代替案を考える。といった流れになると思われる。
今回のインターンでは、期間が限られている上、メンバーも少なかったためネットの情報だけで技術選定してしまったので反省したい。また、技術選定する際思ったことであるが、さまざまな技術(特に、ライブラリ)に触れておくことが大事だと思った。そうすることで、この技術で要件を満たせるかどうかといった判断の質が上がると思った。
アーキテクチャ設計
今回のインターンではクリーンアーキテクチャを採用した。長くなったので、こちらにまとめた。
🧑🏻💻 インターンを振り返って
- 自分のチームではメンバー発表があってすぐに、チームで顔合わせをして自己紹介や開発方針について話したのだが、これが非常に有意義であり、後々の開発に活きた。(コミュニケーション大事!)
- 技術選定やアーキテクチャの設計など0から行ったのでいい経験になった(リードエンジニアの気持ちが少しわかった気がする)。
- 企業での新規事業立ち上げ→開発→リリースの流れを数週間でやったような感覚で、特に技術面以外の学びも多かった(開発の進め方、コミュニケーションの取り方などなど)。
- 就業型インターンしか参加したことがない方は、一度、課題形式やハッカソン形式のインターンに参加してもいいかも、と思った。
- チーム優勝できてよかった(ちなみに、優勝チームはインターン終了後、さらに1ヶ月開発できる。そしてテックリードからのレビューを受けられる)。
- 他のインターン参加者やメンター、人事の方と交流できてよかった。(インターンに参加するとやはり人脈が広がる!)
📕 今回のインターン参加者のブログ
チームメイトのブログ
📗 過去のインターン参加者のブログ
📖 参考文献
技術選定について
Discussion