理系的素養は有るけれどもウェブ経験が全く無い学生インターンが、9日間で立派なウェブ系エンジニア になったので、そのポイントをまとめました!
ざっくり概要
- Getting Started with Railsをやる
- ユーザに届ける体験をする
- Pull Requestのやりとりをする
- SQLをいじる
- ウェブで使うミドルウェアとインフラを知る
- JSFIDDLEを触る
- ウェブ業界について知る
そしたら取り敢えずウェブ系エンジニアとして仕事ができます!
インターンで来たのはこんな人
ウェブ系の採用イベントに参加した際に、多くの方が「Twitterの分析をしています!」とか「SNSの実装をしています!」とか「検索で使えるアルゴリズムの研究をしています!」と、ウェブ系のアピールをされている中、ただ一人ウェブとは関係ない、超目立つロボットを持ってきている方がいました。
激しく動き、歌い、光るロボット。
話を聞くと、「ウェブやりたい!でもウェブ良くわからないから作れるもの持ってきた!プログラムは大好き!ファイルシステムくらいなら自分で実装できる!ウェブやりたい!」 ってことだったので、東北と遠方の方ではあったのですが、インターンで2週間だけ来て頂きました。
やった事
インターンまでの宿題
- Getting Started with Rails をやる
- heroku でアカウント作ってデプロイする
ウェブの勉強するのにおすすめの書籍は何か?みたいな話になった時に、取り敢えず手を動かすのを優先して欲しかったのと、作った物を自分一人ででも世に出す方法を知って欲しかったので、上記二つを私からの宿題にしました。
初デプロイ(初日)
- Virtual Box で開発環境構築
- Github 開設
- Railsで簡単なサイトの修正 (The NERD Tree 使ってもらった)
- Capistrano でデプロイ
色々な説明は端折りながらも、スピード優先で実装からデプロイまでを経験してもらいました。内容は簡単なリンクURLの差し替えです。
最初のデプロイ時は手が震え、家に帰ってからは嬉しくてその箇所を何度も見直したそうです。
基本的な開発からデプロイまでの確認(2日間)
- MVCについてとRailsのMVCについて説明
- どんな意図でどのファイルを修正するかシェア
- RailsでAPIの実装
- Pull Request やり取り
- RSpec でテスト書く
最初に実装からデプロイまでの流れを通しで経験している(=デプロイの怖さ等も理解している)状態だと、Pull RequestやRSpecの必要性やMVCについて、言葉上の理解ではなく体感として理解してもらえたと思います。
バックエンド/インフラの理解(3日間)
- AWS, MongoDB, Redis, MySQL,memcached の概要と、iQONで何を担っているかシェア
- MySQLのクエリ最適化をひたすらやる
- 障害対応見学
バックエンドとインフラについては、ヨッシーさんに見てもらいました。ハーコーな方なので、私一人からは教われない物を色々学んだはずです。
障害は予期していなかったものですが、彼にとっては幸運だったと思います。普段はチャットでコミュニケーションしつつ各々のペースで開発しているメンバーが、高い緊張感の中でノートPCを寄せ合って密に連携をとりながら各プラットフォーム対応していく状況でした。そこから感じ取るものは有ったと思います。
フロントの実装(3日間)
- JSFIDDLE 触る
- HTML書く(zen-coding 使ってもらった)
- CSS書く
- スマホ/PCブラウザ対応する
- JavaScript書く(Chromeの開発者ツール使ってもらった)
JSFIDDLEはHTML/CSS/JavaScriptが書けて、メジャーなライブラリのインクルードも簡単に出来るサービスです。気軽に試せるサンドボックスで、初学者にとっては学習速度が必ず上がるものです。
彼の自前のherokuのプロジェクトにGoogle AnalyticsとAdsenseを入れてもらいました。インターン期間中には教えられなかった、計測と改善の楽しさを自分なりに体験して欲しいです。
他
- tmuxで画面共有
- vimの変な癖があったら治すため、vimlogとった(けどあまり使わなかった)
- ウェブ業界について、今イケてる(と我々が感じている)サービスとか、IPOとか、元気なベンチャーとか、大企業のウェブについてとかを、みんなで好き勝手教える
- 取り敢えずfacebookのアカウント作らせる
結果
どれくらいに到達したかを表にしました。レベルは今まで見てきた複数の職場で流通していたチケット(多分難易度はウェブ系では一般的)の内、こなせる率はどれくらいかを示しています。
領域 | レベル | 対応可能なケース | NGそうなケース |
HTML CSS | 40% | HTML5でのvalidなマークアップはできる 既存コードを参考にした要素の追加削除とかも出来る | 細かいデザイン等はキツい IEががががが。。。 |
JavaScript | 60% | 一般的な物はいける 複数の非同期通信が絡むようなのは楽しそうにやっていた | CSSのデザインが絡むようなのはキツい |
Ruby on Rails | 60% | 一般的な物はいける | MongoDBとか、何らかのミドルウェアが絡むとキツい 急ぎ案件はキツい |
元は言わずもがな全て0%。9日間でここまで出来るようになるとは思っていなかったので、教えていて非常に楽しかったです。
彼自身の地頭や根性やバックグラウンドもあったとは思いますし、英語が出来ないと宿題の時点で詰んだりする訳ですが、やはり「ウェブをやりたい!」という熱い気持ちが成長を後押ししていたように見えました。
ざっくり概要(再度)
- Getting Started with Railsをやる
- ユーザに届ける体験をする
- Pull Requestのやりとりをする
- SQLをいじる
- ウェブで使うミドルウェアとインフラを知る
- JSFIDDLEを触る
- ウェブ業界について知る
そしたら取り敢えずウェブ系エンジニアとして仕事ができます!
とは言え、当然まだまだまだまだ覚える事は沢山あるので、あくまでスタート地点に立ったというイメージです。
最後に
弊社は大企業でも官公庁でもないので、それらがエンジニアに与えてくれる物の多くは弊社では得られません(特に今は)。
ただし、「成長」の一点はどこよりも得られます(特に今は!)。
人生変わる程の成長がしたい!と思ったら、是非是非VASILYサマーインターンへ! (遠方の方でも、旅費・宿泊費は会社で負担しています!)