プログラミング学習を開始して4ヶ月経ったので振り返りと今後の展望
非IT系サラリーマン(30代・高卒)が、思いつきでプログラミング学習を開始して4ヶ月が経過しました。
僕の受けているコースの期間は半年なので、ちょうど2/3が終わったことになります。
振り返りながら、現時点での感想を書いてみます。
結論としては、「4ヶ月程度ではなんもわからん。引き続き勉強する」という、平々凡々な感想になります。
最初の2ヶ月:プログラミングだいたい理解した
最初の2ヶ月で、HTML・CSS・Rubyをざっと学び、Ruby on Railsでいくつかのアプリを作って学習を進めました。
だいたい平日と土曜日に2時間半、日曜日に8時間くらい勉強するペースで、週に23時間くらいの学習時間でしょうか。
内容としては
MVCアーキテクチャにおいて、Rubyがどのようにモデルを操作(CRUD)し、それをユーザに表示する(View)ためにERBを使用していること。それぞれのViewを呼び出すためにルーティングを設定し、コントローラにアクションを割り当てること。
そういった「Railsアプリはだいたいこんな感じで動く」という概念を掴みました。
普段業務で使っているアプリが、だいたいどんなふうに動いているのかイメージできるようになってきて、まさに「プログラミングだいたい理解した」状態です。
次の2ヶ月:これでいいのか
さて、最初の2ヶ月+1週間程度で、いわゆる「必修課題」的なカリキュラムはだいたい終わらせてしまいました。
ちょうどこの記事を書いた時期ですね↓
ここまでで、Railsを使った基本的なアプリの構造を掴んで、自分でコードを書いたり、テストを書いたり、そうしたければ自分で機能をいじることもできるようになりました。
ですが、やっぱりこれだけでは不安です。
不安の正体
例えば僕が役者で、バスケットボールを題材にした映画に出るとします。選手役だとしましょう。
決められた試合運びに沿ってボールを奪い、奪われ、パスを回し、シュートを打ち、外したら撮り直します。もしシュートが外れるシナリオならば、撮影は続行かもしれません。
さて、無事に一試合分のシーンを撮り終えたとして、僕は実際のバスケットボールの試合に出て戦えるでしょうか。
実際のところ無理でしょう。普通に。
やれ「レイアップシュート」やら「トラベリング」「ダブルドリブル」を覚えただけの、ただの素人です。
あと「左手は添えるだけ」くらいは知っているかもしれませんが。
ということで、「あくまで再現シナリオはこなしたが、実践経験はいまだゼロ」という状況が不安の正体だと感じます。
選択肢は1つ
では、この状況から好転させるにはどうしたらいいでしょうか。
次の方針としては、突き詰めるとシンプルです。
「次の1歩を踏み出す」か「終わり」のどちらかです。
次の1歩を踏み出すというのは、バスケの例で言えば「筋トレをする」「走り込みをする」「1on1を何度かやってみる」「3on3もできればやってみる」というステップです。
実際に僕が選んだのは、「もうちょい自分で勉強してみる」「用意されたシナリオではなく、自分で作りたいと思ったものを作れるか、やってみる」という方法でした。
で、実際に作ってみたのがこれですね。
Rails はViewを使ってフロントエンドも作ることができます。
ですが実際にはRailsでバックエンドの処理のみを担当して、フロントエンドではReactやその派生系の技術が使われることが多い
……と聞いたので、Railsだけで完結しないアプリを作ってみたいと思ったのが発端です。
ここでは、Reactのアプリを自分で考えながら実装してみました。
さらに知識を入れていく
そして上記の記事から2週間ほど経過して、今取り組んでいるのが「オブジェクト指向プログラミング」についての知識補完です。
(卒業に向けてオリジナルアプリを作る予定なのですが、まだ取り掛からない…)
オブジェクト指向設計実践ガイドという書籍を読みながら、実際にコードを書いたりしながら、「変更がかんたんなコードを書いていく」ことを勉強している感じです。
知識・理想ばかり詰め込んでも仕方ない、けど
初学者(僕です)が注意すべきことは、「知識ばっかり詰め込んで何も作らない」ことは、おそらく遠回りであろう、ということです。
つまり、完璧に知識がつくまで何もしない というスタンスはあまり奨励されません。
実際に手を動かし、失敗を経験することで、いろいろ手っ取り早く学べると思います。
そうは言っても、「だいたいの知識があって失敗する」のと、「全く知識なく失敗する」のでは、そこから得られるものが違います。
ほどよい知識がないと失敗からも学べない
例えば大阪駅から広島まで行くならば、まず「北上」して新大阪に出るのが正解のひとつでしょう。広島は「西」にあるにもかかわらず、です。
(横浜→新横浜→新大阪 でもだいたい同じような例が成立します)
そこで「広島どこかわからん」状態で適当に進んで失敗するのと、「広島は西にあるから、まず西へ行くぜ!」と言ってJR神戸線とかに飛び乗って失敗するのでは、その後のフィードバックの解像度が変わってくるという話です。
ということで、「完璧に間違えないための知識」というよりは、「実際にチャレンジしたときに、何を失敗したのかを最低限認識できる程度の知識」を持っておくと、実地での成長が速いんじゃないかなー。と思った次第です。
次の2ヶ月:これから
今月中には次の自作アプリを書き始める
ということで、今はもりもり知識を詰め込んでいるところですが、どこかで「ガリ勉」には見切りをつけて、「好き勝手に作る」というアウトプット重視の学習にシフトする予定です。
何つくろう…?
オリジナルアプリは「技術力の誇示」ではなく、「課題の発見と対応、そのための手段の模索」といったプロセスの結晶であるべきと思っています。
思っているんですが、何つくろう…?
というのが最近の悩みです。アイデアの種はあるので、自由にもりもり育ててみたいと思います。
アウトプット量を保つ
なんだかんだ、インプットの最大の動機はアウトプットです。
知識を墓に持っていくために勉強しているのではありません。
自分が理解できているかどうかを確認するためには、「説明してみる」ことが有効です。
つまり、記事に書こうとしてうまく言葉にならないところがあったら、そこは自分があまり理解できていないところです。
学習効果の最大化のためには、アウトプットは必須です。
以前はインプット8:アウトプット2ぐらいだったのですが、最近ではインプット4:アウトプット6くらいの意識になってきています。
結局コーディングもアウトプットですし。自分の脳の外に出たものだけが価値を持つのです。
ってことで、引き続きこのnoteでアウトプットを続けます。
できれば、半年で30記事書いたぜ!みたいに、わかりやすい記録にしたいなーと思っています。引き続きお付き合いいただけますと幸いです。
今日はここまで。
最後までお読みいただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?