こんにちは、スカポンタンです。
プログラミング学習を始める人が増えてきている昨今、
『プログラミング学習ってどうやればいいの?』
と、悩んでいる方や
『プログラミングのオンラインスクールって実際どうなの?』
って思っている方は多いのではないでしょうか?
かくいう筆者も今回、オンラインスクールで受講してみて気づいたことがたくさんありました。
どんな人がオンラインスクールでプログラミングを学ぶべきか?
筆者なりの考えですが、上記について筆者の体験談とともに解説しようと思います。
簡単に自己紹介
まず、手短に自己紹介させていただければと思います。
わたくし、スカポンタンは32歳の高卒です。(画像は筆者ではないのであしからず…)
10年間、某大手スポーツメーカーの工場で勤務して鬱になり、退職してSEの友人から誘われ、2年前に安易にIT業界に足を踏み入れた単細胞です。
とはいえ努力はする方で、勉強も嫌いではないので頑張ってみようと思い、友人に教わりつつJavaの勉強をしてました。
Java silverの資格も取得し、あとは開発現場へ入ることが目標だったのですが、スキル不足や入社した会社が開発の案件をほとんど取ってこれないため、1年半ほどテスターに甘んじておりました。
この時点では、JavaでMVCモデルでの開発を少しかじった程度で、SpringBootというフレームワークの勉強の途中でした。
正直、ほとんど未経験と言っても差し支えないほどスキルも知識も低かったです。
そこで、Twitterで出会った方からPHPの勉強をしてフリーランスを目指してみないかと言われ、オンラインスクールを紹介されたのが事の始まりです。
オンラインスクールのメリット
最初に、筆者が実際に受講したオンラインスクールでのメリットを以下に挙げておきます。
- さまざまな開発環境での開発スキル
- 共同開発だからこそ身につく数々のスキル
- 講師の方や共同開発のメンバーがいることで挫折しにくい
こちらを詳細に解説していきます。
どんな人がオンラインスクールでプログラミングを学ぶべきか?
あくまでも筆者の個人的な見解ですが、以下のような方がオンラインスクールで学ぶべきなのかなと思います。
- プログラミングの勉強の仕方がわからない
- メンター(教えてくれる人)がいない
- 一緒に勉強する仲間が欲しい
まぁだいたい筆者に当てはまっていたことなんですが(笑)
とはいえ、上記に当てはまる方にはオススメです。
筆者自身がほぼ独学で学んでいて辛かったのが、質問できる人がいないことと勉強方法がわからないことでした。
やみくもに勉強しても、開発経験を積めなければその努力もなかなか実りません。
であれば、実際の開発に近い経験を積めれば未経験でも開発現場への参画も可能と思い、オンラインスクールでの学習を決意しました。
オンラインスクールでの心構え
さて、申し込んだのはいいですが、オンラインスクールも当然タダではありません。
それなりの金額を支払って学びに行きます。
とはいえ本業の隙間時間に行っていたので容易ではなかったです…。
そんな筆者がオンラインスクールで心がけていたことは以下です。
- 決められた期間、絶対にやり遂げる意思
- 周りと比較せず、昨日の自分よりも成長していること
プログラミングは挫折しやすいとよく言われますが、筆者はもう何度も挫折しかけてます(笑)
今回のオンラインスクールでの共同開発の期間は2ヶ月。
たかが2ヶ月くらいやり遂げてやろうと心に決め、学習をしてしました。
…が、やはり訪れる挫折の瞬間。
共同開発は、個々のスキルも人それぞれなので筆者は自分のスキルのなさを悲観し、勝手に凹んでモチベーションが下がってしまったときもありました。
なので、割と大事なのは他人と比較しないことです。
自分のペースでいいのでやりきることが何より大事です。
そもそも挫折してしまったらそこで終わりなので。
『諦めたらそこで試合終了ですよ…。』
さまざまな開発環境での開発スキル
教材を参考にAWS Cloud9での開発
まず、AWS Cloud9でのPHPのフレームワーク『Laravel』で教材を見ながら、MVCやCRUD処理と言われるWEBアプリケーション開発の基礎を学習しました。
AWS Cloud9は簡単に開発環境を構築できるので、筆者のようなプログラミング初学者でも非常に入りやすかったです。
動画と教材の両方がありますし、それでもわからなければ講師の方に質問することで解決することができました。
最後は作成したアプリをHerokuというサービスを使用してデプロイ(WEB上で公開)するところまで行いました。
教材のアプリとはいえ自分でデプロイまで経験できるのは結構テンション上がりますよ(笑)
Docker(コンテナ)環境での開発
共同開発では、Docker(コンテナ)環境での開発を行います。
ここからはちょっと難易度上がるので正直、最初の挫折ポイントですね。
仮想環境上にコンテナ環境を構築し、そこで開発を進めていくのですが、最初はわけが分からず進めていました。
Docker環境で開発をするメリットは、開発者が全く同じ環境で開発することができるなど、調べると出てくるので勉強してみるといいと思います。
ただ、講師の方にも言われましたが、今回の目標はあくまでも
『LaravelでWebアプリケーション開発をすること』
なのでDockerについては時間があるときに深堀りしようと思います。
本当に複雑で難しいですが、Docker環境で開発しているとエンジニアっぽくていいですよね(笑)
共同開発だからこそ身につく数々のスキル
現役エンジニアの現場寄りのレビューを受けられる
実装が終わり、動作確認した後はGit/GitHubを使用してコミット→プッシュ→プルリクエストまで行います。
そして講師の方にSlackで連絡してレビューしていただくのですが、
めちゃくちゃ指摘をいただきました…。
正直しんどかったですが、どうせ現場に出てから言われるなら今のうちに慣れておこうと思いました(笑)
そもそも指摘も、『ここの考慮してないとダメだろ…。』っていう指摘なのでただただ自分の考慮不足を痛感するばかりでした。
現役のエンジニアの方のレビューなので、開発現場に入る前に少しでもそういった経験が出来て本当にありがたかったです。
共同開発でしか得られない経験
『別にプログラミングなんて個人でもできるじゃん。』
こう思う方もいるのではないでしょうか?
ズバリ!共同開発をすることで身につく力は以下です!
- コミュニケーション力
- アウトプット力
- わからないことを言語化する力
また、共同開発で学んだ今だからわかる共同開発でのメリットをご説明いたします!
Git・GitHubでのコンフリクトの解消
個人で開発している場合、仮にGit・GitHubを使用していてもなかなかコンフリクト(競合)って起きないと思うんですよね。
他の方と開発しているからこそ起きるコンフリクトは、現場でも必ず起こりますし、その解消方法を知ることができたのが何より大きいです。
こればかりは言葉で説明しても伝わりにくいと思うので、ぜひ共同開発をすることで経験してみてください!
全くの他人と協力してアプリを作るコミュニケーション力
自分の場合は20歳の大学生と共同開発していたため、
『32歳のおっさんがサボってたら簡単に負けちゃうだろ…。』
と思い、彼のおかげでモチベーション高くアプリの開発に取り組むことができました。
また、結構な頻度で挫折するタイミングがくるのですが、やはり共同開発だと
『自分がサボったらメンバーが大変になってしまう…。』
という責任感も出てくるため、挫折しにくくなります
そもそも途中で投げ出すなんて20歳の大学生にそんなダサいところ見せたくないです。
『この人すげーな…。』って思われたい一心で必死にくらいついてたのは内緒です(笑)
また、共同開発をしていく中で自分が実装を担当していた部分の説明会などを行っていたため、
人に教える(アウトプットする)ことで自身の知識をより深めることができました。
人に説明できなきゃ本当に理解したとは言えないですよね?
講師の方への質問の仕方など、わからないことを言語化する力
開発を進めていると当然、わからないことにぶつかります。
講師の方々はとても優しく、丁寧に教えてくれるのですが、アホな質問をしたくないと尻込みしてしまい、なかなか質問ができませんでした。
(それがよくなかったのですが…)
また、質問自体も何がわからないのかわからないという状態が最初は続き、質問したいこともまとめられないので辛かったですね…。
それでも質問しないと進まないので、
- 現状の問題(エラーなど、起こっている事象)
- 調べたこと・考えたこと
- 試したこと
などを記載し、質問をしていくことで徐々に質問する力がついていきました。
正直、筆者はまだまだこのスキルが足りず、これができないと実際の開発現場でも苦労すると思うので、この質問力は本当に大事だと思います。
講師の方や共同開発のメンバーがいることで挫折しにくい
受講生に寄り添って教えてくれる講師の方々
筆者の場合ですが、自分1人に対して講師の方が2名もつくという贅沢な環境。
わけのわからない質問をしても、優しく丁寧に理解するまで教えてくれました。
時間があるときは、個人的に時間を作ってまでご指導いただくこともあり、とても助かりました。
かなり手のかかる受講生であったことは間違いないのですが、最後まで親身になっていただきました。
2か月間のお礼を申し上げた際に返事をくれたことは今でも感動してしまいます。
挫折せずに2か月間頑張れたのは講師の方々のおかげでもあります。
本当に感謝しかありません!
共同開発メンバーの大切さ
筆者と共同開発をしていたメンバーはピチピチの20歳で大学生でした。
人生に希望しかない彼との共同開発は、32歳のおっさんにはまぶしすぎる存在で、よく比較して勝手に凹んでいました(笑)
しかし共同開発を進める中で…
こんな風に互いが互いを認めて意識し、モチベーションも高まり、結構な頻度で連絡しつつ協力して開発を進めていきました。
(※大学生がおっさんとは実際には言ってません。筆者の被害妄想です。)
彼のおかげでこの2か月間を乗り越えられたことは紛れもない事実です。
本当に感謝しています。
共同開発が終わってからも大学生の彼とは今でも連絡を取り、お互い自己研鑽を続けています。
切磋琢磨し合える人と出会えたのも、共同開発ならではのメリットでした。
まとめ
いかがでしたでしょうか?
かなり長文になりましたが、筆者が共同開発を通じて得た経験やメリットを解説させていただきました。
2か月間のオンラインスクールでの共同開発を経て、たくさんの学びがありました。
開発スキルももちろん大切ですが、実際の開発は一人でやることはほとんどないでしょう。
そんな時に必要なのは、上司の方やメンバーとコミュニケーションをとることが大事なのではないでしょうか?
プログラミングスキルだけでなく、そういったヒューマンスキルも身につけることができるオンラインスクールでの共同開発の経験はかなり有益だと筆者は思っております。
もちろん、独学でもできてしまう方もいるとは思いますが、凡人の筆者はオンラインスクールに通うことで前述のスキルを多少なりとも身につけることができました。
その甲斐もあって、2021年8月から開発現場に参画し、開発経験を積むことができる環境に入ることができました。(厳密にはタイミングもよかったのですが…。)
筆者のように独学での学習に限界を感じている方やプログラミングの勉強方法がわからないという方は、ぜひオンラインスクールでの学習を検討してみてください!
この記事が、一歩踏み出す勇気に少しでもなれば幸いです。
スキルのない高卒の筆者でもできたので、きっとみなさんにもできるはずです!
コメント