Progateはプログラミングの入門者としては手軽に始められるツールです。プログラミングのイロハを無料で丁寧に解説しています。プログラミングというものが全くわからない方には、今やドットインストールと並んで非常に重宝される存在です。
ただ、ある程度Progateを学習していくと、そのままカリキュラムが終了してしまうことがよくあります。インプットはスムーズにこなしてきたけれど、しっかり身についているのかという不安を感じるユーザーも中にはいるようです。
「Progateを終えました。その次はどうすべきか?」と迷っている方、実はProgateでフォローしていないことが結構あります。本記事はそこに触れながらProgate後のアクションを探っていきます。
Progateを卒業するべき理由
Progateは手軽に始められるにはもってこいのツールですがプログラミングの全てを網羅していないと前述しました。それはプログラミングの裾野の広さに起因します。
まず、プログラミングは一つの言語を取ってみても情報量・難易度がピンから切りまで存在しています。
実務になれば膨大なコードからエラーを修正する作業や、データベースの移管となれば限られた時間・期間内にMYSQLなどのデータベースに情報を入れたり、取り出したりする作業が想定されます。
時間的制約がある中で多くの情報を扱う実務と比較するとProgateの対応範囲は限定的であり、Progateだけではプログラミングの世界は完結できるものではありません。一通り言語を学習したら、いったん卒業して実務に近い作業をこなすことが大切になってきます。
Progateで学べるのは基礎だから
Progateで取り扱う内容は、誰でもわかりやすく丁寧なものになっています。それが取り組みやすさに繋がりメリットの1つに挙げられる要素ですが、プログラミングで必要な要素は基礎を活かして応用に昇華する力です。
もちろんProgateの中でも基礎固めのレッスンだけではなく、課題を解決するなど、応用力を養うチャプターもありますが、それを解いただけでは第三者的にはアピールになりません。
例えば、WEB開発企業に就職活動をする際、採用担当者はProgateを終えたその先に、何をやってきたのか?もしくは何ができるのかを見ています。
Progateでは環境構築は学べないから
実務となると、例えばECサイトをPHPで作成する場合は、ローカルかサーバー上に開発環境を構築して、エディタはATOMで…、などというところから始まります。農業に例えれば、種を植える前に、土を耕すことと一緒です。
経験値があるプログラマーの方であれば、いつものルーティーンの様に、環境を開発し、馴染みのエディタで作成を開始する話ですが、Progateの場合は全てが御膳立てされているために、環境を構築して、数多くのエディタの中の1つを選んで作業するという発想が育ちません。
理解した感じがしてるだけの可能性があるから
プログラミングの楽しさを教えてくれるProgateですが、しっかりとアウトプットされているか?を計ることはできません。分からないから同じレッスンを何周もして満足…など、ぬるま湯のような環境であると、思わず長居しがちになってしまいます。
このループ学習はあまり意味がない行為です。プログラミングはインプットよりアウトプットの方が大切であるということはよく言われます。Progateで学習したらすぐにアウトプットに移りましょう。
インプットし過ぎの怖さ
そもそも、プログラミングにおいて、関数や記法を全て理解、全て暗記すべきではありません。ある程度理解できたら、生きたソースコードの中でアウトプットを通じて、徐々に慣れていくのが本筋です。
例えば、PHPを例に取ると、ビルトイン関数を覚えたり、クラス構文をマスターすることはとても大切ですが、完全にマスターを目指すのではなく、実務につながるアウトプットに移りましょう。
Progateが終わったらすべきこと
Progateでフォローしていない事が一番足りない事なので、それを一歩ずつ吸収していきましょう。以下に開発環境とエディタの2点をピックアップしています。
開発環境は言語がどの様な環境で動くのかという仕組みが理解できます。いわば言語そのものではなく、言語を取り巻く周辺知識が身につきます。開発環境は、掘り下げればAWSなどのバックエンドエンジニアの領域に向かう、大変奥が深い分野です。
エディタは、プログラマーを職人に例えれば、大切な仕事道具です。プログラマーは品質だけではなく、納品日を遵守するという使命を担って業務をしています。その点、優れたエディタは、実務スピードに直結します。しかもエディタは毎日手に触れるので、業務効率という意味でも非常に大切な存在です。
開発環境のやり方を学ぶ
まず開発環境ですが、HTMLだけであればブラウザをGoogle Chromeにすれば、エディタをドラッグするだけですぐにCSSでスタイリングされた画面が返されます。
ところがこのHTMLに例えばPHPを埋め込んで、ファイル名の拡張子を.phpにすると、途端にコードがそのまま画面上に返されてしまいます。これはPHPの言語はサーバサイド言語という、サーバで動くという特性を持った言語だからです。サーバーでコードを解釈させてブラウザに返すという流れが必要になります。
上記PHPで有名な開発環境はXAMPP、MAMPが挙げられます。これらは無料でダウンロードすることができ、初心者でも気軽に構築することができます。ただ両方ともチーム開発に向いていないですし、パソコンごとの環境の差異が発生しやすいといったデメリットがあります。
そこで、Progateと同じ様に無料もしくは安価で学習を提供しているドットインストールの紹介です。
ドットインストールでは、docker社が提供するdockerの使い方をレクチャーしています。dockerはコンテナ技術で、コンテナ内でサーバサイド言語などを動かすことで、ポータビリティで環境依存のない開発環境を手軽に構築してくれます。
ドットインストール内では具体的にはdocker for mac のインストールからコマンドラインでのdocker composeの起動方法も学習可能です。
上記の他の手段としては、メンターサービスが挙げられます。これはエンジニアに直接、環境構築を指南してもらうものです。MEMTAというメンターサービスが有名で、プロの現役エンジニアが現環境から今後に向けた環境をレクチャーしてくれます。
一歩進んだ環境構築になるとサーバーから構築を考えたいのであれば、awsのec2上にdockerを取り込んだり、visualboxにlinuxを入れるなどして、dockerなどを取り込めば、環境依存しない、本番環境に近い開発環境をいくつも創出できます。
エディタの使い方を学ぶ
エディタの使用を極めると作業効率がぐんと上がります。例えば、vscodeというエディタの場合を例に挙げると、「!」だけでhtmlの雛形が反映されたり、コードを入力するとエラーや補完機能が備わったりすることができます。
また、コマンドラインで動かす際もMacであればターミナルもついていたりとエディタ内で作業が完結できるのも嬉しいポイントです。さらに拡張機能も充実しているので、使っていけば行くほど手放せなくなります。
「どこでエディタを学べば?」ですが、vscodeやAtom(古いエディタであればvimなども)などの使い方はドットインストールが詳しくレクチャーしています。
エディタは、そのほとんどが無料で配布されています。エディタに関してもっと詳しく知りたい方はこちらの記事をご覧ください。
サイトの模写
エンジニアの間では「写経」と言われているサイトの模写は非常に大切なプロセスと言われています。大きな理由としては書くことによる記憶の定着が挙げられます。書くという作業が読む作業より効果的であることは広く知れ渡っている通りです。プログラミングの世界も例外ではありません。
udemyは数多く(15万以上)のコースが存在しています。セールなどを狙えば安価で良質なコードが入手できます。この様なコードを模写することで新たな気付きがあったり、正規の書き方を肌感覚で培うことができるのです。
ポートフォリオの作成
先ほどアウトプットについて触れましたが、結論からいうとポートフォリオ作成が最高のアウトプットです。ここでわからないことに遭遇したら、初めてprogateに戻ればいいのです。
progate内で必要以上に同じレッスンを何周もするのではなく、あらかたざっと学んだらさっさとポートフォリオを作るアクションを起こす。これがプログラミングを血肉化する近道です。
プログラミングで動作するデバイスや仕組みを作品とするならば、プログラミング自体は手段にすぎません。
さらに言えば、WEB系の企業に就職するとするならば、採用者は応募者の自走能力を見ています。他と似たようなポートフォリオではない、独自のポートフォリオを完成まで漕ぎ着けられるか?実務でもその自走能力が期待されるわけです。
無理して一人で学習しないのも大切
プログラミングは世界中のブームになっており、今は様々なプログラミングスクールが存在していますが、疑問点が棚上げされたままで暗中模索な状態であれば非効率です。プログラミングの挫折率は、ある民間の調査では90%という驚愕の数値も報告されています。
プログラミングの世界は他者の力を借りて成り立っている世界であるので、人に(会社に)頼るという特性を否定せず、分からない事を尋ねられる環境に身を置くことも一案です。
プログラミングスクール
体系だったカリキュラムはその道のプロが監修しているので、その道に沿って学ぶことはとても合理的です。上記の環境構築からエディタの操作方法、職務経歴書などの作成、サポート体制の充実など、メリットをあげれば、スクールはプログラミングの独学の負の部分をうまくリカバリーしてくれます。
ただ、あまりにも高額だったり、情報弱者を食い物にする商品もあるので注意が必要です。特に金額面は生活へのダメージが大きいので問題です。実際、youtube上でも現役エンジニアのyoutuberが注意喚起をし、話題になっています。
購入のアクションを起こすには支障があるほどの金額の場合は、ドットインストールやudemyなどのQ&Aなどで、気軽に相談したりして、本当に購入するべきかどうか見極めるアクションを起こしてください。
学生ならインターン
インターンシップ制度は時給制や日給制で求人サイト上に数多くひしめいており、indeedの場合、東京23区の条件で「プログラミング インターン」と入力したところ、1140件ヒットしました。
プログラミングで働くということは知識だけではなく、チームワーク力、コミュニケーション力、新しいことにチャレンジする創造力、社会的な責任力が問われます。インターンという体験の場に身を置くことで、本職とする際の絶好のトレーニングとなります。
コミュニティやメンター制度
Progate上でも「もくもく会」というオフ会が存在します。こちらは同じプログラミングを勉強する方同士の親睦会で、わからない事を情報交換したり、モチベーションを刺激し合ったりすることができます。
一方、プロの視点から問題を解決したい事がよくあります。そういう場合はメンター制度を活用するのが効率的です。独学であると調べてもどうしてもわからない箇所に遭遇する可能性や。我流になってしまう可能性があります。
メンター制度を活用することで、わからない事を直接指導してもらったり、客観的にコードを見てもらったりできます。
まとめ
プログラミングの世界は知識の裾野が広く、Progateが終わった後でも、やることは順番待ちしていると言っても過言ではありません。日々情報が英語で更新されていく中で、現役のエンジニアはその只中で新たな仕組みを勉強したり、実装したりします。
ある有名なプログラマーの書物を読むと「エンジニアは常に調べて覚える事が半分仕事の様なもの」と書いてありました。目まぐるしく技術情報が上書きされる世界であることは間違いありません。
新たな上書き情報を身につけて応用できる様になれば、非常に人材価値の高いエンジニアと言えるでしょう。一人でも多く、未来の優秀なエンジニアになれる事を祈っております。