見出し画像

学生エンジニアが長期インターンを終えて感じたこと

はじめに

はじめましてasmgです. 僕は, 普段学生をしながら都内の某ベンチャーでデータサイエンティストとしてインターンをしている学生エンジニアです. 今回は, 約1年3ヶ月長期インターンをやって感じたこと 学んだこと よかったことを記事にまとめていければと思います.

筆者のスペック

  • 商業高校出身の私立地方理系学生(情報系電気専攻)

  • 高校時代に, 情報の基礎を学び, 大学時代はロボット(自律移動ロボット)セキュリティ(ハニーポット)に打ち込む

※高校時代には, 全商情報処理競技会全国高等学校 情報処理選手権に出たりしてました.

1年3ヶ月で行った業務案件

- SEO分析(分析案件)
- 新規プロダクト分析
- BIの選定⇨構築(metabase)
- 各種データ分析基盤の構築
- データ分析基盤の実装

- waf設置を目的とした分析
- コーポレートサイトにWAFを設置するにあたり事前分析
- 自社プロダクトレポート出力(レポート作成案件)

- LPホスティング(業務効率化)
- システムの設計・構築
.
- chatworkURL抽出
- OSSツールのリバースエンジニアリング(リバースエンジニアリング)

長期インターンをしてく中で感じたこと

ハードスキル

① コードの可読性を意識する


コードの可読性の有無は, 個人開発をしているエンジニア長期インターンとしてお金を貰うエンジニアとの大きな違いだと思います.
例えば, 個人開発をしてくと所詮コードを見るのは自分だけの可能性が高いです. しかし, 長期インターンではチーム開発をすることがあるので誰でも読めるコードを書く意識が必要になります.

point

僕は, pythonを仕事で良く使っていましたが可読性の高いコードを書くためにlinterを使うことを勧められました.
参考:https://pylint.org

https://pylint.org

② 技術選定能力


普段個人開発をしているとこのライブラリ気になるから使ってみようとか, このサービス気になるから使ってみようとかそういう感じで技術を選ぶと思います.
しかし, 実際に会社で技術やサービスを選ぶ場合にはそれ本当に会社に導入して役にたつの? 費用に対して効果は見合っている(費用対効果)?なんかも意識したいといけません. この辺は長期インターンを始めてわかった価値観な気がします.
案件でいうと, BIの選定の時にこの能力を少し磨くことができました.

③大枠としての技術知識の必要性⇨技術知識を誰にでも伝わるように表現する


・大枠としての技術知識の必要性
普段エンジニアと会話をしていると, エンジニア特有の言葉が沢山出てきます.  例えば, このシステムリプレイスしたいんだよね. とか, 今後このシステムマイグレーションしていこうと思うんだよね. とか, これって, 意味としては似てるけと似て非なるものです. こういう言葉の定義をしっかり理解していくことの重要性はインターンをしていく中ですごく感じました. これができないとエンジニアとして会話ができないなぁと感じる場面がインターン中には良く感じました. 

・技術知識を誰にでも伝わるように表現する
直近引き継ぎをしている中でこんな会話がありました.
このデータベースには「configのデータが入ってるんじゃないですかね?」みたいな会話がありました. 一見この会話の中で僕が重要なのは, configって大枠何を指しているんだろうという感覚な気がしますが, そうではなくてこれを分かりやすい言葉で例えば「このデータベースには設定データが入っていると思いますよ」など誰にでも分かる言葉で伝えてあげることが重要だなと感じました. これはソフトスキルかもしれません…

ソフトスキル

①最初にアウトラインを引く重要性

僕は, 長期インターンを始めた頃案件が降りてくるとその案件をなんとなく手を動かしながら進めていました. これを聞いて皆さんの中にも自分そうだよ!という人がいるかもしれませんがこれはめちゃめちゃ効率が悪いです.
なんで悪いのか?
例えば, あらかじめ案件をどのように進めていくのかを決めてどんなことをしていくのかを決めればある程度どのくらい時間がかかるかの見積もりができます. また, 何が課題になりそうかを炙り出すこともできます.
そして, 何よりも重要なのは, これをやると最初にある程度案件のステークホルダーとすり合わせることができるのでゴールがブレることがなくなります.
なので, 最初にアウトラインを引くことは重要だと感じました.

②期待値調整の重要性

日々, 色々な業務をこなしていく中で「色々な人とすり合わせる時があると思います」このときに自分が100%だ!と思ってアウトプットを持っていっても以外とそんなことないなぁと感じることが僕はよくありました. これって簡単にいうと, 相手が求めていたものと自分がやったことにギャップがあるということになります.
なので, 相手と自分の感覚を合わせる⇨期待値調整はとても重要だなぁと長期インターン中に良く感じました.

Point

これは, これを感じてから実践していることになるので参考程度に見てほしいのですが, こんなことを実践しています.

アウトプットをする相手と十分にすり合わせをした後に
「60%程度のアウトプットを最短経路で実施するように心がける」
その後フィードバックを受けて100%に近くなるように修正する

③常に一定以上の成果を上げていく

僕は, よくインターンを続けていく中で今日はあんまりやる気が出ないなぁとかスランプだなと思う日が結構ありました. そんな中でふと自分で意識していたことですが, 人間だからやる気が出ない日があることは当たり前. でも, お金を貰っている以上, 一定程度の成果は出さないといけないなと感じていました.
具体的に, 僕が実践していたことは

・業務のことを基本的に業務外に持ち込まないこと
・逆に業務中にもなるべく私用を持ち込まないこと
・1日の最初にその日のゴールをあらかじめ設定しておくこと
・案件の最初にアウトラインを引くこと

こんなことを意識して長期インターンに臨んでいました.

結局インターンをして何が一番よかった?

技術面

僕が, 一番インターンをしてよかったなと思うことは, 実際に社会で動いているシステムがどのように動いているかまた, どのように開発されているかを見ることができたことではないかなと思います.
これは, 正直個人開発では味わうことができない経験なのではないかなと思います.
また, これ一通り見て自分の技術にできたらさらに良いエンジニアになれるのではないかなと思います. 実際僕も一年半前と今を比較すると沢山の学びや成長があったなと感じます.

その他

これは, もしインターン先に同じ世代のエンジニアがいればという前提の話になりますが, 同じエンジニアという枠切磋琢磨できるというのも長期インターンのメリットではないかなと思います.
実際僕も, 長期インターンをしていく中で沢山の人と出会い色々な知識を知り沢山の成長ができたなと感じることが多いです.
大学生活や専門生生活ではきっとなかなか味わうことができない経験だと思います.また, 自分の技術ってどのくらいなのか指標を測るという意味でもとても良いと思います.

最後に

この記事は, 僕の経験をベースに書いた記事になるので全ての人に当てはまるかはわかりませんが, 皆さんの長期インターンを決める為の参考にしていただけますと幸いです.



この記事が気に入ったらサポートをしてみませんか?