はじめに
初のアドベントカレンダー参加です。
自分自身が長期インターンを行って感じたこと・学んだことを中心に、これからエンジニアの長期インターンを始めたい学生に向けて参考になる記事になるかと思います。
自分について
現在、大学院修士2年の学生です。
(大学の授業でJavaを勉強したこともありますが)本格的にプログラミングを勉強し始めたのは、大学3年時になるので、現在3~4年目といった感じです。
長期インターンを始める前までに、pythonを独学で学び、データ分析やwebアプリケーション開発等を行っていました。
(データ分析は研究で行い、Webアプリケーション開発は個人開発や知り合いから案件を頂いたりしていました。)
長期インターン参加のきっかけ
就職活動では、エンジニアとして内定をもらうことができ、実務経験を積むため、その後の修士2年になる4月から長期インターンができる企業を探し始めました。
長期インターンを探すにあたり、JobPackerを使用しました。
名古屋の学生には、おすすめです!(ステマではありませんw)
JobPacker経由で申し込み、面談後、採用の可否について連絡をいただきます。
(自分は、2社目で採用のご連絡をいただきました。)
長期インターンでは普通の居酒屋アルバイトとは異なり、普通に落ちますw
自分のできること、なぜその企業でやりたいのか等予め明確に持つことをおススメします。
仕事について
Webアプリケーションの開発を行っています。
コロナ禍での採用いただいたということもあり、基本的に完全リモートです。
新規のWebサービスの開発に従事しており、チームとしては3人で開発を担当しています。
技術選定や要件定義、実装までフロント・バックエンド関わらず担当しております。
基本的な技術構成としては
- フロント:HTML, CSS, JavaScript
- バックエンド:Django(Python), DRF(Django Rest Framework)
- インフラ:AWS
といった感じです。
実務で学んだこと
- コミュニケーション超大事
当たり前ですが、コミュニケーションはすごく大事だと感じました。リモート勤務なので、自然とコミュニケーションは取りづらいですが、勤務終了時は、その日自分のやったことを言語化し共有することで、今何ができて・何ができていないのか、またどういう状態なのかなどをチームの方と共有し認識の齟齬を失くすように取り組んでいました。
また、本インターンではないのですが、就活の際に東京の某一部上場のIT企業で2週間ほどインターンさせていただいた際は、「新入社員の中には、"分かりません"と言って丸投げする人もいるのが、〇〇君は、相談する際に何に困っていて、解決のために何に取り組んだのかを明瞭にした上で、相談してくれるのでとても助かる。」とお褒めの言葉をいただいた際のことを改めて意識するようになりました。
以上、当たり前といえば当たり前なのですが、「周りの学生よりもプログラミングができるから」と威張るのではなく、素直に誠実に真面目に取り組むことが長期インターンや社会人なりたてのうちは、特に重要なことではないかなと考えています。
- ユーザー視点を持つ
僕が開発に携わっているサービスは、正式なローンチ前なので直接ユーザーからのフィードバックをもらえるわけではないのですが、エンジニアは常にユーザー視点を持つことが大事だと感じました。エンジニアであれば、あれもこれも作りたくなるのですが、このサービスのコアコンピタンスは何なのか。ユーザーのペルソナを具体的に想像し、追加する機能を通じてどのようなメリットを届けることができるのか。などの視点が重要でありその視点をチームで共有する事が大事だと感じました。
- 技術力
ここでいう技術力とは、単にプログラミングができるというのは勿論の事、綺麗な(=保守性の高い)コードを書くことが重要だと感じています。サービスは開発だけではなく、その後継続的にブラッシュアップしていくのですが、長期インターンであると、最初から最後までサービスには携われません(チーム開発であれば尚更)。そのため、ただ書くだけではなく、変数名やクラス設計など他人が書いても英語のようにスラスラ読めるコードであるべきと考えています。そのため、個人的には最も得意な言語であるpythonでもより良いコードを書くためにUdemyで講座を受講し更なる研鑽を積んでいます。
これからエンジニアを目指す学生に向けて
これからソフトウェアエンジニアを目指す学生の多くは、高校卒業以降にプログラミングに触れる場合が多いと思いますが、個人的にはとにかく一つの言語を極めることをおススメします。
というのも、一つの言語ができるとそれをメタ的な思考・認知で他言語に応用できるため、2つ目以降の言語習得が容易になります。
とはいっても、
どの言語を勉強を勉強すればいいの~
とよく聞かれますが、端的にいえば「作りたいもの次第」なので、一概には言えません。
ただし、一般的な候補としては、webサービスなどであれば、
- ruby
- python
- JavaScript
- php
スマホアプリであれば、
- swift
- kotlin
といった所かと思います(その他にもたくさんありますが、割愛します)。
プログラミングスクール等々、手段はたくさんありますが、とにかく
- 楽しむこと
- 何か自分の力でアプリなど作ること
が、上達の近道だと思っていますので、ぜひ頑張ってください!