恵まれないプログラミング学習環境が自分を幸せにさせた話
私自身、現時点のプログラミング歴が8年以上であり、今年21歳となるものである。
プログラミングを始めた当時の2010年頃はプログラミングなるものに力を入れている若者が極小数だったのではないかと今でも大いに感じる。
そもそも現在のように恵まれたプログラミングの学習環境という概念とはかけ離れており、当時の恵まれた学習環境というのは、「会社に属し研修を受ける」若しくは「多くの良書を所持し学習する」しか無かったのではないか。
それは、現在のようなProgateやドットインストールといったプログラミング学習環境が存在していなかったからだ。
この記事では、私がプログラミングを始めたきっかけは割愛し、いったいどのようにこれまでプログラミングを学習したのかを話していきたい。
結論から言えばこれまで、
・書籍は1冊
・外部学習サービス(オンライン学習やスクール等)はまったくと言っていいほど利用していない
・全てググって解決していた
といった形でしか学習していない。
要するにプログラミングの全てを独学してきたということである。
そして上記の書籍1冊というのは、中学1年の頃に初めてプログラミングを学習するに辺り、両親に購入してもらった分厚いVisual Basicという言語の逆引き組み込み関数(基本構文を省いた処理一覧)辞典だ。
Visual Basicは当時無料版であったVisual Studioを用いて開発を行った。
GUIで画面のパーツをドラック&ドロップし、配置。
そして、そのパーツにコードを埋め込んだり、他パーツと連携したりとある程度はGUIを利用し、容易に開発を行えた記憶がある。
その時点で既に私はプログラミングにかなり興味を持ち、好きになる前のフェーズであった。
また、プログラミングにはまり、それまで毎日していたゲームや遊びをパタリとやめたのもこの時期からだ。
それ以降今に至るまで、ゲームはほぼ一切と言っていいほどしていない。
Visual Basicを始めた数ヶ月後に入門当初の分厚い書籍には載っていない処理を施したい事象が現れた。
もちろん中学1年であったからお金も無いため、新たな書籍を買えなかった。
ここで出会ったのがGoogle先生である。
ゲームをパタリと辞める以前までは、ゲームの攻略方法等を調べていたため、何となくであるが調べ方は把握していた。
数ヶ月もすれば、分からないことがあれば、全てGoogle検索をしていた。(当然当時の技量からして、解決できたものは少なかったが)
ある時、他の言語の存在を知り、自身でその言語の開発環境を整えることに挑戦した。(言語はJava)
しかし上手くいかなかった。
実行環境が無ければ、プログラミングはプログラミングで無いと感じた。
その後、数ヶ月は当時有料であったlivedoorブログの無料版を始め、自身のVisual Basicでやった事をソースコード単位で記事にした。
当然だがアクセスもほぼ無く、すぐに挫折した。
そして、次は他の言語(C言語)に挑戦した。
既に整っていた開発環境(Visual Studioの無料版)で開発出来る事が決め手であった。
C言語は「GUIを活用したプログラミング」といった私自身の当たり前を覆した。
またまたプログラミングにハマったのである。
その後は、プログラミングの知識を記事としてアウトプットするブログを始めては挫折してやめてを繰り返した。
そして、中学3年当時の自分を大きく動かした出来事があった。
それはWordPressであった。
そこで私は、「それまで開発していたプログラムを多くの人に知ってもらうにはWebが不可欠だが、Webプログラミングを行えば開発したものをそのまま見て知ってもらえる」と気づいた。
そして同時にレンタルサーバーというのを知った。(制限ありの無料版を利用)
新しく触るレンタルサーバー。
そしてWordPress。
極めつけはプログラミングしたものをそのまま見てもらえる。
何もかもが新鮮であった。
レンタルサーバーやWordPressの慣れない操作は2ヶ月程続いたが、使い方を覚えた私は途端にテーマ(テンプレート)を弄って自分好みにしたかった。
HTMLやCSSといったものは、それまで扱った事の無い部類であったためPHPがとても親しみ深かった。
もちろん数週間してHTMLやCSSも触り始め、テーマのカスタマイズ記事をどんどん書いていた。
高校2年になるとプラグインを開発したくなり、勉強を始めた。
去年の大学2回生までは加えてデータベースやJavaScript(主にjQuery)、Pythonを学習した。(その過程で目移りし、C言語を入門し直してコンパイラ開発も行ったが。)
日常が好きなこと(プログラミング)で幸せであった。
去年より日課でパソコンを開けない暇な時間(睡眠前やご飯中等)にQiitaを読むようになり、知識を深め続けた。
そして理解の前提で利用していたサンプルコード探しのみの学習方法から、加えてここ1年で大きく変わった。
それは、設計による「効率の良い綺麗なコード」を書くためのものであった。
もちろんそれまでも、Qiitaで設計に関する記事を多く読んでいたが、それとは違う。
WordPressやGoogleが無料で公開しているオープンソースを読むようになったからだ。
WordPressで言えば、テーマのソースコードを読むことは多かったものの、それ以上に大規模なチームで開発されたソースコードを見ていなかった私が、WordPressの本体コードを日課で読むようになったのである。
そしてGoogleが公開しているオープンソースでいえば、高校生の頃から行っていた海外サイト(特にフォーラム)の翻訳だけでは解決しない事例が現れたのである。
読むきっかけがあり読むようになってからは、かなりのスキルアップを感じている。
以前は半年前に書いたコードが汚いと思うのは当たり前のことであったが、1週間弱単位で大きくそれを感じる事象を何度も味わっている。
記事やフォーラムで文字とソースコードがセットが前提として解決するのではなく、ソースコードのみを読み解決する。
そのフェーズが自分を大きく成長させている。
最近では「オープンソースは神だ」と感じるようになってきている。
もちろんの事であるが、これまでプログラミングは興味を持ち、そして好きになり、8年以上継続して行っている。
趣味でもある。
努力をしたつもりは一切ない。
好きなことしかしていないからだ。
プログラミングは一日10時間以上は、必ずインプット、アウトプットを行っている。
ゲーム好きな人が一日に10時間以上ゲームに没頭している姿と何ら変わりもなく同様で、何も不思議ではないと感じている。
それは、自分はプログラミングが大好きであるからだ。
ここ8年以上で培ったプログラミングの「好き」を上回る「好き」がこの先の人生では無いのではないかと感じているくらいだ。
本題とは少々脱線したが、ここまでに述べた「プログラミングを始めた当初の、"今となっては恵まれないと感じられるプログラミング学習環境"」があった事により、今日の幸せな自分が居るのでは無いかと大いに感じている。
世の中のプログラミングの学習環境が恵まれる前に、自身でプログラミングに対する課題や問題点を解決する能力を身につけていた事がそうさせたのではないかと感じている。
これまでほぼ全て独学であったため、学習効率が非常に悪く学習スピードは相当遅かったと今でも感じているが、それ以上のリターンを今私は大いに感じている。