はてなインターン2019攻略記事 / 参加してきました

はてなインターン最終日にサブアカウントを作ってはてなIDを変えるという暴挙に出た
id:sobreera 改め id:lunastera です。よろしくお願いします。
この度、はてなインターン2019のメインストーリーをクリアしたので攻略情報を共有します。

とりあえず最初に言ってしまうと迷ってるという人には参加することをおすすめします。

どんな感じ

攻略記事なのでフェーズ毎に解説します。

選考

普通に選考課題こなせば面談まではいけます。
普通にと言うのは、明らかに「アルゴリズムを考えて解いてね!」ってニュアンスの問題なのに言語標準の関数とかで一発クリアはい提出〜✌🏼みたいなことしなければって意味です。
別にそれで提出してもいいけど、多分通らないし、出すとしても別解としてちゃんと解いて提出したほうが安心できるのでおすすめです。

面談に関してはわかりやすいポートフォリオが絶対あったほうが良くて、できればGitHubにあげておきたい。
ポートフォリオGitHubが悲しい事になっていると本当に話すネタに困ります。

前半

基礎的な知識をつける & 後半に耐えうるかを測るフェーズ。

流れ

2週間かけて講義をやりつつ、既に雛形が用意されている1つのWebアプリケーションを完成させるといったものです。バックエンドもフロントエンドもやります。
ただ最初に書いた通り基礎的な知識をつける目的もあるので「フロントなんもわからん」でもなんやかんやいける、と思う。

もう少し具体的な流れを書くと

1週目:

  • 出社: 10:30
  • 講義: 11:00 ~ 13:00
  • 昼休憩: 13:00 ~ 14:00
  • 課題*1: 14:00 ~ 19:00

2週目

  • 講義: 11:00 ~ 13:00
  • 昼休憩: 13:00 ~ 14:00
  • 独自機能実装*2: 14:00 ~ 19:00

2週目金曜日

  • 発表: 11:00 ~

といった感じですね。

注意点

1週目の時点で独自機能を意識しておかないと残り1週間で独自機能を考えて実装しなければならないので「余裕がないよ〜〜😭」ってなります。
しかも発表スライドも作らないといけないので、実質的に(平日で)作業できるのは3日ぐらい。この前半の発表前日が一番つらかったまである。

その他

メンターや講師の方がめっちゃ積極的に進捗確認や詰まりがないかを見に来てくれるので、Help!!!って感じを出しにくい人でもやりやすいです。
でもそのままだと後半苦労するからこの期間中にHelp出せるようにしようね。

後半

このフェーズでは実際の開発チームごとに分かれてバトルします。
強い人だらけで「自分は無力だ…」ってなるけど頑張ろうね。

流れ

基本的に
1. タスクを決める
2. 実装する
3. リリース
を繰り返す感じですが、こちらも最終日に発表があります。

タスクはこの中から選んでねって方式だったり、自分でやりたいこと見つけても良い感じです。相談して決まったら質問やレビューリクエストを繰り返しながら機能を実装し、実際のサービスにリリースしようねという感じ。

無茶苦茶重いタスクを1つやって「こんな規模のものを2週間で!!!!」とやってもいいし、細かいタスクを大量にこなして「爆速リリース!」「驚きのリリースn回!!」とやってもいいと思います。

注意点

インターン生が均等に分かれるわけではなく、普通に一人でチームにぶっこまれることもあるのでそこは気合を入れよう。
あと基本的にタスク完了までは自分が想定している時間*1.5ぐらいかかると考えたほうがいいかもしれない。

実際自分視点だとどうだったか

まあ今までこんなことしてるよってだけ書いてて、実際自分はどうだったのかとか書いてないのでちょっとずつ書く。

選考

正直「なんで受かったんだ自分…?」と考えるぐらい(自分が)ひどかった。

まともなポートフォリオなし!GitHubの草なし!はてなのサービスを無茶苦茶使ってるわけでもない!
しかも普通のWeb開発で殆ど使わないだろその知識…みたいなことを必死にアピールしてたので、本当に何故受かったのかわからない。恐らくこの必死さになにか感じるものがあったのだと思う。

帰り道では「落ちたな」と面談中の自分を想起しながら電車の中で安らかな眠りについた。

前半

最初の週は基礎的なところが多くて、まあこれぐらいなら今までWebやってたし行けるやろ!とちょっと調子にのってしまい、想定より詰まりが多く2週目で見事にスイヤセン…スイヤセン…ってなってた。見通しが甘すぎる。
あとAWSでガッツリハマってるときにid:utgwkkに助けてもらった。やさしい

前半の課題はLooseLeafという記事ベースのダイアリーサービスを考えて、アイディア自体はええやん!って思いつつ、実際褒められていたのだけど、全然関係ないこと*3工数使ったり、コンセプトと仕様のコンフリクト*4が起こりすぎて、何がやりたいんだことサービス…となってしまっていた。

ちゃんとやりたいことはメモに列挙してセルフレビューしようね。

後半

ブックマークチームに配属されました。

はてなインターン参加しました記事で予習していたので、インターンでリリースしてる人もいるんだなーすごいなーぐらいの気持ちで行ったら歴代のインターン生の多くが「〇〇リリース!」「爆速リリース!」とかやってておいおいおい死ぬわ俺という気分になった。

そもそもの気が弱いので「自分ごときが長年続いてるあのサービスにリリースぶっこむの恐れ多い」ぐらいの気持ちで、最初の週は本当に戦々恐々としていた。
しかも最近リプレースされたので、余計に自分が弄ってコードが汚くなるのが恐ろしかった。
developer.hatenastaff.com

しかし実際にタスクをこなしていく上で、ブックマークチームのメンバー、特にメンターの id:yigarashi さんにとにかく手助けしていただいて、流石の自分も「ここまで手伝っていただいたんだから、なんとかリリース決めたい」と思い必死に頑張った。
そして出来たものがこちら。
bookmark.hatenastaff.com


結果的に2位という好成績を残すことができ、一先ずは安心。
自分の中では結構甘えがあった気がしていてもっとがんばれた気がしているのだけど、とは言ってももう終わったことに対していつまでも後悔の念を抱いていても仕方がないのでこれを糧にもっと強くなりたい。

その他

やたらと社員さんに奢ってもらえて逆に申し訳ないってなってた。待遇が手厚すぎる。

まとめ

正直ここまで学びがあるとは、という思いが強い。これだけ書いても全然書き足りないと思うぐらい濃いインターンだった。
あと社内が全体的にインターン生に対して優しすぎて「これいつか返ってきそうで怖いですね」という話をしていた。
最初に書いた通り迷っているなら参加して後悔はしないと思っている。

ブックマークチーム最高!はてな最高!Scala最高!

あ、どうでもいいかもしれないけどLoosLeafは悔しいので作り直します。
lunastera/looseleaf · GitHub

おまけ: 得たものと失ったもの

得たもの

失ったもの*5

*1:午前の講義内容を元にWebアプリケーションを拡張する

*2:定時までハンズオンみたいなのもある

*3:せっかくなので独自記法を取り入れたいと思い、浅い考えでパーサを作った

*4:記事ベースと言いながらダイアリーが必須要件になった。言い訳すると前半の講義の必須課題でDBのスキーマがそういう風になっていた。

*5:自分で捨てただけ