僕がエンジニアになるまでの人生
はじめまして,ミツバ (@EX46900521):中村潤 という人です.今回は,後輩学生達に僕がやってきたことを共有しようと思い立ったので,文章を書くことにしました.どこかの誰かに役に立てばいいなと思います.
ところでこの人生fmが最高にエモいので,ぜひ聞いてください
人生fm
## TL;DR
・ 大学に入って,部活に入ってゲームをつくってきた
・ 研究室で研究を行う上での物事の考え方を教わる
・ 寺子屋という学内バイトで,人にものを教える難しさを教わる
・ 就職活動でコテンパンにやられ,自分の未熟さを思い知る
・ インターンなどに行き,キャッチアップ精神を大事にするようになる
・ 無事内定
## 自己紹介
現在は,京都産業大学の大学院生をしており,来年から東京でエンジニアとして働く人です.今は研究活動に勤しみつつ,暇な時間は好きなことをしています.暇な時間があるなら研究しろと言われそうではある.
最近の興味は,DDDなどの設計周りや関数型言語です.
## ピカピカの大学生活
大学入学時の僕は,今よりも少しテンションが高く,ゲームクリエイターの夢を持っていました.大学に入って初めのオリエンテーションで,「ゲーム作りたいっす!」と言っていたのをよく覚えています.そしてゲームを作りたい欲求を満たすために,電子計算機応用部(通称:C.A.C.)という部活に入りました.
C.A.C.のオススメポイントですが,C.A.C.は毎年KC3というイベントに部として参加します.このKC3は,関西の情報系の部活が集まって,勉強会を行うイベントです.勉強会だけあって当然知識も得れるのですが,それよりもTwitterでのコネクションを増やせて,一気に情報源が増えます.当時Twitter初心者であった僕からしたら一気にコネクションが増えることは,Twitterを続ける理由に繋がり今後のキャッチアップにも役立ちました.
だから何が言いたいかって言うとTwitterをやろう!,それだけ
しかしながらTwitterをやりすぎるのもどうかと思うので,ある程度キャッチアップする目的で使ってください.
## 研究室という第二のホーム
三回生の秋学期から僕は研究室に配属されました.そこで僕の生活は一変しました.以前までは,二時間かけて学校に通い部活に行き,その後帰るということを繰り返していました.がしかし,研究室という場所は最高でした.とりあえず最高な点が三つあるので,列挙してみます.
・ 寝袋持ってきて,寝泊まりができる.
・ 調理道具が揃っており,料理ができる.
・ 体育館のシャワーを利用することで実質お風呂.
研究室が第二の家になるまでにはそう時間はかかりませんでした.
悲しいことに・・・
研究室の紹介はほどほどにしておくとして,研究室のおかげで家と学校までにかかる往復四時間を節約できます.言いたいこととして家まで30分以上かかる場合は,絶対下宿しよう.親に相談!それだけ.
そして研究室で印象的な出来事がありました.それは物事の捉え方に関して,ガンガンに突っ込まれたことです.悲しいことに研究室配属当初の僕は,全然考える能力が足りていなかったようで,ボスにいろいろ研究について突っ込まれていました.そこでの気づきなんかを少し書きます.
僕が物事を捉える時に大切にしていることは,物事を雑に捉えることです.しっかり言うと抽象化という概念にあたるのかなと思います.もっと言うと「要するに何?」という言葉をその物事に対して問いかけて,知識がない人でも理解できるような解が出れば抽象化に成功したと思っています.研究だとその価値をいかにして伝えるかなどが重要だったりするので,抽象化が大切な場面が多いです.技術系のトピックでもまずざっくりと物事を理解して,そのあとで完全に理解したらいいと僕個人は思っています.なので皆さんも雑に完全に理解してください.ちなみに僕はあまり物事を完全に理解していない(日本語不自由).
## 寺子屋という学内バイトと恩師
研究室に配属されてから,先輩から「寺子屋のバイトをしないか?」というお誘いがあったので,本気で引き受けることにしました.寺子屋は,学生の就学サポートを行うバイトで,授業でわからないことがあった学生の質問を受けます.このバイトは現在も続けており,いろいろ得れるものが多いです.この僕を寺子屋に誘ってくれた先輩は,僕を逆求人イベントにも誘ってくれたりと僕の恩師的な人間で,感謝しかない.
では僕がこのバイトの経験から意識し始めたことを説明しようと思います.色々あるのですが,これが一番重要そうだなと思うことは,質問の仕方,され方だと思います.まず僕が質問を受けた時に意識していることは,質問者と僕との間のゴールの共有です.質問者が何をしたくて,何が今問題なのかをまずはしっかり確認し,その後問題に取り組むことを行ないます.「何を当然なことを!」と思うかもしれないが,このことを意識せず表面上だけ理解して説明を行うと,少し求めていたことと違うみたいなことはよくあると思っています.あの有名な木にぶら下がったブランコとか.だから質問する側もゴールを明確にして,質問してきて欲しいと思っています.頼む!.
余談ですが,この記事は寺子屋から持ち上がったネタ(僕主導ではない)でなかなかにいい雰囲気している職場なので,みなさん来てくださいね.
## 就職活動と人生観の再構成
僕が就職活動を始めたのは,M1の五月からです.今からちょうど一年一ヶ月前です.
まず就職活動を始めるきっかけですが,僕を寺子屋に誘ってくれた恩師が,「逆求人行かない?」と言ってくれて参加することになりました.逆求人とは?みたいな人はぜひググって,出てきたサイトを片っ端から登録しまくるとよいはずです.責任は持つ.
### 逆求人イベント
初めての逆求人は,大阪で行われたジースタイラスさんの企画するイベントでした.
午前中は説明だったり,準備だったりで時間が過ぎていき,午後から企業との1 on 1面談をするという流れでした.
当時の資料はここに上げておきます.参考になれば嬉しいです.
20160514 逆求人イベント
このイベントでは,企業の方にスライドを使ってプレゼンをした後,フィードバック的なものをもらえます.フィードバックがなければ,質問したりして時間をぷらーっと過ごします.初回の時に,僕がもらったフィードバックを少し列挙してみます.
・ どんな会社につきたいの?領域は?
・ 会社に入ってどんなことをしたいの?
とりあえずこの時の僕には,あまり今後の具体的なヴィジョンがないことがわかります.初めてなので大目に見て欲しい.しかしながら,これに対する答えは今もあまり出てなくてまだまだ子供です.人生は難しい.一応最終的にできたスライドも載せておきます.参考になれば嬉しいです.インターンに行ったことなんかもスライドに書いてあるので,だいたいこの資料を見れば,僕という存在がわかると思います.よろしくお願いします.
内定はもらっており,来年の春から東京で社会人をやっていきます.何か機会があれば,どこかで会うと思うので,その時はよろしくお願いします.
## これまでの過去を振り返って感じたこと
僕が本格的にいろいろ技術的なキャッチアップをし始めたのは,おそらくB4からだと思う.研究室に僕が配属されたそれぐらいの時期からです.それまでは特に何もキャッチアップせず,友人や先輩からこの技術がいいらしいということを聞いて,それを触ることが多かったと思います.これだと非常に遅い気がしていて,かつ効率が悪い気がします.あと技術的なトピックをシェアする人が周りにあまりいなかった問題もあったのかしれないです.なのでとりあえず適当に僕がどんな感じで,その後のキャッチアップ方法を改善していったのかを適当に書いときます.参考にしてください!.
## 僕が行っているキャッチアップ方法
キャッチアップ方法は,受動的なものと能動的なものの二つに別れると思っているので,順番に説明していきます.
### 受動的なもの
受動的なものとして一番活用できるのがTwitterだと思っています.僕はB1のころからTwitterを利用していたのですが,基本的には身内との連絡ツールとして利用していました.しかしながらこれだと情報が著しく偏ります.だからとりあえずITエンジニアっぽい人を見つけたら,片っ端からフォローなりリストなりに入れまくり,そのリストを監視するようにしました.これは研究室の一つ上の先輩から教えてもらった方法で,今もすごく重宝しています.僕がフォローしている人は600人程度ですが,リストには1000人近くアカウントが入っており,それらのツイートを監視するという変態的な手法も行えるので,リスト機能はおすすめです.Twitterのリスト機能は調べたら出てくると思うので,説明は割愛します.そしてリストが見やすいクライアントとしては,TweetDeckが有名だと思います.僕もこれを利用しています.このクライアントの何が良いかというと,同じ内容のカラムを並べられます.つまりこれで何ができるかというと,下の図のようなことができます.これはすごいことだ!
図の左側のカラムは,ITというリストの「@」という文字が含まれたツイートのみを表示するカラムで,右側は「#」という文字が含まれたツイートのみを表示するカラムです.左側のカラムは,何かしらのニュースを見るカラムで,右側のカラムは,主に勉強会の様子を見るためのカラムとして利用しています.こうしておくと,何か大きいイベントがあった時に,そのツイートを補足しやすくなります.これは便利です(自画自賛).
### 能動的なもの
主にサイトを巡回するわけですが,基本的によく見るのははてなブックマークのテクノロジーのホットエントリ.こればっかり見ている気がします.後はqiitaのトレンドを見たり,githubのトレンドを見たりしています.時々,dev.toなんかも見たりしていたり,あとRSSリーダーを使ったり色々しています.RSSリーダーは,既存のものだとFeedlyがオススメ.悲しいことですが何かしら調べ物をする時,英語のサイトを見る頻度は結構高いので,英語から逃げることはできないです.だから腹をくくって英語を読みましょう.
後は基本的に読みたい技術書を適当に読んでいることが多いです.幸いなことに大学には図書館があり,適当に本を漁れます.どんどん漁ってください.
技術書は実践的な本を読んだ方が良いと思っていて,気軽に実践しにくい項目(開発手法,設計,哲学...etc)は必要になった時にしっかり読んだ方がいいかなと思っています.知識としては必要だともいます.そして実践的な本の読み方として,まず本の中に出てきたコードをとりあえずエディタに全て書き写し,どんどんファイルとしてアウトプットしていきましょう.そして書いたコードをGitHubにPushする.これにより自分が本を読んだという功績が目に見える形で残り,達成感がより大きくなります.そしてなにより手を動かすことを自分に強制させてくれます.
草も生えて一石二鳥っぽい
どんどんアウトプットをしていきましょう
## やってきた技術の話(補足的な話)
これまで哲学的な事ばかり書いて来たので,エンジニアっぽく技術についてどんなことをしてきたのかを,書いてみます.
### 一年目
大学一回生の時です.まず授業でC言語を習ったので,C言語を書いていました.部活ではJavaを触ろうとして,全然わからんやんとか言っていたと思います.そこでProcessingという描画が色々できて,オブジェクト指向っぽい言語で書ける言語でゲームを作ったりしてました.このゲームでは訳も分からずにクラス定義を書いていた気がするので,なかなかに壮絶でした.一応雑ですがゲームは完成させて,文化祭に展示しました.
個人的に最初に学ぶ言語はC言語でもいいと思うのですが,次に学ぶ言語はPythonかgolangがいいと思います.特にgolangは,A Tour of Goという実践的に学べるチュートリアルが存在し,学びやすい言語かなと思います.そしてgolangは,サードパーティ製のライブラリをインストールする方法も簡単で,go get <url>と書くだけです.これもつまづく要因が少なくて,良い点だと思います.しかしながら少しGOPATHなどの設定に手間取る可能性があるので,公式の情報を確認しながらやりましょう.
今もですが,ろくに設計せずにコードを書いていくと,めちゃくちゃ非効率なコードを書いてしまうことがあり,この時の授業の最終課題で書いたコードは,1ファイル3000行強でした.ファイルを分けるという考えは当時はなくて,かつ変数も無限に非効率にぶちまけていくと,3000行超えました.みなさんは気をつけてください.(ちなみに「ゆめにっき」のようなアイテムをとって,謎を解いていくゲームをつくっていました)
### 二年目
ここからJavaなんかも授業でやるようになって,オブジェクト指向がなんとなくわかってきたぐらいだった気がします.この時は部活で,enchant.jsというjsのゲームエンジンを利用して雑なぷよぷよを作ってました.初めてのチーム開発だった気がします.ソースコードは部内のGitLabを使って管理されていた気がします.しかしこの時は,全然タスクをきる方法なんか知らないので,基盤となるコードを誰かががっと作ってそこに少しずつみんなで修正を加える的なことをしていました.基盤は僕が基本作っていて,夏休みはjsと遊んでいた気がします.今思うとすごく失敗している気がします.だから真剣にチームでやる場合は,ちゃんと話し合ってタスクを細分化していくべきですね.
アジャイル開発などのキーワードでいろいろ調べると面白いと思います
### 三年目
研究室配属をしました.研究室では,qiitaクローンを作ろうとボスから言い渡され,研究室の同回生と雑に設計して作り始めました.実装面では実装力が神の人がいたので,その人ががっつり実装していました.僕はある程度開発して,インフラ周りをいじってました.vagrant使ったり,Docker使ったり,AWSのインスタンス立てて,作ったアプリを入れたりといろいろしていました.ちなみに僕は下の図を見る限り55コミットらしい.実装力神の人は159コミットしているので,神だと思う.ちなみにリポジトリはprivate.
そして僕はこの研究室でVimmerと出会いVimを使い始めました.そのVimmerというのは,上で説明した実装力神の人です.とりあえず当時はその人と二回生のプログラミングの授業に潜り,Vimのことを学びながら授業を受けてました.今思うとなぜその授業に潜っていたのか謎ですが,楽しい時間でした.
当然のことだけど,知っている人に教えてもらうことが一番理解して実践していける環境だと思うので,困ったらTwitterでもいいので適当にメッセージを送信してみると良さそう.
### 四年目
研究活動が始まりました.僕はApache Solrという検索エンジンを利用して,いろいろいい感じに検索する研究をしています.この年はボスの力により,ラスベガスに行かしてもらったりありがたかったです.カジノで散財したのは,いい思い出です.下の写真は,グランドキャニオンです.
### 五年目から現在
現在はいろいろ雑に触って過ごしています.そろそろ社会人で,今後インプットの時間があまり取れない可能性があったりするかもしれないので,雑にインプットの時間を作ったり頑張っています.頑張りましょう.
## 最後に
ここまで記事を読んでくれた方,ありがとうございます.なかなか恥ずかしいことを書き殴ったと思っているが,気にしないことにします.
後輩学生達へ
学び始めの時は,何をしたら良いのかわからないし,基礎的なこともわかっていないので,色々と手が出にくかったりする部分も多いと思います.だけど,なんでも良いので,適当に記事を漁ったり,わからないなりに適当に技術書を読んだりしていくと,わかっていくことが少しはあると思います.まずはそういった少しの理解からどんどん次の理解に繋げていってください.そして優秀なエンジニアになってください.以上です.
あと気軽に共有してもらえると嬉しいです
最後に,雑に作った僕のサイトを置いておきますね.