【感想】N予備校プログラミング入門 Webアプリコースを終えて。

f:id:yjkym:20180322225016p:plain

序文

昨日、無事かどうかはともかくとしてN予備校のプログラミング入門 Webアプリコースを修了しました。

某匿名日記にも投下したのですが、こちらでももう少し具体的に感想などを記述しておきます。

スペック

文系。プログラミング歴独学のみ。だらだらと約15年。実務経験なし。

ほぼC#専属。趣味や作業で使用する程度。

最近Railsをさわりはじめました。

入学動機

独学の悪癖がつきまくってる自覚があったので、「正しいプログラミング」を学び直したかった。

学習方法

N予備校では動画とテキストのコンテンツが用意されていますが、時間的にほぼテキストのみでの学習をしました。

なので、N予備校がテキストのみでの学習を想定していなかった場合、ここに書いていることは的外れかもしれません。

ただ一部動画を見る限り、それほど丁寧な説明をしている印象はありませんでした。

とりあえず結論

  • 未経験者がやりとげるのは多分無理
  • 初心者が中級者を目指すきっかけにはなるかも
  • 入門コースだけでもまとまった時間が必要

未経験者がやりとげるのは多分無理

客観的なデータをあげると、
入門コースの実践編となる3章からは各講義の最後に課題が出されて、
N予備校GitHubリポジトリにプルリクエストを出すことで課題の提出に変えて、
学習を進めていくのですが、

3章最初の課題の提出数は現在424件あるのですが、
https://github.com/progedu/intro-curriculum-3001
入門コースラストの4章最後の課題の提出数は現在24件です。
https://github.com/progedu/intro-curriculum-4023

ちょうど動画ベースの講座がこないだ一周終わったところなので、
単純に計算して脱落率驚異の95%となっています。

課題は解答をコピペして提出することも可能なので、
ちゃんと内容を理解できている人の割合はさらに低いと思われます。

なんで?

なぜそんなに脱落していくかというと、難易度が高いということもあるのですが、基本的には説明不足ということだと考えています。

~をするにはこういうプログラムを書けばいい!ということは教えてくれるのですが、なぜ、こういうプログラムを書けば~ができるのかということについての説明が少ないです。

感覚としては、途中の式と解答だけが書いてある数学の参考書を読み進めているような感じで、学習者には途中の式の意味を自力で読み解く能力が求められます。

その過程ではドキュメントをあたったり、自ら調べて解決する能力が必要です。

またアロー関数式だったり、三項演算子や論理演算子を用いた代入などの省略記法も多用されており、一方ソースコード中にはほとんどコメントがないので、初学者が理解するにはハードルが高いと思います。

また実践重視であるがゆえに、概念的な説明は最低限しかされておらず、体系的な学習にもあまり向いているとは思いません。

オブジェクト指向の説明をせずに、JavaScriptのオブジェクトを扱っていたり、データベースの学習をする前に、MVCパターンを扱っていたり、ちぐはぐさを感じるところも多かったです。

他にもいろいろあるのですが(下記)、未経験者が独学で進めていくのは厳しいんじゃないかな~というのが入門コースを終えての結論です。

たとえば保護者の方が専門のエンジニアで分からないことがすぐに聞けるような環境にあればよい教材になるかもしれません。

初心者が中級者へステップアップするきっかけになる可能性はある。

ただ中級者へのステップアップを目指している初心者がきっかけをつかむには良い教材になりえるとも感じました。

私自身、GitHubLinux(Ubuntu)、Node.js、Expressフレームワークなど、自主的にはなかなか食指が動かなかった分野の知識を得ることができたと思います。

難易度は高いですが、中級者向けのまとまった教材というのはネット上にもあまりないと思いますので、ある程度経験のあるプログラマが知識を深めるために利用するのはありだと思います。

それでも体系的な知識が得られるかというと微妙ですが…。

ちゃんと勉強しようとするとかなり時間が必要。

ただ社会人が学習を進めるにはまとまった時間の確保というのがネックになるとは思います。

N予備校の入門コースの想定学習時間は180時間だったと思いますが、私はこのコースを修了するのに400時間前後かかったと思います。

本当にN予備校がこの内容を180時間でマスターできると考えているとすれば、根本的に学習者の能力を測り間違えているような気がしないでもないです。

コースを終わらせることだけを目標にするならもっと短くできるとは思いますが、ある程度知識をつけて今後にいかすことを目標にするとなると、想定学習時間内でコースを終わらせるのは難しい気がします。

追記:想定学習時間あってたかな?と思って調べてみたら、動画での学習で182時間、テキストのみで47時間って書いてありました。無理だよ(´;ω;`)

qiita.com

これから学習してみようと思っている方へ

色々書きましたが、それでも月1,000円というのは破格の価格設定だと思いますので、気になっている方は挑戦してみてもよいのではないでしょうか。

おすすめの学習方法としては

  • ソースコードはコピペしていいので、すべての行に書くぐらいの勢いでその行の処理内容についてコメントをつけまくる
  • console.logやNode.jsのdebugモジュールをガンガン活用して、どこでどういう処理が行われているかを逐一視覚化していく
  • 意味のわからない言葉がでてきて泣きそうになったらhttp://wa3.i-3-i.info/「「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典」で調べる

などがおすすめです。 「「分かりそう」で~」のサイトには本当にお世話になりました。m(_ _)m

ただ特にプログラミング経験の浅い方に伝えたいのですが、N予備校の入門コースが理解できなかった、挫折したからといって、プログラミングができないということはまったくないです。

ぜひ挫けずにプログラミングの学習を続けていただきたいなと思っています。

あとネット上にはN予備校のプログラミングコースのレビューも散見されますが、無料コースしかやってないんじゃないかなーというものが多いのでお気をつけください。

基本的に無料コースと有料コースは内容的にも難易度的にも別物と考えたほうがよいと思います。

ところで、N予備校ニコニコ動画再現コースが2017年度中公開予定になってるんですけど、本当に公開されるんですよね・・・?

その他良かった点

  • プログラミングからソフトウェア設計からセキュリティからデザインまで幅広い内容を扱っている
  • エディタなどのツールを具体的に指定してくれる(VS Codeとか)
  • 外部ツールを積極的に紹介してくれる(Prottとか)
  • 便利なショートカットキーとかもちょこちょこ教えてくれる
  • テストを重視している
  • 講義の動画がいっぱいある(役に立つのかは不明)
  • 教材の内容がしっかりこっそり最新のバージョンに更新されている
  • vimの使い方を教えてくれる(でも最終的にはあんまり使わなかった気がする)
  • シェルスクリプトの書き方を教えてくれる(でも最終的にはあんまり使わなかった気がする)
  • サーバークライアント型通信の実践ができる
  • cronの使い方教えてくれる(便利そう)
  • 公式ドキュメントを調べることの大事さを思い知る
  • GitHubのプルリクで課題を提出させるのはおもしろい
  • いろんなNode.jsのパッケージを扱う(使いこなせるとは言っていない)
  • ぼっちでもSlackを触れる
  • Herokuも触れる
  • Bootstrapとかデザイン的なほうもちょっと触れる

その他ダメダメだった点

  • 学習の進め方(テキストで学習を進めるのか、動画で学習を進めるのか、デバッグの仕方とかエラーが出た時の対処とか)を教えてくれない
  • 異なるJavaScriptのバージョン(ES5 v.s. ES6(2015))の記法が混在していて混乱する。アロー関数記法とかES6の新機能の記法もバンバン使ってくる
  • JavaScriptのコールバック関数の説明がさらっとしすぎている
  • エラーを発見しづらく、オブジェクトの概念が難しいJavaScriptは初心者向けではないと思う
  • 根本的にJavaScriptの文法についての説明がたりない
  • 新しい関数とかが出てきても説明がないことが割とある
  • 無名関数とか、アロー関数とかすごい難しい概念だと思うのに、説明がやたら簡潔。なおかつそれで完璧にマスターした前提で話が進む
  • 手順通りやったのに、なんかUbuntuのユーザー名がubuntuにならない
  • 運が悪いとLinuxに接続するのにBIOS立ち上げて仮想化支援機能を有効にしたりしないといけない
  • いきなりCUIの黒い画面を触らせる
  • Linuxの個々のコマンドについてあんまり解説してくれない
  • 説明無しでいきなりrubyとか出てくる
  • 他の専門用語もさらっと説明無しででてくる
  • 基本的に完成形へ一直線で向かうので、実際の開発でどういう問題が起こるか、どういう発想で開発が進んでいくかといったことなどが体感できない
  • 講義の内容と比べて課題が簡単すぎる(ほとんどコピペで回答できる)
  • 言われたとおりにやったのにChromeデベロッパーツールがフリーズしたりする
  • 手順通りに申し込んでも届かないのに、忘れた頃にN予備校のSlackから招待状が届いた
  • たまに日本語がおかしい
  • プログラミングの作法的なものはあんまり学習できない
  • ドキュメントの読み方とかは教えてくれない
  • Expressフレームワークミドルウェアの概念が理解しづらい
  • ボトムアップで進める講義があり、それぞれのモジュールの全体での役割が理解しづらい
  • 実践編で作る成果物(予定調整くん)が難しい割に地味で楽しくない
  • なんか気づいたら4重の入れ子ハッシュテーブルとか使っててアルゴリズムも複雑
  • 完成例として示されてるもの(予定調整くん)にレベルの低いバグがある
  • 講義が終わってから、参考図書を紹介された

以上、参考になれば幸いです。

カロリーメイトください。