未経験プログラマーの雑記

元個別指導塾運営者、現プログラマーによるブログです。教育や自身の学びについて発信していきます。

【未経験、独学からプログラマーへ】独学で苦労したことなど【Progate様とpaiza様に感謝】

本文:約5000字

読み終わるのに8分〜10分ほどかかります。
 
 前回の記事では未経験から半年でプログラマーになった僕の経緯を紹介させていただきました。前回概要だけ紹介していた、プログラミング学習の苦労話と、実際にプログラマーとして働いていることを踏まえて、これからプログラミング学習をする方へのアドバイスをしていきたいと思います。
 
 プログラミング学習
 僕の場合、プログラミングは全くの無知な状態で始めたので、そもそもどうやって勉強すれば良いか調べることからはじめました。そうするとProgateというサービスが真っ先にヒットしました。

Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]

月額1000円ほどでいろんな言語についての勉強が出来て、しかも実際にコードを書き、それが正しいかどうかの判定や、正しくはどう書くのかという模範解答などなど、完全初心者でもめちゃくちゃにわかりやすく、手取り足取り教えてくれるサービスだとわかり、即奥さんに相談し、月額分の投資を許可してもらいました。
 今思えば進研ゼミの宣伝マンガを読んで親に「進研ゼミやりたい!」ってお願いした子供の時となんら変わりないなとおかしくなりますが、進研ゼミとは違ってちゃんとやりました(笑)
 
 そんな感じで始めたプログラミング学習ですが、Progateが本当にわかりやすかったおかげで、プログラミング学習をすることに苦労した記憶はあまりありません。わからないことがあっても繰り返しやっていればわかるだろ、と特に気にせずとりあえず反復していましたし、本当にわからないところがあれば無視していました。
 プログラミング学習よりも、「試しに自分でなにか作ってみよう!」と思った時に、その環境を準備するほうが大変でした。エディターと呼ばれるプログラムのコードを書くソフトをダウンロードし、そのソフトの初期設定をして、さらに開発に使用する言語を使うための準備をして、やり方を調べながら色々設定して・・・。
 この時間が全く無駄であったとは思いませんが、確実に僕の中ではプログラマーになるまでの過程でかなりストレスが溜まったことの一つですし、別にこのタイミングで経験しておかなくても良かったことだなと今では思います。
 「試しに何か作ろう!」と思っても僕のように勢いでプログラミング学習を始めた人は「じゃあ何を作る?」となり、「とりあえず準備だけ」と準備はするものの、その準備にめちゃくちゃ時間がかかってそこで挫折する、という流れに陥りそうなので、これから学習する人は、paizaというサイトで開発環境をブラウザ上で使用出来る無料サービスがあるので、そちらを活用することをおすすめします。
 
 プログラミング学習で困ったこと
 苦労したことはないと書きましたが、困ることはちょくちょくありました。どの言語を勉強するか、勉強したことをどうアウトプットするか、ということです。
 僕の場合、何かの記事でpython人工知能にも活用されていて、初心者にも勉強しやすい言語だ、という文言を目にして、素直にpythonから勉強をはじめました。その後、HTMLやCSSRubyjavaJavaScriptSQLなど、Progateで色々な言語を勉強しましたが、PythonRubyjavaなどについては学ぶべき基本的な考え方などはほぼ同じなので、どの言語でも良いな、と思います。同じ動作でも使用する単語が違ったり、すこし構文の形が違ったりというくらいで、考えるべき部分は同じです。
 スポーツで例えるなら、野球とソフトボールは使うボールの大きさやベースの間隔など違いがりますが、基本となるルールは一緒ですよね。そんな感じです。
 
 そう考えた場合、使う単語がわかりやすかったり短かったり、構文の書き方がシンプルだと感じるpythonは、たしかに初心者向きだなと思います。
 
 ただ、ホームページ作成がしたいのであれば、最初からHTMLやCSSJavaScriptなどの言語を学ぶことをおすすめします。ホームページを作るときに使用する言語なので、他の言語とはかなり違う印象を受けますし、他の言語を勉強しても理解しやすくなる部分はあまり無いと思います。
 野球をやっていた人が相撲をするとなったときに、別に「野球をやっていたおかげでめちゃくちゃ馴染みやすい!」とはならないですよね。多分。下半身がちょっと強いことが役に立つくらいでしょうか。
 
 勉強したことをどうアウトプットするか、というのは、「どんなものが作りたい」というものがはっきりした人であれば、実際に勉強したことを使ってアプリを作ってみたり、ウェブサービスを作ってみたりと出来るのだと思いますが、僕はそこまでの想像力が無く、自分は本当にプログラミングの能力が身についているのか?と疑問に思うことが多々ありました。
 そこで役立ったのが、先程ちらっと書いたpaizaというサービスでした。

ITエンジニア・プログラマ向けの転職・就活・学習サービス【paiza(パイザ)】

paizaはプログラミング学習、プログラミングの問題演習とランク分け、転職サービスなど、プログラミングに関する様々なサービスを提供しています。その問題演習が様々な言語に対応しており、問題のレベルもしっかり分けられているため、まずは基本的な問題から入り、少しずつ難しい問題にも取り組むことで、「このくらいまでなら出来る」「これは自分には難しい」ということがわかり、利用する前に比べて自分の能力がどの程度なのか客観的にわかるようになり、インプットしてきたことがどの程度身になっているのかもわかりました。
 
 理想としては、プログラマーとして就職する前に簡単なアプリを作成し、転職活動の際にそれをアピールするのが良いと思いますが、どんなものを作れば良いかわからない人は、paizaで問題を解き、ランクアップすることでモチベーションを維持するのがおすすめです。paizaのランクはそのままpaizaの転職活動時の応募条件に使われているのでその意味でも頑張ろうと思えますし、直接paizaに掲載されていない求人でも、paizaのランクを書いてみると面接の際の話の種にもなります。
 僕の場合、paizaでBランクを取得しましたが、それを履歴書に書いていると、「paizaの問題実際見てみましたけど、結構難しいですね」と、面接時に言ってくれる会社もありました。未経験で自作のものが無い以上、アピール出来る何かしらの材料は、相手が知っているかどうかは置いておいても、具体的に記述して伝えるとプラスに働くかもしれません。
 
 ここまで長く書いてきましたが、自分の経験を踏まえて、これからプログラミング学習をする方へのアドバイスをこれからまとめてお伝えします。
 
学習する言語について
 正直何でも良いですが、ホームページを作りたい人はHTMLやCSSから勉強することをおすすめしますが、そうでない方はpythonがおすすめです。単語がシンプルで、コード自体もシンプルなためです。
 
学習方法について
1.     Progateでプログラミングの基礎を身につける(1ヶ月)
2.     paizaで学習した言語を使って問題演習をしつつアウトプット(1ヶ月)
たぶん、この2つだけでプログラマーにはなれます。それぞれ1日平均2時間、pythonだけに絞って取り組めば2ヶ月で未経験プログラマーとして最低限必要な知識は身につくはずです。Progateのpythonの講座を全てクリアし、paizaでBランク取得した僕が実際にプログラマーとして就職出来たので、それを一つの基準にしてもらえれば頑張りやすいと思います。
Progateに関しては、アプリ版ではなくパソコン版で、実際にコードを書く間隔を体験しながら学習することをおすすめします。アプリ版の場合選択問題のようになり、かなり難易度が下がります。まずはパソコン版で学習し、スキマ時間にアプリ版で復習するような形が効率的だと思います。
 逆におすすめしない勉強法は、最初から本を買ってそれを参考にすることです。本を読んでもプログラミングの能力は絶対に身につきません。実際にコードを書いて、エラーを出して、そのエラーの意味を知って、何が間違っていて何が正しいのかを一つ一つ身を持って実感していくのが一番の近道です。その流れを体験しつつ進められるのがProgateの一番の良さだと個人的には思います。
 本を使った学習をおすすめしない理由はもう一つあり、仮に本を読みながら実際にコードを書いてみても、本に載っているコードが間違っていたり、自分が正しいと思っているコードでエラーが出た場合、なぜおかしいのか発見するのは勉強し始めだと非常に難しく、時間もかかります。プログラミングの基礎学習をするならProgateの講座で事足りるので、まずはProgateの講座をクリアすることを最低限の目標として取り組むことをおすすめします。(テキストエディタの準備などの環境設定に時間をかけなくて良いという面でも、Progateでの学習をおすすめします)
 
 実際にプログラマーとして働いていて安心したのは、プロジェクトによるかもしれませんが、設計書があり、その設計書通りの処理をすればOKということです。ある意味プラモデルを組み立てるような間隔でコードを書いていけるので、pythonの関数を色々覚えなきゃいけないとか、そういう心配はいらないです。(僕のプロジェクトではネットで関数について調べたりしながらコードを書くことが許されていますが、プロジェクトによってはネットをつないではいけないなどもあるそうです。)
 結局プロジェクトによる部分が大きいのですが、基本となる知識はProgateで学習したことで事足りるなという実感があります。
 また、paizaの問題を解きながら、「こういうことがしたい時はどうするんだろう」とpythonの関数を調べる能力もついたので、「ある課題をクリアするための手段の調べ方」はpaizaの問題演習を通して身につけられそうです。
 
 逆にプログラマーとして働き始めてわかった苦労するポイントは、そのプロジェクトに関する用語と、使用しているツールの使い方を把握することと、設計書などの資料の意味や読み取り方でした。
 採用された際、定例句的に「入社までに勉強しておくべきことはありますか」と質問し、「特に無い」と言われ逆に驚いたのですが、今であればその意味がわかります。プロジェクトごとに使うツールや覚えておくべき用語、設計書の書き方などが異なるため、そこに関しては独学しようも無いからです。
 プログラマーとして働くにあたって、使用する言語について必要な知識を10とすると、それ以外の知識(使用するツール、設計書の読み方、プロジェクトのルール、業務の流れなど)は100くらいかなあと個人的には感じました。
 なので、自分が考えるコードを正しく書くことが出来るようになれば一人前のプログラマーとして働ける、ということではなく、そのプロジェクト独自のルールや環境に慣れる必要はある、ということです。ただ、僕はまだ一つのプロジェクトでしか働いていないためまだわからない部分ではありますが、一つのプロジェクトを経験することで、ある程度どんな流れで仕事をするのか、どんな資料があって、それをどのように読み取るのかなどはかなり学ぶことが出来るので、プロジェクトに対応するために必要な時間は徐々に短くなっていくのではないかと思います。
 
最後に
 長くなりましたが、まとめると
プログラミング言語の基礎はProgateで必要十分
・身につけた知識のチェックと課題解決への試行錯誤はpaizaで練習
プログラマーになるのに必要な知識よりも、なってから必要になる知識のほうが多い
・プログラミング学習にコードを実際に書くことは必須
 
以上です。これからプログラマーを目指す人にとって少しでも参考になれば幸いです。最後まで読んでいただきありがとうございました!
 次回はプログラマーとして就職する時の失敗談、苦労話などを踏まえ、就職活動の際のアドバイスを紹介します。