cocuh's note

type(あうとぷっと) -> 駄文

ソフトウェアエンジニアとしての就活を終えて・周回プレイのためのtips

だらだらやっていた就活が数ヶ月前に終わり,そのときの経験談と考えたことを来世の周回プレイのときに使えるように もしくは役に立つ人がいるかもしれないので 徒然とメモったものがこちらになります. 生存バイアスが多い気がするので念頭に置いてください.

この記事はいわば自己満足なので,こういうの 嫌いな方はそっ閉じ でお願いします.:bow:

前提

大学入学当初

  • 普通科高校の高校生だった.
  • 高校時代は,エンジニアではなく研究者志望であった.
    • (金にならないと聞いていたのでエンジニアも考えていた)

大学入学後

  • 筑波大学 情報学群 情報科学類に入学(coins12)
    • エンジニア界隈ではちょっと有名なところ
    • ソフトウェアエンジニアとして成長するには,他大より良い環境であった気がする(卒業した人の個人の感想です)
      • 付録に理由を記載
  • 現在修士課程2年(M2)で,就活が決まったのは5月ぐらい
    • 就活をし始めたのはB3(大学院進学すべきかの判断のため)
    • だらだらと薄く長く4年間やってたことになる
  • 2014-2017年の就活の話なので10年後とかは知らない
  • スキルセットは機械学習とソフトウェア設計が得意.webとかインフラ廻りとかネットワークとかも一応できる,でも仕事にはしたくない.

就活(?)としてしたこと

個人的に就職を考えるための情報収集などの活動として,以下のようなことをやってきた. 本節ではそれぞれについて解説します.

  • 逆求人
    • B3
  • インターン
    • B3, B4, M1, M2
  • アルバイト
    • B3, B4, M2
  • 勉強会に参加
  • エンジニア/年長者とごはんたべたりおさけのんだり

逆求人

就活生が自分を売り込むスライド(5,7分程度?)を作り,人事+エンジニアの前で発表する形式の求人手法. ある枠に応募し,1日に6〜10社程度の人間と30分程度の面談を行う.

2013年ぐらいのころに流行りだした就活方法.先輩がおすすめしていたので参加した. ある程度のエンジニア力はあると自覚してる人にはおすすめ.

https://www.studenthunting.com/

メリット

  • 自分のスキルが同就活年の学生(B3, M1で年上含む)の中で,どの程度のスキルであるかを相対的に知れる
  • 企業がどのような学生/スキルを欲するかを知れる
  • 自分では絶対に知り得ない企業に会える
    • 特に中小企業やベンチャーは,一学生は知ることができない.
    • いくら能動的に調べたとしても,知り得ない業界は存在する
  • 自分と価値観の違う企業と会える
    • エンジニアは技術特化でビジネスの視点を失いがちと言われる.こういう視点も存在すると知っておく,その視点を持つ人材になるかは別の話.
    • 絶対にこの企業は合わないな と思う企業とも出会える.
      • 合わない企業を知ることで自分に合う企業の社風を考える.

デメリット

  • 参加するために,自分を売り出すスライドが必要
    • つまりは,他人に 自慢できる 話せる実績が必要
  • 他者との相対評価がわかる
    • 自己のスキルが自尊心に見合ってないとつらい
  • 興味のない企業から猛アタックが来る可能性がある
    • 人事から週数通のメール,月数回の電話などのアタックがくる.興味ない場合これを耐える・断る精神が必要
  • 疲れる
    • 6時間ぶっ続けで話すみたいな,かなりコミュ力が必要
    • 面接の練習(相手の気にするポイントとかを知る)としてはいいかもしれない

インターン

日本語で書くならば 就業体験 と言われることが多い. 一般にインターンは 短期(数日, 1週間程度)・長期(数カ月)の2種類がある.

私の参加したのは,エンジニアとしてのインターンx6?(忘れた),研究職としてのインターンx1である. 正直,どこもそれぞれ特色があって楽しいので,自分に合ってそうなのに申し込めばよい. 技術力不足とかはインターン選考するエンジニアに任せれば良い. 普通にインターン生同士で友達になったりするので,お祭り的な楽しさもある.

メリット

  • 企業の雰囲気がわかる
    • 和気あいあいと酒飲みに行く雰囲気か,業務ではコミュニケーションを取るがプライベートは尊重するタイプか,とか
  • 実際に働く上での必要なスキル・得られるスキルがわかる
    • 「この企業は,広告配信が優れており,ネットワークインフラが強い.就職するとネットワークインフラのスキルが付きそう」とか
    • 「同人ゲームが作れればゲーム業界で生きていける」というわけでもなく,一学生が想像している必要なスキルと実際のスキルは若干ズレていると思った.
  • 働く時のタイムスケジュールがわかる
    • 企業によっては会議に多くの時間が吸われ開発ができなかったり,開発が好きな人にはつらい.
  • 社内のワークフローが知れる(長期)
    • 会社は事務仕事が発生する.どの程度効率化されているか,平均的か,それで他部署と問題が起こらないようになっているか,が重要.
    • 業務で問題(ストレス)となりやすいのは他部署連携,コミュニケーションの関わるところである.
  • 実際に働くときに重要だけど見逃しやすい視点 を知れる
    • 通勤時に混雑する路線,時間帯,いつまでに出勤すべきかとか.オフィスの廻りは治安が悪いとか.
  • バックエンドの詳しい仕様が知れる(長期)
    • エンジニアとして,動いてるサービスの詳しい仕様とか,歴史的経緯とか,保守ポリシーとか,コードの綺麗さとか,気になるよね.
  • おかね

デメリット

  • 時間が掛かる(長期の場合)
    • 実入りのない長期インターンからは, 大学生としての時間が奪われたことによる機会損失が発生すると考えてた
    • ホテルを用意してもらえるかはかなり重要(筑波の場合)
  • 社員との交流が少なく,情報収集としては機能を満たさない場合がある(短期の場合)
  • ブラックインターンの存在
    • 長時間就業/低賃金/残業代がでないような企業が存在する.
    • ハッカソンなどでも,アイディア・ソースコードを盗まれ,報酬なしに実サービスに使われることもある.
    • イベントとして愉しむのであれば良いが,不本意である場合や雇用契約を結んでいる場合(つまり雇用契約を蔑ろにする社風がある場合)は速やかに穏便な手法で手を引くべき

アルバイト

基本金稼ぎ.時間と気力をお金と時々スキルに変換する.いろいろありすぎるのでなんとも... 雇用契約をした上での仕事なので,引き継ぎと責任が発生する. インターンほど適当にもできない. 気軽な気持ちでやるにはあんまりおすすめしない.

メリット

  • おかね
    • おいしいおさけはおかねがかかる
  • 交通費支給
    • 交通費支給・定期券は学生には嬉しい
    • つくばから東京まで往復2500円はする
  • スキルアップ(場合による)
    • 深層学習全然詳しくなかったけど,インターンでいろいろ勉強してわかるようになってきた.(多謝)
  • 人脈

デメリット

  • 時間
    • 実益が伴わないアルバイトは,機会損失が発生する.
    • 移動時間がかかる場合も同様.
      • つくばから東京近辺までへたすると往復4時間

勉強会に参加

土日などに開催される勉強会などに参加する. 私は機械学習関係とか,pyconとかはよく参加してる.

メリット

  • 活発な人が欲しい会社が知れる
  • 活発な人が居る会社はどこかとかを知る.
    • 話の合う人の居る会社は,自分に合っている(かもしれない).
  • 知らない知識が知れる
  • やる気が湧く
    • 他人の話聴くとやる気湧くこともある.気分転換にはいいかも.
  • 人脈

デメリット

  • 時間
  • 交通費
    • 私費だょ

エンジニア/年長者とごはんたべたりおさけのんだり

バイト先の先輩とごはんとか.twitterで出会い厨するとか,そういうやつ. 年長者は数年先の自分の姿の可能性もあるし,生存者バイアスを考慮しつつ話半分に聴いて咀嚼するとよさ.

わたしも多くの方におせわになったし,わたしも後輩においしいごはんを奢れる先輩になろうと誓ったりした.

メリット

  • おいしいごはんとおさけは,おいしい
    • わたしは食い道楽なので…
  • 一学生の知れない視点と手段を知れる
    • 税金, 転職, 社会人博士, 海外移住, 海外大学院, , 養育費, 子育て…
    • 年収1000万の人は時給換算では約5000円とか.
    • 個人的には大いに参考になった

デメリット

  • コミュ力
    • ひとによる.
  • さけ
    • エンジニアはおさけを飲むことを強制することは少ない気がするけど,誘って来る人はだいたいみんなのむ.
  • 時間
  • おかね

私のはなし

就活で利用した手法のはなしをしてきたけれど,私の時系列的な話をしようと思う. 日本酒は好きだけど日本文化があんまり好きになれなかったので,海外に一旦出たいという気持ちがあった.(たぶんISEFとかのせい.)

B2のころまではECMAScriptPythonとArchLinuxみたいな Web+インフラ みたいなスキルセットであった.

B3のころに専門性の必要性を感じて, 機械学習 を専門とすることに決めた.
理由は,

  • 応用が効いておもしろいから(ex.オタク機械学習)
  • 生涯テーマと近かったから

B3のころの就活から, 日本企業文化/国民性と自分が合わない ことに気づいた.(書類文化とか効率化しない文化とか若者に対する税制とか未来のなさとか)加えて,世界情勢も鑑みて,希望を出せば海外で働ける企業を選択しようと考えた.海外出て合わなければ日本に戻ってくればいい.

  • この時点で,日本で博士を取得する/日本の公的機関の研究者になるメリットが喪失
  • 勉強のできる日本企業で働いてから,海外で博士+就職という手も考えていた

B4からresume(海外の履歴書)に書ける絶対評価可能な成果を作ることを頑張る.

  • 主に研究を頑張る.いくつかoutputする.
  • 後述,参考文献[1],[3]が参考になった.

M1, M2のときにいくつかの外資企業にresumeを送ったりして,そのなかの一つからオファーが来たので無事内定.

  • 海外の企業のヘッドハンティングにいくつか返事したが,ほとんど無視されてる.そういうものらしい.

就活で必要だと思った能力/もの

前節のような時系列で,前述の手段を活用し,就活もどきをした上で,必要だとおもった能力/ものは以下のような感じになった.
以下のラインナップは,インターンで学んだことだったり,その選考過程で問われたことだったり,オファーが出るまでの流れだったり,私の経験をいいかんじに考慮している.

  • トラブルなく過ごせるコミュ力
    • トラブルのない仕事にも情報収集にもQoL最大化にもなんでも必要
    • ソフトウェア工学では,コミュニケーションがソフトウェア開発の大部分を占めるとか言われる.インターンでも私はそれを実感した.
    • あとスルースキルもだいじ.自分のリソースはタダじゃない.
  • 知識そのものではなく,知識を獲得する能力
    • どうせ大学で学んだことをそのまま企業でやることは少ない.如何に高速に深く会得するかの技法が重要に感じた.
    • 知識自体はすぐに陳腐化するが,知識を獲得する能力(ggr力とか論文を読む力とか情報収集方法とか知ったかぶりをしないとか)は陳腐化しにくい
    • そこを評価しない企業に未来はあるのか?
    • 「即戦力」は短期的なドラッグである.即戦力を過度に求めるということは入社後の成長に期待しないということかも知れない.人材使い捨て企業かも.
  • 綺麗なコードを書く能力: Pythonicななにか
    • 多人数で開発するような場合,他人が読めるコード・structured coding・unittest・ドキュメントを書く癖をつける.
    • 就活後でも身に付けられると思うが,面接なりgithub応募なりインターンの成果なりで,この力に助けられたと思うことは多い
    • 他人のcode読むとか,「これがこのケースで最適な実装か」を自問自答すると伸びた

あと具体的にしょうもないことだけど重要なこと

  • データ構造とアルゴリズム
  • githubを緑く(githubになるべく公開, 毎日contribute)
    • 「コード書けます」「エンジニアリングできます」といいつつコードも公開してないとなんか信憑性がない.
    • starもらうとやる気も出るし,他のコードでもcontributeすると緑になるのでgithubはモチベにいい.
    • スキルに直結するわけでもないのに,githubが緑いとなんか強そうにみえる.
  • お金
    • 原則就活的なイベントは交通費支給はないと思ったほうが幸せ.
    • 金がないと,選考に行けない,勉強会にも行けない.pyconにも行けない.おさけものめない.
  • 首都圏の無料の宿
    • だいたいのIT企業は東京,勉強会も東京.東京一極集中の弊害つらい.
    • 筑波はギリギリ首都圏だし,一応日帰りができて便利.地方大学に行くとこれがこわい.

Conclusion

  • 学び方を学べ
  • インターンは行っとけ
  • 自分に合わない会社と合わない理由を見つけろ
  • 自分に欠かせないものは何かを考えろ[3]

acknowledgments

じんせいめんどくさい.

参考文献

Appendix

A. なぜ私は筑波大学 情報科学類がソフトウェアエンジニアとして成長するには良い環境と考えるか

1. 日帰りできる首都圏であること

  • IT企業はほとんど東京にある.なのでそれ系の勉強会も東京になる.pyconもだいたい東京.参加したいなら首都圏に住むしかない.
  • 東京駅八重洲南口に24:30までに着けば,高速バス(ミッドナイトつくば号)で筑波まで帰ることができる.他県の大学ではこういうことができない.

2. 技術的にこわいひとがたくさんいる

AO入試と近い入試としてAC入試という入試形態が存在する.AC入試で入ってきた人とそれにつるむ人たちは,大学1年でサーバー管理してたり,ネットワークインフラの話ができたり,プログラミング言語書いてたり,Linux distri何がいいって訊くとArchLinux/Gentooって言ってきたりと,ハッカー精神旺盛というかなんかよくわからないけど技術的に濃い人たちが多い.具体的に筑波大学の有名なAC入試の人物といえば,SoftEtherの開発者である登 大遊氏が挙げられる.たぶん知ってる方はいろいろ察すると思う.そういう人たちの中で勉強すれば,技術的によくわからない伸び方したりしなかったりするきがしなくもなくもない.個人的には大いに影響された(ArchLinuxを布教されて今も私物端末がすべてArchLinuxである程度には).

3. 他大学の情報科学系学科の特色を考慮する

  • 専門によっては他大のほうがいいとかもあると思う.これは完全に個人的な感想なので,異論があればぜひとも教えてほしいです.
  • 筑波大学は,OS・データベース・ネットワーク・ソフトウェア工学などの先生が多い.加えてAC入試の人間など,他大と比べ,ベンチマークの値・動く実装・実運用上で必要な技術群など, 実際に使える という意味で若干泥臭いところを扱っているように感じられる.筆者の体験として,3年生の主専攻実験でも,posgreのソースを弄ったり,深層学習ライブラリを実装させたり,するものがあり,コードを書くことに重視している気がする.そういう観点からは,実業務向けなソフトウェアエンジニアとしての能力は付きやすい土壌なのではと思っている.
  • その観点から見ると,東大・京大は比較的理論寄りであり,東工は(電子)制御工学寄りであると私は思う.筑波大の情報科学類と特色と近いのは電通大かなとも思う.
    • そういう観点から見るとソフトウェアエンジニア向けである国立大は,筑波大学なのだろうと思っている.
  • ちなみに,機械学習の理論の勉強をしているときは,「東大の大学院に行きたかったなぁ」とかちょっと思ったりした.
  • あと,同筑波大のメディア創成学類は,CUIでコードを書くというよりGUIを使うイメージです.ハッカーというよりデザイナーというかアーティスト寄りのイメージ.