私は2021年現在、SE兼プログラマーとして就職して3年目になります。
実は就職する2年ほど前まではプログラミングの「プ」すら知りませんでした。
で、就職後は割と早く現場投入されましたが何とかやっていくことができました。
では、その2年間はどのようにしてプログラミングを学んできたのか……。
そして、なぜプログラミングの「プ」すら知らなかったのにプログラマーを目指したのかをお話ししたいと思います。
プログラマーを目指したきっかけ
プログラマーを目指す人の多くの理由はこんな感じだと思います。
- ゲームを作りたい!
- Webエンジニアになりたい!
- ○○って人に憧れて……
- プログラマーって収入が良いらしいから……。
などなど……。
まぁ、少なくとも収入面は気にしたことはあります。
ですが、実際プログラマーを目指したのは自己紹介にも書いてありますが、金曜ロードショーで「スターウォーズ」がやってて、おなじみのC-3POとR2-D2が出ていたと。
で、「AIとかが進化していくとこんな感じの自分の意志で動けるロボットとかできるのかなぁ......」と考えたわけです。
そこで何を血迷ったのか「お、これは自分でも作りたい!」と思いどうするか考えた結果
よし!プログラマーになろう!
と決めたわけです。
[st-card-ex url="https://www.dice-programming-etc.com/dice-introduction/" target="_blank" rel="nofollow" label="" name="" bgcolor="" color="" readmore=""]
本当にこれが理由なのです。
よし!プログラマーになろう!で目指したわけですから、前提としてプログラミングの知識は全く無いのは明白。
ここから私のプログラミングについて勉強が始まります。
専門学校へ
とは言っても私は、自主勉強が大の苦手で長続きしないことはわかっていました。
長続きさせるために取った手段が
専門学校への進学
です。
そうです。半強制的に勉強をしなければならない環境に自ら身を置いたというわけです。
ただ、いくら専門学校へ進学し学んで卒業したと言っても専門学校で学んだ知識・技術程度では不足する部分がかなりあります。
どちらにせよ自主的な勉強が必要になります。
先ほども書きましたが、私は自主勉強が大の苦手です。
じゃあどうしたのか?それは……
「あえて書籍を入門編~応用編まで先に購入し、自らの逃げ道を断つ」
と言う手段を取りました。
専門学生はお金があるわけではありません。
そして、プログラミング学習に使用する書籍は高いものが多いです。
買ってしまえば「とりあえず、できるようになるまで使いつぶさないともったいない!」という考えになります。
結果、自主的に勉強せざるを得ない環境の完成と言うわけです。
自主的な勉強の進め方
自主的な勉強については一切専門学校とは関係ないこともあり、完全に独学で進めました。
さて、肝心の「勉強の進め方」ですが書籍については
「最初は1周するだけ」
です。
練習問題がある場合は手を動かしながらやり方を覚え、パソコンが無い時は手書きでソースコードを書き実行結果を予測してパソコンが使える時に実際に確認し答え合わせをする。
といった感じです。
「なんで手書き?」
と思った方もいるかもしれません。
その辺は後ほど解説していきます。
とりあえず書籍を一通り一周したら次のステップへ行きます。
書籍から吸収した知識と技術をもとに「何も見ずに1つのプログラムを完成させる」ということに挑戦します。
もちろん、あくまでも「挑戦」なので「無理だ」と思ったら調べても構いません。
この段階では「自分だけでできるところまでやってみる」ことが重要です。
自分でできるところまでやってもうまくプログラムが動作しないときは、書籍やGoogleに頼って答えを探しましょう。
答えを見つけたらその答えをコピペしても構いません。
重要なのはここで答えを見つけて「やったー。動いた!」で終わらないことです。
ここで考えるべきは「自分のプログラムは何がダメで動かなかったのか」です。
動くプログラムと動かなかったプログラムを比較して違いを理解しましょう。
また、エラーが出ていた場合はそのエラーについても調べておくようにしましょう。
後々同じエラーにぶつかった時に役に立ちます。
あとはただひたすらに新しいことに興味を持ち続け、「情報収集→インプット→アウトプット」を繰り返していくだけです。
もちろん、ただアウトプットするのではなく誰かが見ている場所にアウトプットすることが重要です。
そう、TwitterやFacebookといったSNSを上手く活用しましょう。
SNSの世界には野良のプロがその辺にいます。
ハッシュタグを上手く使うことで、そういった人たちが自分が作ったプログラムを評価し、時にはもっと良くする方法を教えてくれたりもします。
質問する場が欲しい場合はオンラインのスクールを受講するのも一つの手です。
ただ、この時の私は学生なのでスクールは使用しませんでした。
なぜ手書きでプログラムを書くの?
理由としては私なりにこんな考えがあったからです。
- 手書きでプログラムを書くことで打ち込むよりも覚えが早い
- フローチャートの概念が同時に身につく
- プログラムが実行される流れを考えながら覚えられる
- 補完機能に頼らないでプログラムを書くため、パソコンでエディタを使った時にかなり楽になる
手書きでプログラムを書くことで打ち込むよりも覚えが早い
これは自論ですが文字を書く方がパソコンで打ち込むよりも覚えが早い気がします。
理由は単純で、手書きだと手が感覚を覚えるからです。
キーボードを打つだけでは「キーの配置」は感覚的に覚えますが、プログラムの書き方には直結しません。
(将来的にタッチタイピングを身につけるには有効ですが。)
プログラミングは「言語」とは言っても、人間向けの言語ではありません。
なので英語やフランス語といった外国語と違い、「言葉に出して覚える」ことが難しいです。
覚える感覚としては数学の計算式を覚えるようなものです。
数学は書いて計算することの方が多いと思います。
そして、計算を繰り返していくうちに計算方法を覚え暗算するようになります。
プログラミングも同じです。
身についてくると何も見なくてもプログラミングができるようになります。
考え方としては「プログラミング≒数学」という考えです。
打ち込んで覚えることも大切ですが、手書きで直接感覚を覚えるというのもありだと思います。
フローチャートの概念が同時に身につく
手書きでプログラムを書くと嫌でもプログラムの流れをイメージして書かなければなりません。
「プログラムの流れ」です。
フローチャートは別名「流れ図」とも言います。
フローチャートは処理の流れを視覚的に分かるように図形を用いて書かれたものになります。
ということは、図形を用いてプログラムの流れを書いてから実際にプログラムを書いてみれば……。
そうです。プログラムの流れがどんどん理解できるようになるのです!
プログラムが実行される流れを考えながら覚えられる
これは一つ前の項目で書いた内容の一部になります。
処理の流れを理解する能力が向上すると思います。
補完機能に頼らないでプログラムを書くため、
パソコンでエディタを使った時にかなり楽になる
これはかなり大きなポイントです。
実際にエディタでプログラミングを行う時はこんな感じの補完機能は重宝しますよね。
ただ、仕事をする現場によっては補完機能がほぼ機能していないエディタでプログラミングを行うなんてこともあります。
そんな時に補完機能に頼らず手書きで勉強していた経験が役に立ちます。
というだけです。
使えるものは使いましょう。
遊びながら勉強する
これは一番重要ですね。
楽しくなくなるのが一番勉強が捗らなくなる原因なので。
何をするかと言うと、当サイトでもいくつが記事を書いていますがMinecraftのプラグイン開発です。
ドキュメントは基本的に英語ですが、それがまた英語のドキュメントを読むことに慣れるための練習につながるので「英語」と言うポイントに抵抗感があると思いますが挑戦してみましょう。
目標がない場合は?
興味を持ったことにはどんどん挑戦しましょう。
色々とやっているうちに自然と
「あ、これ向いているかも」
「これをもっとできるようになりたい」
と思えるものが見つかります。
そう思えるものが見つかるまではとことんまでいろいろなものに手を出しまくって大丈夫です。
中途半端になってしまっても構いません。
目標がない状態で勉強を進めても結果につながらないので、まず決めるべきは目標です。
目標を決めてから、その目標へ向け勉強をしていきましょう。
勉強を進める流れのまとめ
- 目標を決める
- 目標へ向け勉強をする
この2点で済めばいいですが、そもそも目標が決まらない人は以下の流れでやって見ましょう。
- 目標が決まるまで色々なことに挑戦しまくる
- やりがいを感じたり、もっとできるようになりたいと思ったものをベースに目標を決める
- 目標へ向け勉強をする
もし勉強が思うように進まなくて挫折しそうになったら思い切ってTwitterなどのSNSで質問してみましょう。
そういうことに答えてくれる人もいます。
何なら私でも構いません。
「どう勉強を進めれば良いか分からない」
と思うことは私でもありました。
それでも片っ端から調べて自分で結論を出し、妥協するところは妥協して勉強を進めてきました。
完璧を求めず妥協をしながら無理のない程度に勉強を進めることが大切です。
まとめ
「あれを覚えなきゃ。これも。これも……。」
とやっていると、いつか限界が来てしまいます。
正直プログラマーは「カンニングOK」の職業です。
セキュリティ上の都合で社外のネットワークへ接続できない場合は例外ですが、基本的にGoogleを使って調べながら製品を開発しています。
「全く覚えなくても良い」
と言うわけではありませんが、
「カンニングしても良いんだよ」
ということだけはお忘れなく。
そして重要なのはカンニングして答えを得た時
答えを得たことに満足するか、その答えにすら疑問を持ち自分のものとすべく得た答えをもとに自分の技術として確立し吸収するか。
です。
答えを得ただけで満足しない人は今後実力が伸びていく人だと思います。
あなたの「なぜ?」を大切に勉強を進めてください。