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