インフラエンジニアがコード書けるようになるために paiza と progate を使っている感想


これは何

バックエンド開発ができるようになるためにお家でPaizaやProgateを使ってPHPやRailsをお勉強している話。
使っている途中なので、もうちょっと進むと意見は多少変わるかもしれないが、今の段階で考えていることを記録しておく。

背景

私はメインの専門領域はWebインフラエンジニア(サーバエンジニア)なわけですが、そろそろアプリケーションコードもそこそこ書けるレベルじゃ無いと仕事がしづらいなと思ってきた。
だいたいコードの関連箇所の概要教えてもらったらなんとかコードを読み書きできる。でも自分一人で完全に問題箇所特定して修正してチューニングする、みたいなことがちょっとしにくい気がしている。SREとして生きていくにしても、自分でサービス作るにしても必要な知識が圧倒的に足りない。

どう学ぶか?

会社で

一番いいのは会社で仕事としてアプリケーションコードを書くのが良い。とはいえ、私のメインで関わっているシステムはレガシーすぎるので「綺麗なコード」とか「良いアーキテクチャ」というのを学ぶのがなかなか難しい(らしい)。本とか読めばある程度分かるのだろうが、ベースである程度読み書きして体に染み込んで無いと辛いところはある。

インフラ領域においてはやはりレガシーなところに放り込まれたが、3年という潤沢な時間をかけて試行錯誤しながら(なんとか動くくそコードを量産しながら)なんとか良い状態とは何かというのがなんとなく分かったつもりである。同じようにアプリケーションについて泥沼で試行錯誤し続けるのも非効率な気がした。

自分で

となると、まずは独自で学習するしかない。ある程度分かってきたらそこそこ新しいシステムでアプリケーションコードを書かせてもらうように交渉するのが良さそう。
というわけで教材を探すわけである。とは言っても能動的に探したというよりも、問題意識を持っていたらTwitterで流れてきたのが目についてそれに飛びついた形。
さて、前置きが長くなったがPaizaとProgateについて。

Paiza

私から見た教材内容

競技プログラミングを学ぶためっぽい感じの内容だった。お題が出されてそれを実装する。主に実装速度(と高レベルになると実行速度)が見られる感じ。
実装速度を求められるのは新鮮で、就職活動をするときに自分の実力を知るためにFizzBuzzを時間計って頑張って書いたのを思い出した(10分以内にかけないくそプログラマもいる、と書かれている記事を読んだ後にやって7分くらいでできたので安堵したのを覚えている)。

選んだ言語

仕事でPHP関係が多いので、まずは最低限PHPコード読むのに苦労しない程度学ぼうと思ってPHPを選ぶ。

内容とレベル感

ざっくりやってみて、Bレベルまでは解けるのは分かった。このレベルだと、想定回答時間内に終わらないことも多いが、最終的になんとか回答できる感じ。Cレベルは普通にふわっと書いて終わるレベル。
Bで苦労するものがまあまああるので、Aは無理そう。

しばらく頑張ればBがスイスイ解けるようになるだろうと思ったが、今そうなりたいかと言われるとちょっと違うと思ったのでここで終わり。

求人?

ところで、Paizaは求人と紐付いているだが、きている求人があわなさそうなのが多いのでちょっとないかなという感じ。提案されるお給料にコーダーとしてのお値段を実感した。コードだけ書きたいわけでもなし、ここを極めるのは自分の進む違う感じがして一旦終わり。

Progate

私から見た教材内容

html&cssの教材とruby, Railsの教材をとりあえずやってみた(html初級終わり、Railsコースは多分半分くらい。レベルは50ちょっと)。アプリケーションを実際に作ってみるというのに重きを置いている感じ。ちょうど何か自分で全部作りたいなと思っていた時期だったので、マッチした。

内容とレベル感

内容としては、「一気に全てを学びましょう」ではなくて、RailsだったらRailsの機能に焦点を当てているところが特徴的。当然、見た目それっぽいアプリケーションを作るためにはHTMLやCSSの知識も欠かせないわけだが、そこらへんは「ここにもう書いてあるのでコピペして該当箇所に貼ってね」という感じで、本当に基礎のところを知っていればスムーズに学びを進められる。綺麗なWebサイトつくるために後でそのコースも取ろうかな、と思わせる作り方なのがよかった。

自分とマッチしているか

今の所結構良さそう。Railsはアプリケーションを高速で作るのに適していると聞くし、後で自分のプロダクト作るときに使えそう。裏の細かい技術的なことはインフラやってる経験から後からまあまあ調べられると思うし「だいたいこんなんで作れるだろう」というレベルまでいければ御の字。しばらく頑張ってみたい。

おまけ

N予備校

半年前〜1年前くらいにプログラミングコースちょっとだけ見てみた。環境構築からしっかり学ばせるというコンセプトが強い。そこらへんは個人的には(インフラ専門なので)間に合っているので別にこれじゃなくていいかなというところ。本当のエンジニア初心者には結構良いかもしれない。関係ないが、世界史とかの講義を聞いていると「なるほどそういうことだったのか」という学びが大きいので、そういう一般常識的なものを学ぶのにむしろ使いやすそう。しかし講義は1時間とか長いのでもうちょっと細切れの方が楽だなあと思いつつ、ちゃんと流れで理解するためにはそれくらいのまとまりは必要だろうなどと思ったりする。

終わりに

  • 昔は本使ってRails触ってみて学習続かなかった。Webサービス使うとうまく進捗や理解を管理してくれるので楽
  • 微妙にお金はかかるけど専門書買うのより安かったりして最近麻痺してお金をいろいろ突っ込んでいる。
  • Progateは実際に手を動かして、それっぽい綺麗なものができてくるとモティベーションが上がる。ものづくりの楽しさ
  • 他の人に任せ切りになっていた仕事の詳細が徐々に見えてくるので気づきが多い