みなさん、プログラミングしてますか?
プログラミング出来るようになりたいですか?
でも難しそうだし…
大丈夫、そんなあなたにはProgate!
イラストや図が多く丁寧な説明で、初心者でも楽しくプログラミングを学べます!
目次
Progateを始める前のスキル
私のメインの仕事は組み込み系(電子機器に搭載されるマイコン)のソフトウェア開発で、アセンブラ・C言語を10年くらいやってます。
その他にも
- VBA (Excelマクロ)
- C# (Windows)
- Java (Android)
- Kotlin (Android)
- XML (Android)
- Swift (iOS)
- Python
- JavaScript
などこの時点で色々な言語を扱っているのでプログラミング初心者ではありません。
ただWeb系のアプリ開発は未経験で、HTMLやCSSは雰囲気は知ってる程度でRubyやPHPは全然知らないのでWeb系全般に対する苦手意識がありました。
ProgateにはHTMLやCSS、jQueryやPHP、Ruby on RailsなどWeb系のレッスンが多く(というかメイン)、自分が扱えない言語の勉強をする為にProgateを始めました。
とりあえずは無料版で開始
雰囲気を感じたかったので、とりあえずは無料レッスンを始めました。
ほうほう、レッスンの最初にスライドでイラストを交えながら説明してくれるのか。
んで、課題の内容をエディタに打ち込んでコンソールとかブラウザのデザインが解答と同じようになればクリアになるんだな。
クリアしたらポイントもらえるし、貯まるとレベルが上がるんだ!
レッスンをクリアした数で学習カレンダーの色が変わるんだ!
楽しい!
…と、ゲームをクリアする感覚で割とサクサク進めます。
無料版だとだいたい各コース1~2レッスンの初級内容で打ち止めなので、一通りのコースの無料分だけ終わらせて有料版へ移行しました。
980円/月なのでそれほど高くなく、プログラミングを始めたい人にとって1冊のテキストを買うより安いので敷居は低いですね!
安いですが、できるだけ早くレッスンをこなした方がお得感はあります。
(早ければいいというものでも無いですが)
有料版のレッスンを一通りやって感じた事
Web系以外の言語も含めて、全レッスンを一通りこなしました。
無料版やってる時から思ってた事もありますが、Progateの良いところと悪いところ(足りないところ)を挙げていきます。
Progateの良いところ
- 初心者でもとっつきやすいようにイラストを多く使ってある
- 説明が丁寧
- 課題でやりたい事に対してレッスンが小分けにされており、少しずつ理解しながら進められる
- 課題がわからない場合はスライドを読み返したり、ヒントや解答も見れる
- ポイント、レベル、学習カレンダー、言語の達成度システムなどでモチベーションを上げる工夫がされてる
- やはりWeb系の言語が充実している(特にRuby on Rails5)
- 無料版でもそれなりに雰囲気はつかめる
- 有料版もお手頃価格
Progateの悪いところ(足りないところ)
- エディタのコード補完やキーボードショートカット機能が無い(一部あるが、使いにくい)
- 一部の言語のボリュームが少ない(PythonやJavaなど)
- ブレークポイントを貼ったデバッグができない
- デバッグ手法についての説明が無い
- コードの構成やバグが起きにくい・起きやすい書き方の説明が無い
- 非同期処理(マルチスレッド)についてのレッスンが無い
- エラー処理(try-catchなど)のレッスンが無い
- オブジェクト指向の概念とクラス化や継承を使うメリットがいまいち伝わってこない
他にも細かいところはありますが、大きく気になったのはこんな感じです。
各ポイントの説明
良いところ、悪いところの各ポイントについて少し掘り下げます。
Web系の言語が充実している(特にRuby on Rails5)
HTMLやCSS、JavaScript、jQuery、PHP、Ruby on Rails5は全体の中でもレッスンの数が多く、力を入れているのが分かります。
特にRailsはSNSサイトの基本的な機能であるログイン、パスワード入力、データベース作成・操作、暗号化などを一通りやらせてくれて、Progate自体がRailsを学ぶ為のサービスなのでは?
と思うくらいです。
逆にJavaやPython、Swift(※2019/10/31で廃止)、Goなどはレッスン数も少なく、各言語の基本的な書き方程度の内容しかありません。
書き方の違い程度の内容しかないので、どれか1つの言語を分かっていればやる必要は無いと感じました。
エディタのコード補完やキーボードショートカット機能が無い
普段はVisual Studio (Code)やAndroid Studio、Xcodeなどの高機能エディタやIDEで作業しているとコード補完(入力中に予測してクラスやメソッド、変数名などを補完してくれる機能)が便利過ぎてコーディングが凄く楽で楽しいのですが、Progateにはありません。(HTMLだけ微妙にできる)
コード補完に慣れていると全部ペチペチと手打ちするのが苦痛でしょうがないです…(涙)
単語選択とかインデント調整もできたらいいのに…
まぁ初心者に対して甘えるな!
とか
ブラウザのエディタに補完機能を実装するのが大変
とか事情はあるのでしょうが…
でも初心者向けだからこそコーディングは大変じゃないよ、簡単だよ、と甘やかすべきだと思います。
1文字1文字丁寧に打つ事になんの付加価値も技術力もありませんからね!
デバッグ手法についての説明が無い、ブレークポイントを貼れない
プログラミングで大事なのはコーディングよりデバッグなんですよね。
もちろんバグが起きにくい事を意識したコードも大事ですが、必ずバグは発生します。
むしろプログラミングはバグとの戦いです。
その時にいかに間違いを速く見つけて修正するか?
ここがプログラマの価値を大きく分ける部分だと思います。
普通はIDEとかにブレークを貼って処理の途中で実行を止めて変数の値を確認したり、1行毎にステップ実行してその変化を見るなどしてデバッグします。
しかしProgateではデバッグ機能はコンソール出力しかなく、実行して結果があっているか?
が基本的なやり方になっています。
この部分は大事だと思うので改善されると良いのですが…
コードの構成やバグが起きにくい・起きやすい書き方の説明が無い
バグが起きにくい品質の良いコードというのは読みやすく(可読性)、保守・デバッグ・改変・移植などのがしやすいもので、そういう書き方があります。
例えば変数名を略語を使わずわかりやすく表記するとか、if文のネストを深く複雑にしないとか…
まあこの部分は初心者を脱却した後にやるべきなんですかね。
初心者はまず楽しく書けて楽しく動かせれば良い、と。
非同期処理(マルチスレッド)についてのレッスンが無い
通信処理や負荷のかかる複雑な処理を行う際には別スレッドを立てて並列に処理したり、処理結果をまとめたりする事が必要になります。
UIのあるものだと特殊な処理を行わないとエラーになったりUIに反映されなかったり…
まあこれも初心者には不要!
と割り切っているのでしょうか。
エラー処理(try-catchなど)のレッスンが無い
何かの処理を行う際に変数がnullだったり、何かの条件でメソッドがエラーになる時がありますが、そういう場合はその処理をtcy-catchで囲う必要があります。
try { //エラーを起こす可能性のある処理 } catch (Exception e) { //エラー時の処理 //コンソールにエラー内容を出力するなど }
これは基本的な事なのでJavaやPythonのレッスンで入れて欲しいですね。
じゃないとクラッシュして動かないよ!
どうしたらいい!?
って事になりがちなので。
というか自分が初心者の頃にこれで死ぬほど悩んだので…
いや、今でもエラーには悩まされてますが。
後はエラーメッセージが出た時の対処法というか、解決する為のプロセスを教えて欲しいですね。
基本的にはエラーメッセージの重要な部分をコピペしてwebで検索しますが、初心者が英語だらけの赤文字見たらびっくりするし、どのポイントが重要かなんてわからないと思うんですよ…
ここでもういいや、ってなる人も多いのでは。
オブジェクト指向の概念とクラス化や継承を使うメリットがいまいち伝わってこない
一応オブジェクト指向やクラスの説明はあるんですが、基本的な機能の説明が多く、じゃあこれをどういう時にどう使うと便利なの?
というのが弱く、いまいち伝わってきませんでした。
初心者には理解しにくい概念なのかもしれませんが、
オブジェクト指向を上手く使うとこういう時にこんなにも楽になるでしょ?
っていうレッスンがあると良かったかな…
まとめ
という訳で一通りレッスンを行いました。
悪い(足りない)ところもたくさんありますが、初心者にとってはプログラミングに入門しやすいサービスだと思います。
しかしレッスンを1回やっただけでは絶対に身に付きません。
かと言って同じレッスンを何回やってもレベルは大して上がりません。
Progateをやったからすぐプログラマーとして働ける!
というものでもありません。
あくまでも、
「プログラミング未経験の初心者がプログラミングの世界に入門する為のサービス」
だと思いました。
Progateだけやっていてもド素人→アマチュアになれる程度だと思います。
なので実際にプログラミングで仕事をしている人間の感覚としてはプロゲートというよりはアマゲートだな!
という感覚です。
かと言ってProgateを否定する訳では全くありません。
最初に言ったように初心者が楽しくプログラミングを学べるサービスとしては良いと思います。
私はWeb系は初心者ですが、実際に触って楽しく苦手意識を無くすという意味で役に立ちました。
自分のスキルにして本当のプロになる為には学んだ事を使って既存コードの改変、新規機能開発、自分のプロダクト・サービスの開発を自分の頭でしっかり考えて行う必要があります。
そして結局それが1番速くレベルアップできます。
新卒入社であればそういう場を会社が用意してくれますが、ある程度歳をとってからの中途採用だとそれらをこなした即戦力じゃないと採用はかなり厳しいでしょう。
厳しい事を言っているかもしれませんが、実際にソフトウェア開発は厳しいです。
納期やバグとの戦いで戦場になる場合もよくあります。
そんな時は他のメンバーも助ける余裕なんてありません。
自分の仕事で精一杯です。
技術もどんどん進化していき、常に最新の情報にアンテナを張っていないと既存の知識がすぐ陳腐化していきます。
こういう戦場で求められるのは自分で考えて解決する能力、自分で勉強して成長する能力をもった人材です。
それが出来る人材は逆にどこでもやっていけるし、必要とされます。
プログラミング初心者の方はこれをスタートとして自分で色々なプロダクトを作ってレベルを高めてください。