文系・プログラミング実務未経験・アラサーのヒロヤン(@Hiroyan_python)です。
半年前からプログラミング未経験からPythonの勉強を始め、ポートフォリオを作成して内定を頂き、年明けからweb系自社開発企業で働くのですが、自分が半年間してきたことを紹介したいと思います。
コンテンツ
環境
侍エンジニア塾に入塾しました。 今考えたらテックキャンプやDMM Web Campみたいなスクールでしっかり学んで最短でエンジニアになれば良かったと考えてもいます。
ちなみに侍エンジニア塾の内容は
- 全て講師とマンツーマン
- 自分のやりたいことができる
- いつでも質問ができる
今年の上旬に会社を辞めてから海外を周遊しながらプログラミングを学びたかったため、リモートでも学べ且つ自分のやりたいことをできるエンジニアスクールを探していて決めました。
しかし侍エンジニア塾は高額(75万円)で、講師の質も低レベル(2回交代)、運営(特にカスタマーサービス)もしどろもどろの虚偽説明が多くずさんで最悪だったのでおすすめはしません。
目標
最終目標は「案件を獲得」と「アプリ開発」の2つを決めて、それができれば「3.」という設定をしました。
- 案件を獲得(できれば月30万)
- アプリ開発
- 2.ができてweb系でPython、Djangoが使用できる会社に就職
経過
1ヶ月目
前半
- プロゲート
- ドットインストール
最初はHTML、CSSでフロント側を学んだ後、Pythonの勉強を始めました。
HTML、CSSではポートフォリオも作成せずに、ひたすらプロゲートとドットインストールの繰り返しでした。
後半
- paiza
- 講師の野球のコードの宿題
プロゲートとドットインストールで要領を掴んできたあたりから、paizaでの勉強をし始めました。
スキルチェックは割と楽しくやれて1ヶ月経てばDランクは全て解き終わりました。
・プロゲート(HTML、CSS、Python)
・ドットインストール(HTML、CSS、Python)
・paiza(Python)のスキルチェックD ランク全クリア
pythonを体系的に学ぶために書籍も1冊だけ購入しました。
2ヶ月目
- 講師の出題するPythonの問題をひたすら繰り返す
- Linuxコマンド
- gitバージョン管理
Pythonに関してはまだまだ基礎固めを行いました。
Linuxコマンドとgitはプロゲートやドットインストールで練習をしていました。
・gitバージョン管理
3ヶ月目
- 講師の出題するPythonの問題をひたすら繰り返す
- 4ヶ月目に作成するアプリの検討開始
- djangoの触り
この頃は4ヶ月目に入ってから作成し始めるアプリの要件定義について考え始めました。
またdjangoもそれとなく触れ始めたました。
djangoを触れた当初はpythonと全く別物に感じ全く概念もコードも何もかも理解できませんでした。
下記が作成したpythonプログラムで作成した野球ゲームになります。
要件定義は以下になります。
- コンソールでのメッセージ表示で完結するプログラム。
- 代打、代走、ピッチャー交代といった要素はなし。スタメン9人。
- 三振、シングルヒット、2ベースヒット、3ベースヒット、ホームランが発生。
- 5点以上取られたら、ピッチャーを交代。
- 実際のセリーグのチーム名に応じて、全チームをペナントレースさせて優勝チームを決定する処理。
- マジックの概念はなし。140試合終了時点で、最も「勝率」が高いチームを優勝チームと定義。
- 優勝決定時には、順位表を出力。順位表の出力カラムは「チーム名」「勝利数」「負け数」「引き分け数」「勝率」「ゲーム差」の6つ。
- 引き分けの定義は「12回終了時に同点」。
- 勝率が同じ場合は、勝ち数の多い方とする。それでも同じ場合は1,2位のチーム同士で優勝決定戦する仕様。
- 対戦カードは全チームと28戦する。対戦順序は任意。
- パリーグでもペナントレースを実施する。
- 年間140試合中18試合を交流戦とし、セ・パ両方のチームがお互いに3戦*6チーム分対戦する。それに際し、交流戦での優勝チームも決定する。
4ヶ月目
- Pythonで色々遊ぶ
- ポートフォリオ(アプリ)要件定義と画面遷移作成
- ポートフォリオ(アプリ)の開発開始(まずは画面遷移ができるHPから)
3ヶ月目での野球ゲームが終わったほころびから少しPythonで簡単な学びと遊びを始めました。
また実践的に案件獲得に向けてスクレイピングの技術も身につけました。
ポートフォリオ(アプリ)の要件定義と画面遷移も済んだので本格的にポートフォリオ(アプリ)の作成に取り掛かりました。
ポートフォリオ(アプリ)の要件定義と画面遷移作成に関してはExcelとPowerPointを使用しました。
理論上、画面遷移が全てできればあとは面と機能を実装すれば済むという考えです。
・wordcloudを使用した画像作成
・seleniumを使ったスクレイピング
・ポートフォリオ(アプリ)の要件定義と画面遷移
5ヶ月目
- ポートフォリオ(アプリ)作成
- 就職活動
ひたすらポートフォリオ(アプリ)の開発を行いました。
また就職活動に向けて履歴書や職務経歴書を作成し、ポートフォリオ(アプリ)が出来次第すぐに、企業にエントリーを多数しました。
そして内定もすぐに出ました。
・ポートフォリオ(アプリ)完成
・web系自社開発企業から内定
ポートフォリオ(アプリ)に関しては以下の機能を実装しました。
・Google API
・GCP
・Google Maps Platform
・CRUD(作成、読み込み、アップデート、削除)
・MySQLによるアカウント管理
・画像アップロード
・ログインとログアウト機能実装
・API認証を利用したSNS(Facebook、google)による認証機能
・問い合わせ機能(問合せフォームからメールを飛ばす)
・サーバーのデプロイ
・ドメインマッピング
具体的にどのようなポートフォリオを作ったかと言うと、Instagramがdjangoでできていると知識をもとにInstagram風の登録ユーザーの画像の投稿シェアアプリを作成しました。
参考にしたのはこちらの2つの教材になります。
特にdjango超入門は、「超」がつくだけあって解説が非常にわかりやすかったです。
現場で使えるDjangoの教科書も非常に参考になりますが、まずはやはり超入門で基礎やdjangoの概念を理解した上で読み始めることをおすすめします。
2冊とも手元に置いておけば非常に心強いです。
6ヶ月目
- paizaCランク
- クラウドソーシングに応募
- Django復習
- Line-bot作成
当初決めた目標の案件獲得に主に励みました。
当初は月30万を狙っていたのですが、ポートフォリオ作成と就活の燃え尽き症候群もあり難易度が低いものを細々と獲得しました。
講師曰く「案件さえ取れれば、あとは何にでもなる。」の言葉を信じてひたすら申し込んでいたら3件も取れました。
講師の言う通り、一度でもクライアントをとってしまえばクライアントから立て続けに案件をもらえるので、逆に対応仕切れずに断ることもしました。
・paizaCランクを概ね解けるようになった。
・paizaBランクも解けた。
・クラウドソーシングで案件獲得。金額は3件で6万。
学習とその後
ざっと半年間でやり込んだことを書いてみました。
Twitter界隈でも言われていることですが、プログラミングの勉強に関しては
目標なしに、ゴールなし
に尽きます。
目標というはっきりとしたゴールがあればいくらしんどくでも腰を据えて達成できるのではないかと考えます。
ちなみにヒロヤンは、
- 当日の目標
- 1週間の目標
- 1ヶ月の目標
- 最終ゴール
を設定し、常に目標と乖離はないかを気にしつつ一切の煩悩を排除してストイックに勉強に励みました。
その他感じたこととして、Twitter界隈の人たちの意識の高さですかね笑(突然更新ストップ&消える人も多いのですが)。
これはかなり励みになります。
意識の高い環境にいれば必然的にポートフォリも意識がスキルが高いものが出来上がります。
以上が、「プログラミング未経験者がPythonを半年間勉強した結果」の紹介記事になります。
少しでもpythonを学習し始めた人の参考になればと思い紹介させて頂きました。
Twitterで励ましてくださったフォロワーの皆様、ありがとうございました!!
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する
2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。