総合商社と証券会社の文系営業マン2名で外注したWebサービスを軸にした企業を立ち上げるという結構綱渡りな感じで起業をしました。当然、1年目から外注したプロジェクトは炎上し、外注先を変更するものの機動力のあるサービス開発は全くできず、売上も想定していたものよりも全然足りない状況でした。1年目はなんとかしのげましたが、2年目になるころにはこれは自分で勉強して開発・運用を内製化しないとやばいだろうなということで、本格的に勉強を開始することに。。。
ちなみに就職から起業までの経緯は会社のコラムに書いてるので興味ある人は読んで下さい。
プログラミング勉強した結果、サイトがダウンした時に対処できるかなど(実際にサイトがダウンすることも少なくなかったし生きた心地がしない日も何日かあった。。。)、かなりストレスを抱えることになったけど売上は2年後には約4倍弱になり、売却まで持っていける規模になりました。僕と会社の未来を大きく変えることになったと思われるプログラミングをどうやって勉強したのか紹介できればと思います。
今の時代だったらどうするか
最近はプログラミングを学ぶのも便利な時代になったと思います。2017年3月現在であれば、techcampかtechacadmyにいってプログラミングを教えてもらうのが最も効率よく学べると思います。周りにエンジニアの友人もおらず、一人さびしく独学で学んでいたことをお金さえ払えば、丁寧に教えてくれる環境があります。
僕が勉強開始した2012年〜2013年ごろはプログラミングスクールもかなり高額で本当にものになるのかよくわからない感じだったので、独学という選択肢を取りましたが、今の時代には無用な苦労かもしれません。
どちらのサービスもお金はだいたい15万円ぐらいかかるけどその価値は十分にあると思います。もしこれを読んでいるあなたが学生であれば、プログラミングスクールでWebサービス開発の基礎の基礎を学んだら、次は実際に企業のインターンでエンジニアとしてバイトしながら実務を学ぶのがよいと思います。やっぱり実務で運用して学べるものはかなり多いので。社会人で会社に勤めながらであれば、この基礎を元に実際に開発していくのがよいと思います。以下は僕の苦労自慢になってしまうかもしれませんが、独学でやろうと思ってる人や興味のある人は読んで下さい。
総勉強時間と学んだ内容
まずは起業して実務をしながらの勉強だったので、1日3時間〜4時間の勉強が限界でした。ほぼ毎日、週に6日は勉強するのを1年間継続したので、総勉強時間はだいたい1000時間ぐらいです。勉強時間とは言ってもその時間全てをWebサービス開発のためのコアな部分を勉強できているわけではなく、開発するための環境構築とか、悶々としている時間も含んでいます。
Webサービスは様々な技術が複雑に重なり合って動いているので、受験で言えば国立大学の受験みたいにいろんな科目を勉強する必要があります。勉強する前はRuby on Railsってやつでうちのサイトは動いてるらしいからそれだけ学べばなんとかなるんでしょと思っていましたが、全然なんともなりませんでした。
実際には以下のことを学ぶ必要がありました。(この辺僕もプロではないので、間違っているとこがあればコメントなどで教えてください)
HTML
・Webページの配置に関する決まりごと、コンピューターにこれはリンクだとか、これは画像だとかを教えてあげる
CSS
・Webページの見た目に関する決まりごと、サイトの見た目をかっこよくするのに必要
Unixコマンド
・ターミナルという黒い画面でコマンド打つのに必要、黒い画面でコンピューターにあれこれ指示だすのに必要。
MySQL
・データベースに関する言語、サーバー上にデータを保存してそれを取り出すのに必要
Ruby
・サーバーから必要な情報を持ってきてもらったり、必要な処理をするのに必要
Ruby on Rails
・Rubyを使って簡単にWebサービスが作れるフレームワーク
これらを勉強するとはいっても、一つ一つを極めるというのではなくWebサービス運営に必要な知識を必要なだけ仕入れていくって考えでやったほうが継続すると思っています。
開発環境構築が最大のネック
ちなみにプログラミングの勉強で一番のネックになるのは、実際にコードを書いてサービスを動かせるようにするための開発環境を構築するところです。エンジニアの人に聞いてもここが苦労するって人が多いです。
特に今まで、ターミナルという黒い画面でPCを操作したことなんてない人が、黒い画面でrubyをインストールするだとか、Ruby on Railsを使えるようにするために必要なものをインストールするのは結構骨が折れます。
こういうサイトを見ながら意味もわからずコピペで、黒い画面に打ち込んで、なんかよくわかんない英語がブワーッとくるのを「これでいいのかな?」って思いながらやることになります。間違ってインストールしても戻す方法もわからないので、かなりおっかなびっくりやることになります。僕自身はRuby on Railsの開発環境の構築で、1ヶ月ぐらいハマって何もできない期間がありました。その期間、rubyやHTML、CSSの勉強ができたのでよかったはよかったのですが、何事も物事を立ち上げるのは大変とはいいますが、始める前に挫折することになるとはって感じで途方にくれていたのを思い出します。
継続のためのコツ
英語なりプログラミングとか勉強って継続するのが大変ですよね。英語であれば、TOEICみたいなものは明確に数値化されて自分の実力もわかりやすく目標が立てやすいので継続のための工夫もしやすいのですが、Webサービスの運営は点数が明確にでるわけではない上に、いろんな技術を学ぶ必要があります。そのため、あれどこに向かって何のためにこんな苦しんで勉強してるんだっけと目標を見失いがちです。なので継続のために僕自身が重要だと思うことを書きたいと思います。
目標は低めに設定
全てを完璧に学ぼうとすると、プログラミングの深淵に落ちてしまいます。MySQL一つでも極めようとすると膨大な勉強時間が必要です。
あくまで自分でWebサービスを開発して運用できるようにするという目標のために必要な知識を必要な時に仕入れるぐらいの気持ちでやらないと挫折します。開発するWebサービスについても、いきなりfacebookみたいなサイトを作りたいってやるのではなく、小さくスタートするのがいいと思います。
僕自身は会員登録があり、ログイン、ログアウトが出来るWebメディアという比較的シンプルな構成のサイト運営という低めの目標設定だったのが継続できた理由の一つかと思っています。それでももっと小さな会員登録のないメディアを試しに作成してリリースしてみてから外注しているサービスの内製化に取り組むぐらい慎重に、小さな目標から達成する感じでした。
無理しない、わからない・できない場合は別のことをやるか翌日に回す
コンフォートゾーンを抜け出すために、歯を食いしばりながら継続するってことが美学として支持されているように思いますが、僕は逆で、いかに心地よくコンフォートゾーンの中で続けるかってことを勉強では大事にしています。
なのでプログラミングの勉強でも、わからない・できないとなったら諦めて別のことを勉強するか、スパッと諦めて次の日にやるか決めるってことをしていました。プログラミングの世界では原因が不明だけど、動かないってことによくぶちあたります。そのたびに解決するまで粘っていると進むものも進まないので、そこは諦めて必要な別の勉強をするか、諦めて次の日に回すってのがよいと思います。
プログラミングの勉強ではググりながら目の前の問題に取り組むってスタイルが一般的ですが、翌日別の言葉でぐぐったら一発で解決なんてことも少なくないので。
未経験・独学でWebサービスを作った人の経験談を定期的に読む
大学受験の時に合格体験談とか読んでた系の人はわかると思いますが、実際に経験した人の成功談は挫けそうな時にモチベーションをあげてくれます。今はかなり有名になったWantedlyの仲さんのこの記事なんかは今読んでもいいなと思わせてくれます。
Wantedly 航海日誌 — 私のようなの素人のためのHacker Way
Wantedlyの仲さんだと意識が高すぎるって場合にはこの辺の意識そこまで高くないけどやり遂げた人の経験談なんかも読んでました。
実際に勉強に使ったサイトと本
ここでは実際に使ったサイトと本の中でオススメを紹介します。実際には本を何冊も買いまくって何冊か同時並行でやりましたが、思い返すと、いい本にじっくり取り組んだほうがいいかもと思って紹介する本は控えめにしています。
ドットインストール
動画でプログラミングが学べるドットインストールには非常にお世話になりました。上記で書いたHTML、CSS、MySQL、Ruby、Ruby on Railsの関係しそうな動画は全て見ました。動画で学べることの何がいいって、未経験者には黒い画面のターミナル触るのが怖いんだけど、動画だと実際にターミナル画面で作業してるのがわかるので、その通り動かせばちゃんと動くんだって実感があるのがいいんですよね。ドットインストールがなければ、挫折してたどり着けなかったかもと思うぐらいお世話になりました。
ドットインストールのRuby on Railsについては3週ぐらいしたと思います。
Railsチュートリアル
Railsチュートリアルもドットインストールで必要な知識を一通り学んだ後に見ていました。Railsチュートリアルでは結構高度なTwitterもどき的なサービスを実例で学びながら開発できます。TechAcademyなどプログラミングスクールもRailsチュートリアルの内容を参考に教材を作っているものと思われます。
Ruby on Railsアプリケーション・プログラミング
Ruby on Rails 4 アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/11
- メディア: 大型本
- この商品を含むブログ (6件) を見る
上記で紹介した仲さんのブログで紹介されていたので、これもドットインストール学んでから取り組みました。 当時の僕は結構苦戦したように記憶してて、本を進めて、ドットインストールに戻ってを繰り返しながら理解を深めていきました。
最後に
冒頭の通り、今はいい時代になり、勉強するにもしやすい環境が整ってきました。そのぐらいプログラミングが当たり前の世の中になりつつあり、プログラムは書けなくてもプログラミング的な考え方が求められる機会が増えた世の中になってきたように思います。Webサービスに関わる人でなくても、ITによる業務効率化はプラスになるので、興味があればぜひちょっと学んでみてほしいと思います。