プログラミング未経験の元SIerがWebエンジニアの世界に飛び込んで1年が経った話
はじめに
この記事はフィードフォースエンジニア Advent Calendar 2015 - Adventarの25日目の記事です。
前回は hoshinotsuyoshi さんの 私の:santa:アイコンと、おすすめのクリスマスの過ごし方、あるいは新しいrubyのリリースを祝いつつgitのbranch名に:santa:をつける風習とそのせいでCapistranoでのデプロイに失敗するという事象 - Qiita でした。
今回は、プログラミング未経験の元SIerだった私が、Webエンジニアの世界に飛び込んで1年が経った話をしたいと思います。
自己紹介
- ゆきやん
- 男
- 24歳
- 社会人3年目
- 2013〜2014 SIerでエクセル芸人をやってた
- 2015〜 feedforceに転職し、Software Engineerになる
- 今年から初めて仕事でコード書き始めたので、エンジニア歴もうすぐ1年です。
入社時の歓迎会で発表したスライド 自己紹介
俺のエンジニアスキル
なんにもなかった。AWSナニソレ感。ググりながらじゃないと1行もコード書けなかった。
ほんの少し独学してたが、ほとんど熱意で拾っていただいた。
というか多分、中途採用でこれほどまでの未経験者を採用した例は私が初な気がします。
ホント感謝しかないです 🙏
俺の職務
Rubyとか書いたりCSVと戦ったりしている。
最近はBigQueryのクエリをよく書いてる。
日報で振り返る1年
feedforceではQiita:Teamで日報を書く文化が根付いています。
そして、僕はネット上では強気でして、感情のブレーキも壊れているので日報に不満日々思ったことを素直な気持ちで書き綴っています。
そこで、ざっと1年分の私の日報を目grepして、その時の感情を思い出しながら振り返ってみました。
人の脳は記憶を自分の都合の良いように作り替えるので、感じた事考えた事は今その場で書き留めて未来の自分が読み返せるようにするのが大事って誰かが言ってた。
— さい (@sairoutine) 2015, 3月 29
1月
- 1/5が入社日だった。年末年始はずっと緊張とワクワクでおかしくなってた気がする。
- 環境構築術が足りず、自分の情弱さに絶望していた。よくある環境構築スクリプトとか組んでおけばよかった。(brewまわりとかよく知らずここで学んだ)
- 自分が携わるプロダクトのコードを読んでメンターに説明するということをやっていた。
- プロダクションコードを読んでいるのに、公式マニュアル以外の情報(個人ブログ等)だけで理解を進めてしまうことがあった。独学者特有のあれです。ブログの情報は参考程度に留め、最終的には公式リファレンスで裏を取るようにするということを学んだ。
- 昨日読めなかったコードが翌日には読めるようになったりして本当に楽しかった。
- 開発環境のモダンさが素晴らしくて、エンジニアとしての欲求が予想以上に満たされて感動してた。
- 「感動ばかりしてないで、より良い環境を目指す。」とか意識高めなこと言ってた
- この頃はsublimeユーザだった
- 自己紹介プレゼンでぶちかました(上記のスライド)
- MTGでは高度な話題についていけず消耗する。
- chefやAWS関連の話題についていけず消耗する。
- 日々身につくRuby力が大きいし、読むスピードも少しずつ上がっていっている。なので、余裕がなくても焦らず読んでいくのが今大事なことだと思う。変に「もしかしてめっちゃ簡単なところで時間かけてるかもしれない、急げー」とか「みんな大変そうなのに俺だけコードリーディングしてる」みたいな思考回路を持たない。とか言ってた。
- Rails力不足で困ったりしていた。Railsが頑張ってくれてることがよくわかってなかった。「requireしてないのになんでこいつが見えてるんだ」とか。
- リーダブルコードを勧められたので読み始める。
- chefについてペアプロしてもらったりする。
- 僕のチームには新卒がいて、その方も色々教えてもらったりしてる様子だったので横目で見ながら全てを盗んだ。
- Rubyの動的型付けに惑わされ、脳内スタックが頻繁に崩れることが多々あって慣れるまで大変だった。
- 「長い処理を追う→あれ、ここなにやってたんだっけ→また戻って読み直す」の繰り返しになって自分の脳内スタックの無さに絶望する
- 自分が雑魚エンジニア過ぎて燃える。劣等感駆動開発。
- 独学上がりなので知ってて当たり前な知識を一足飛びにしてきた感が否めないという気がしてLinuxコマンドや開発環境まわり(zshとか)について学び始める。
- 「コードリーディングすごく疲れるけど、毎日おもしろいくらい学びがあって楽しい。こういう経験ができることにずっと憧れてた。」とか言ってた
- 不意にBigQueryを触れる機会が訪れ、興奮して調べまくる。
- コードリーディングが終わり、TDDでの本格的な開発に加わる。
- Gitは気合で身につけた。山のようにPocketしていたGitのコミットメッセージ集とか奥義を読み漁ったりしていた。
- Serverspecを初めて触る。
- glibcの例のGHOST対応を行った。苦手なchef業をペアプロしてもらいながら少し理解した。
- 「こんなに手厚く教育していただくとは夢にも思ってなかった。」と感動しはじめる。
2月
- 24歳になった。
- 本格的にプロダクト開発に関われるようになり、GitHubを使った開発フローにも慣れ始める。
Object#eql?
とObject#equal?
の違いについて、懇切丁寧にPRコメントで教えていただけて感動したのを今でも覚えている。(初PRだったかもしれない)direnv
というのを知ったり、bundle exec
付けなくてもよくなる方法とか教えてもらったりして知見だーとか喜んでたりした。- 急な障害が起きてもなにもやれることが無くて反省したりしていた。
- BigQueryについて本格的に学び始める。初めて読む英語リファレンスの洗礼を受ける。
- OSSに人生初コントリビュートした。
- 生意気にissueも書いたりした。
- BigQueryというか新しいこと(流行の技術)を仕事で使えて学べるのが楽しすぎて毎日テンションがおかしくなってた。
- わからないことが多すぎて、「あとで深掘りして調べてみる」というタスクが無限に増えて消化スピードが追いつかず、もがいたりしていた。
3月
- RSpecに苦戦し始める。mockとかstubとか。
- ある程度コードが書けるようになったが、まだまだバグがあったりスマートじゃなかったりしてダメダメで悪戦苦闘してた。
- BigQueryで使うための川のようなクエリを書きまくってた。全くSQLの知識がないので勉強になった。
- RubyのThreadを学んで、むずかしいなあとか言ってた。
- たまたまシェルコマンドを多用する場面が多かったせいか、非常に勉強になって吸収しまくった。やはり何事も業務で使うと吸収力が断然違うと感じた。
4月
- 社会人3年目に突入した。
- その割りにポンコツだと思った。でも後ろを見る時間なんて無駄でしかないから今と前を見る。とか言ってた。
- 素朴な疑問をslackに投げると反応がドドドッと返ってきて喜んでた。
- CSVファイルの一般的書式 (RFC4180 日本語訳)を読んで戦う準備をしていた。正しいCSVと不正なCSVの定義を理解するために(闇深)。
- RSpecですごい難しいインテグレーションテスト書いてて消耗しまくってた。
5月
- あまりのスキル不足に悩んでたけど、Rebuild: Aftershow 91: With PHP, Everything Is Acceptable (Naoya Ito)聴いて元気出したりしてた。
- Rubyistがsedを使ったら負けみたいな話をしてた。シェルでやりそうなことをわざとRubyでやるようにしたりしてた。(Ruby力つけるため)
- 正規表現力が無いことに気付く。
- 正規表現に苦しめられ始める。
- 会社ブログに初記事を書いた。 RubyでBigQuery始めました | feedforce Engineers' blog
- ある程度コードを書けたり読めたりできるようになったが、抽象度の高いアーキテクチャの話になると歯が立たず撃沈。
6月
- fluentdについて学び始める。そもそもchefで躓いたりして無限にyak shavingしてた。
- chefで消耗しすぎたので、chef実践入門を読み始める。
- またBigQueryで川のようなクエリを書いて修行僧してた。
- この頃からAtomユーザになる。
- ずっとSQL書いてて疲弊し始める。
- 初Stack Overflow
7月
8月
- ガツガツRuby書いてた。
- 界隈でプロダクトマネージャーが話題になり、僕も感化されてQiita:Teamに幾つか記事を投稿した。関連書籍とか読み始める。
- 実践入門読んだおかげでchef苦手を克服した。
- サーバの負荷対策まわりの知識の無さが露呈し、学び始める。
- Rubyの似たようなメソッドについて興味本位で調べたりしてた。
- 設計について議論することが増え、DDDを学び始めた。僕にはまだ早かった。
- 地味にシェルスクリプトをたくさん書いてた。シェルスクリプトゥーンとか言ってた。
- UDFリリース時に最速でエントリを書いたりして承認欲求を食べて生きてた。
もうUDFを試した人が。速い!- BigQueryで待望のUDF(user-defined function)がリリースされたので早速試してみた | feedforce Enginee… http://t.co/MqivmHv7Q7 pic.twitter.com/u1B3YOmrO8
— Kazunori Sato (@kazunori_279) 2015, 8月 26
9月
- PRの内容を見ないでマージするという話から岡島の投球フォームの話になった。オカジマージ誕生の瞬間である。(滅多にしてはいけない)
- 毎日のようにSQL書きすぎて病み始める。
- 夏休みで10連休くらいとって休んだりしてた。
- CSVの闇と戦ってた。
10月
- 色々考えてコード書けるようになってた。
- privateメソッドのテストがダメな理由とか調べたりしてた。テストすべきこと・すべきではないこととか抽象的なこととか考えられるようになってた。
- すっごい難しいSQL書いてて鬱になってた。
- すっごい難しいコード読んでて鬱になってた。
- 日報がめちゃくちゃ暗い
- Dockerに入門し始める。
- 社内勉強会でDockerについて発表した。初LTである。
11月
- 色々助けてもらい精神が回復し始める
- 進んで止まって、止まって進んで。人はそれを歩みと呼ぶのだ!とか言ってた
- SQL書きすぎてSQL神と憑依合体したい。とか言ってた
- 色々あって、組織改善について自分の意見を言えるようになろうと、組織論に興味を持ち始めた。組織に属する人間の一般教養として身につけたほうがいいかなとか思い書籍を漁る。
- 組織論読みながら、エンジニアによくある負の感情とかとっくに学術的に体系化されてて面白い。早く達観したいとか言ってた
- 1.5日で800行くらいSQL書いてた。
- オフィスが移転して心機一転した!
- StackShareのおかげで弊社のハ イ ブ リ ッ ド ク ラ ウ ド環境が知られ、優越感みたいなものに浸れて嬉しかった。
弊社で使っている技術スタック https://t.co/ZjS3QrDfgw
— ゆきやん (@yukiyan_w) 2015, 11月 17
FF社。今流行りのハイブリッドクラウドだ
— k1LoW (@k1LoW) 2015, 11月 17
12月
- いろいろあってインフラエンジニアと関わることが多くなりEC2とかEBSに詳しくなった。
feedforceで1年働いた感想
何もスキルが無くて不安だったのですが、質問すると懇切丁寧に教えてくれる環境なので安心感がありました。
あと、ちゃんとメンター制度があるのでその間にがっつり教え込んでもらえます。
Web系はなんとなく「できて当たり前、知らないことは勉強しろ」というイメージが強かったのでこの制度には驚きました。
slackも導入してるので、コミュニケーションコストが小さく、気兼ねなく非同期に質問できてありがたかったです。
ペアプロもたくさんしました。そもそもペアプロは初心者だけのものではなく、必要であればいつでもします。
CircleCIやcapistranoを使った継続的デリバリー、DockerによるサーバCIなど当たり前のように行っていてモダンな環境に興奮したし、逆に辛い部分も学べたりしました。
正直、いるだけで成長できます。とはいえ、業務外でもスキルアップに励む人が多く対抗意識が燃える環境でもあります。
純粋にプログラミングが好きな人がほとんどです。
成長中のベンチャーなので、もちろん辛い場面もありますが面談等があるので吐き出す場所が確保されてます。
吐き出せばちゃんと対応してくれます。どうすれば解決できるか真摯に向き合ってくれます。
超楽しい日が多いし、勇気を出して転職して本当に良かったです。
【オマケ】今年読んだ本
ちゃんと身についてるかどうかは別として、エンジニア1年目として奮闘していく中でいくつか本を読んだので参考までにご紹介します。
じっくり読むのは大変なので、業務しながら「あっこれ、あの本に書いてた、あとであのページ読み直そう」とハッとできるくらいの理解度でいいと思います。
- 作者: 木本雅彦,松山直道,稲島大輔
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (179件) を見る
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (33件) を見る
正規表現技術入門 ――最新エンジン実装と理論的背景 (WEB+DB PRESS plus)
- 作者: 新屋良磨,鈴木勇介,高田謙
- 出版社/メーカー: 技術評論社
- 発売日: 2015/04/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
- 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/10
- メディア: 大型本
- この商品を含むブログ (22件) を見る
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (132件) を見る
- 作者: Peter J.Jones
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/10
- メディア: 大型本
- この商品を含むブログ (1件) を見る
- 作者: 佐々木達也,瀬川雄介,内藤賢司
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2015/03/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)
- 作者: 吉羽龍太郎,安藤祐介,伊藤直也,菅井祐太朗,並河祐貴
- 出版社/メーカー: 技術評論社
- 発売日: 2014/05/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (16件) を見る
- 作者: Jordan Tigani,Siddartha Naidu,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/03/23
- メディア: 大型本
- この商品を含むブログを見る
Docker実践入門――Linuxコンテナ技術の基礎から応用まで (Software Design plus)
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2015/09/26
- メディア: 大型本
- この商品を含むブログ (1件) を見る
世界で闘うプロダクトマネジャーになるための本 ~トップIT企業のPMとして就職する方法~
- 作者: Gayle Laakmann McDowell,Jackie Bavaro,小林啓倫,小山香織
- 出版社/メーカー: マイナビ
- 発売日: 2014/08/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
- 作者: 沼上幹
- 出版社/メーカー: 日本経済新聞社
- 発売日: 2004/06
- メディア: 新書
- 購入: 8人 クリック: 106回
- この商品を含むブログ (31件) を見る
- 作者: エリック・リース,伊藤穣一(MITメディアラボ所長),井口耕二
- 出版社/メーカー: 日経BP社
- 発売日: 2012/04/12
- メディア: 単行本
- 購入: 24人 クリック: 360回
- この商品を含むブログ (94件) を見る