プログラミング初心者がいきなりRuby on Railsをやるのはどうなのか問題

f:id:hc0208:20180207104853j:plain

いろいろなところで同じような議論をよく耳にしてきました。

プログラミングをこれからやりたいと思った人がその最初の勉強としてRuby on Railsからはじめるのはどうなのかという問題です。

僕はRuby on Railsからプログラミングをはじめていますが、Ruby on Railsからはじめてよかったなと思うことやはじめなきゃよかったなと思うこと両方あります。

賛否両論別れる議論で結論がなかなかでない問題だと思いますが、今回は僕の考えをまとめてみたいと思います。

そもそもなぜ問題なのか

個人的には大きく2つの問題があると思います。1点目が「便利すぎるという点」、2点目が「覚えることが多すぎる点」です。

便利すぎるという点

Ruby on Railsはただのフレームワークにすぎません。その裏にはWebアプリケーションをつくるためのいくつものRailが用意されています。

フレームワークが便利すぎて、その裏にある基本的な技術をしらないまま触るのは危険だったりすることがあります。

こういうと、アセンブラまでやれという議論が当たり前のようにでてきますがそれは時代によって変わるのではないかなと思っています。

今 Ruby on Railsがそういう状態(= 裏にある基本的な技術をほとんど知らなくても触っていい状態)にあるかと言われるとまだかなと思っています。

実際ActiveRecordしか触ったことない人はUNIONとか知らないんじゃないですかね。。

ただ、知らなくても上手い人はそこそこお金は稼げてしまうのは事実なので、そう言った時代が少し先にくるかもしれません。

実際、経験がそんなになくてもお金を稼げてしまったりします。

hc0208.hatenadiary.jp

覚えることが多すぎる点

Ruby on Railsは便利すぎるゆえに、いろいろなコマンドやルールをRuby on Rails側で提供しています。こういったルールを初心者に覚えさせながら学ばせるのはどうなんだろうという議論です。

それだったら、より計量なフレームワークであるSinatraなどで勉強した方がいいという人も多くいます。

メリットとデメリット

問題を踏まえた上で、いきなりRuby on Railsをやるメリットとデメリットについて考えたいと思います。

メリット

メリットは2点あります。

まず1点目は、「動くものがつくれて楽しく勉強できる点」です。

僕がRuby on Railsから勉強をはじめていちばん感じたメリットはこれです。実際に動くものが目に見えてできているのを見ながら勉強をしてきたからこそ初心者のときにプログラミングを続けられたかなと思います。

なかなかモチベーションが続きにくくて挫折してしまう人も多くいる中、挫折を減らすのに大いに役にたつ要素かなと考えています。

覚えることが多かったのは確かに大変だったのですが、粘り強く続けることで僕は乗り越えられました。

次は、「技術の深掘りができる点」です。

これも大きなメリットだったなと感じています。Ruby on Railsからはじめて、「Rubyってもっと便利なメソッドないかな」「SQLってどういうものなんだろう」「セキュリティはどういうところをRailsがやって、どういうところを自分が意識しないといけないんだろう」とより下のレイヤーへの興味が湧いてきてそのまま勉強し、知識がついていくことがありました。

いきなりSQLとかセキュリティの話とかされても正直ピンとこないですし、実際にWebアプリケーションがどういうものなのかイメージしてから自然な流れで興味をもち勉強できたのは自分にとってプラスになっています。

これは結局、1番目の問題も少しづつ解消するのに役立っています。

デメリット

人によってデメリットは変わってくると思いますが、僕は1点だけあげます。

「できる気になってしまう」ということです。

僕が学び始めたとき、少しのコードを書くだけでいとも簡単にWebアプリケーションが作られてしまったので、エンジニアって意外と簡単になれるんだなと思ってしまいました。

視野が狭くなってしまっていたんですね。実際のエンジニアにはさまざまな知識がないとなれないですし、「できる気になっている」状態になってしまうのはけっこう危なかったりします。

もちろん早い段階で間違いに気づきあらためて勉強しなおせばそれでいいと思います。

まとめ

いろいろ思ったことを書きましたが、結局どちらでもいいと思います。

ただ、Ruby on Railsを業務で使いこなすためには裏にある基礎的な技術をしらないといけない状態なので、どっちからはじめるにしろ今はそういった技術は知らないといけないと思います。

時代が進むと、そういう基礎的な技術をしらなくても開発ができる日もいつかくると思いますが、今はまだそういう時代ではないかなと思います。

基本情報技術者試験、応用情報技術者試験レベルはとっておいたほうがいいでしょう。

hc0208.hatenadiary.jp

終わりに

もっと詳しい話が聞いてみたいと言う方はぜひTwitterの方に連絡ください。