全くの無知から完全未経験でITエンジニアになった僕のプログラミング学習方法

スポンサーリンク
キャリア

こんにちは、ヨシキです。

僕は2017年ごろからプログラミングを独学で勉強し始め、挫折し、オンラインスクールと職業訓練校を経て2018年の4月からエンジニアとしてキャリアをスタートさせたまだまだひよっこです。

その過程でどんなことを学習してきて、どう思ってどんな成長をしてきたか、今から学習を始めるあなたの参考になれば幸いです。
[box class=”green_box” title=”こんな人に向けて書いてます”]

  • プログラミングってゆう用語は知ってるけど、どんなことをするか知らない人
  • これからオンラインプログラミングスクールを受講しようと思ってる人
  • これからプログラミングを学習しようと考えている人

[/box]

オンラインプログラミングスクールに通う前のプログラミングスキル

全般的なIT用語は全くもって無知だった

元々パソコン自体得意ではなかったので用語を全くわかりませんでしたし、まずWeb系のエンジニアの初歩段階であるHTMLやCSSといった技術、用語自体知りませんでした。笑

完全なる無知状態です。

オンラインプログラミングスクールで学習したこと

  • HTML5&CSS3
  • JavaScript
  • JQuery
  • PHP
  • MySQL

Web系エンジニアなら必須のスキルばかりですね。

とくにきっかけが何かログイン機能をつけたWebサービスを作りたくてPHPを集中的に学びたくてこのコースにしました。

ちなみに僕が選んだオンラインプログラミングスクールはCodeCampです。今回はオンラインプログラミングスクールのレビューでも何でもないのでスクール内容は割愛します。詳細は以下の公式サイトをご覧になってください。

現役エンジニアのオンライン家庭教師【CodeCamp】

オンラインプログラミングスクールに通った後のプログラミングスキル

仕事につながったスキル

  • HTML&CSS

結局数十万かけて自信を持って習得したスキルがHTMLとCSSだけとなりました。

当時スタートアップ企業の立ち上げに関わっていた僕はHTMLとCSSだけ習得し、すぐにWeb制作の事業を立ち上げさせてもらったので仕事につながったので結果オーライでした。

全く身につかなかったスキル

  • Java Script
  • JQuery
  • PHP
  • MySQL

HTMLとCSS以外は全く身につかなかったと言っても過言ありません。Java Scriptの講座になった瞬間もう頭がついていかなくなりました。

変数?関数?メソッド?プロパティ?は?は?は?って感じです。そのままJava Scriptの講座を修了し、次にPHP。

変数ってなんだっけ?POST?GET?リクエスト?レスポンス?へ?って感じですね。

スキルとしては全く定着しませんでした。そしてそのまま何が分からないか分からない状態が続き、何を勉強したら良いかも分からなくなってそのまま挫折して辞めました。笑

オンラインプログラミングスクールで上達しなかった理由

あ、オンラインスクールで上達しない。とか批判っぽいこと言ってますが、あくまでオンラインスクールに通って自分が上達しなかったという主観的なものなので批判ではないですよ

理由1 何を質問していいか分からない

自分が今どんなコードを書いていてどうやったら自分の目指す機能を実装できるか分からない場合は何を質問していいか分かるはずありませんよね。

分かるようになればgoogle先生に聞けば解決策を教えてくれますが、勉強し始めはそれすら分からないので結局身につかないんですよね。

僕の担当してくれた講師は非常に丁寧に教えてくれてましたが、カリキュラムを進めていくうちに分からないことがどんどん増えてきて頭がぐちゃぐちゃになってました。

理由2 やった気になってた

これも大きな要因でした。言語の構文を1つでも覚えたらその時は覚えていて、結局覚えた気になってただけで後日すぐ忘れてるんですよね。

一回書けただけでできた気になってたんです。そのルーティンで結局身につかなかったんだと思います。

理由3 明確に作りたいものが無かった

ログイン機能をつけたサイトを構築したいという目的しかなくて、結局どんなサービスを作りたいか明確に考えてなかったからかもしれません。

でも実際に勉強し始めなんて何が作れるかなんか検討もつきませんよね。これから学習をされる予定のある方でもうこんなモノがつくりたい!って明確に持っている人は少ないんじゃないんでしょうか?

逆を言えば、本気で作りたいものがもうすでにある人には苦難を乗り越えさえすれば上達は早いかもしれません。

[box class=”yellow_box” title=”オンラインスクールを受講しての学び”]

プログラミングを学び始める動機は人それぞれですが、「学校やスクールに通ったからってプログラミングが上達する訳ではない。」ということです。スキルを伸ばしていくのは学校やスクールのカリキュラムではなくて自分自身の興味や好奇心によることが大きいです。

[/box]

僕が就職するまでにプログラミングを上達させてきた4つの方法

就職してからはJavaをメインに仕事していますが、自宅での学習は全てPythonで行っています。Pythonの中でもWeb領域を主に勉強しているのでDjangoといったフレームワークを使って小さなアプリを日々開発しています。

肝心の上達方法ですが、あくまで、僕が個人的に試行錯誤してきた結果の上達方法なので個人差があるので、参考程度に読んでください。

ステップ1、とにかくゴリゴリ書く

学習するには兎にも角にも写経が一番と言うことはプログラミング上達方法のなかでよく挙げられます。

とにかく分からなくてもいいからコードを書き写すことによって自然に身につけていける手っ取り早い方法です。実際ぼくもPythonなんかさっぱり分かりませんでしたが、書籍のコードを写したり、

PyQ、Progateというオンラインの学習サービス使ってひたすら書いていくうちに段々とコードが書けるようになりました。

精神論ですが、分からなくも諦めずに書き続けるメンタルが何よりも重要です。

ステップ2、自分で簡単なアプリを開発する

難易度にもよりますが、この方法はプログラム理解するのにうってつけの方法です、自分の作りたいもの、実現したいことを実際に頭で考え作ることで、プログラミングを体系的に理解することができます。

え?早速アプリの開発するの?と思うかもしれませんが、まだ学習を始めたばかりの人が日頃当たり前のように使っているアプリを開発することはそう簡単ではありません。

僕が今回学習していく中で作ったモノを簡単に挙げます。

  • じゃんけんアプリ
  • 給料計算アプリ
  • ブログアプリ
  • おみくじアプリ

給料計算アプリなんかはターミナルから入力した結果をただ出力する数行のクソアプリですがこれでもれっきとした機能を持つアプリケーションなんです。

こういった小さなことをコツコツこなしていくことで、どんどん難しいことができるようになります。簡単すぎてつまらなかもしれませんが、自分のレベルにあったアプリを作っていきましょう。

ステップ3、プログラムの組み立て方を学ぶ

なんだかんだでこの「プログラムの組み立て方を学ぶ」ということが一番の根本かもしれません。僕もまだまだひよっこプログラマなのでこの「組み立て」という部分で困ることが多々あります。

プログラムを組み立てることさえできれば、テクニック面はGoogleで調べれば腐るほど出てくるので組み立てる力を養うことが大切です。

では、学習し始めた段階でどうプログラムを組み立てていったかですが、大枠から細かく考える方法で学習しました。

例えばですが、じゃんけんアプリを開発したいとします。まずはじめにざっくりとこんなものを作ろうとイメージすることから始めます。

[box class=”glay_box” title=”じゃんけんアプリのざっくりとしたイメージ”]

  • グー、チョキ、パーのいずれかを選択する
  • 相手側はランダムでグー、チョキ、パーを選択する
  • 勝ち負けの判定をする
  • アプリはターミナル(コマンドプロンプト)で起動させる

[/box]

上記のように本当にざっくりとこんなもんだろうくらいでイメージします。次にこのざっくりイメージを実際にプログラムに書き起こすレベルまでロジックを日本語に置き換えます。

[box class=”glay_box” title=”プログラムを日本語に置き換える(Python)”]

  • input関数で入力された値を変数choiceに代入する。(0ならグー、1ならチョキ、2ならパー)
  • random関数で0から2の数値をランダムで変数enemyに返す
  • if文で変数choiceの数値と変数enemyの数値が同じであれば「あいこ」を出力する。
  • if文で勝ちの条件を定義する
  • 勝ちの条件に一致すれば「あなたの勝ちです」を出力する
  • if文で負ける条件を定義する
  • 負ける条件に一致すれば「あなたの負けです」を出力する

[/box]

こんな感じでプログラムの構文を日本語に置き換える作業を一旦してからコーディングに入ると何を書いたら良いか明確なので迷いにくくなります。

実際にコードに表すとこんな感じになります。少々雑ですが、参考のためご了承ください。

import random

# input関数で入力された値を変数choiceに代入する。(0ならグー、1ならチョキ、2ならパー)
choice = int(input("0:グー 1:チョキ 2:パー"))
# random関数で0から2の数値をランダムで変数enemyに返す
enemy = random.randint(0,2)

# if文で変数choiceの数値と変数enemyの数値が同じであれば「あいこ」を出力する。
if choice == enemy:
    print("あいこ")
else:
    # if文で勝ちの条件を定義する
    if choice == 0 and enemy == 1 or choice == 1 and enemy == 2 or choice == 2 and enemy == 0:
        # 勝ちの条件に一致すれば「あなたの勝ちです」を出力する
        print("あなたの勝ち")
    # if文で負ける条件を定義する
    elif choice == 0 and enemy == 2 or choice == 1 and enemy == 0 or choice == 2 and enemy == 1:
        # 負ける条件に一致すれば「あなたの負けです」を出力する
        print("あなたの負け")

このようにどんなプログラムに関してどういった処理を実装していくかを日本語で論理的に考えるとより理解が深まり上達のスピードも早くなります。

まとめ

オンラインスクールだけではスキルは上達しない

繰り返しになりますが、オンラインスクールなどのカリキュラムだけをこなしていてもプログラミングは上達しません。

自分自身で様々な場所にアンテナを張って興味や好奇心を持って様々なチュートリアルや技術に挑戦していくことが大切です。

とにかくコードを書く

分からなくても良いからあまり悩みすぎずにコードをどんどん写経していきましょう。

簡単なアプリを開発する

たった数行のコードでもアプリはアプリです。小さいことからでもどんどん挑戦しましょう。

プログラムの組み立て方を学習しよう

言語独自のテクニックは調べればいくらでも出てきますが、残念ながらプログラムの組み立て方はあまり紹介されていません。

プログラムを日本語に置き換えて論理的に組み立てる能力を身に着ける努力をしましょう

長々と読んでいただきありがとうございます。完全未経験からエンジニアになることは非常に体力がいることですが、何が何でもエンジニアになりたい!という強い意思があればそんなに辛くもしんどくもないと思います。

これからエンジニアを目指す人にとって今回僕の書いたことがあたなの参考になれば嬉しいです。

 

コメント

タイトルとURLをコピーしました