若いときの私はプログラマーに憧れていましたが、プログラム会社の門を叩くのが不安でした。何故ならば論理的な思考が苦手だったし、中学生程度の数学も理解できないからでした。プログラマーに憧れる気持ちと同時に、プログラマーになるのは無理という気持ちがありました。
そんな私ですが、40歳前からプログラムの学習を始めました。中年になってから、再度プログラマーに憧れを抱くようになったのです。その時は独学で学びましたが、何とかあるネットショップのシステム部に転職することができました。

ネットショップのシステム部では、カーパーツの検索システムを構築しました。その後インターネットで、フリープログラムを公開したこともありました。話が長くなるので身の上話はこれぐらいにしておきますが、そのときの経験から、センスのない人でも、プログラマーになれると悟りました。
ただ私の場合は現場で使える技術を身に付けるのに、2年半もかかりました。しかし当時悟ったことが最初から解っていたら、1年で現場で使える技術は習得できたと思います。当時の経験を記事に盛り込みたいと思います。
センスのない人は戦略的に行動しよう
プログラムの世界にも天才はいます。私は失業時代に職業訓練校で、Word、Excel、Accessを学びました。最後のAccessの時間に、講師は全員にある課題を出しました。課題の内容は忘れてしまいましたが、凄く難しかった記憶があります。
難しい課題でしたが、職業訓練校の卒業生の一人は、1時間ぐらいで課題を提出したそうです。講師曰く、内容も完璧だったそうです。彼は卒業後、プログラマーとして大活躍したそうです。

私は彼のことを見たことはありませんが、ITセンスがある人だったと思います。Accessはプログラムとは違いますが、多分にプログラム的要素の強いソフトです。そんなAccessの課題を短時間で、しかも完璧に仕上げた彼は、紛れもなくセンスのある人だったと思います。
センスのない人は、センスがある人と同じことをしていては駄目です。センスのある人は1を聞いて10を知りますが、センスのない人には絶対に無理です。しかし戦略的に行動すれば、1年でプログラムの世界のスタートラインには立てると思います。
プログラムが難しい理由とワンポイントアドバイス
プログラマーを志す前に、何故プログラムは難しいのかを知りましょう。プログラムの難しさのポイントを知れば、効率的に乗り越えられるからです。
文法が独特

日本語や英語にも文法はありますが、プログラムにも文法はあります。プログラム言語の種類によって、文法は異なります。この文法がくせ者で、文法を覚える段階で挫折する人が後を絶ちません。プログラム言語にもよりますが、「’」が抜けているだけでプログラムが作動しないこともあります。
プログラムの文法には記号が含まれていますが、記号の働きは学校で習った数学の記号とは違うので、初心者は戸惑います。

プログラムの文法の種類は、外国語の文法の種類よりも遙かに少ない。
理屈抜きで使いながら覚えるのが賢明
使いながら覚えたら、やがて腹落ちする。
プログラムの考え方が独特
プログラムの考え方は独特で、学習を開始して間もない頃は、なかなか理解できません。
例1:条件分岐

if ($a > $b)
echo “aはbより大きい”
これはPHPの条件分岐ですが、これぐらいであれば直感で理解できるでしょう。しかし複雑な条件分岐の場合、初心者はどう記述したらいいのか解りません。記述が難しいのは、日常生活では複雑な条件分岐のような考え方をしないからです。

条件分岐を記述するときは、あらゆるパターンを先にメモ書きしたら楽。
メモ書きできたら、後は文法通りに記述するだけです。
例2:配列

$foods = array(‘トンカツ定食’, ‘ラーメン定食’, ‘刺身定食’)
$foods = “トンカツ定食”
左側の$foodsは変数といいますが、変数は値(データ)を入れる箱のようなものです。二番目は「トンカツ定食」という値しかありませんが、一番目の$foodsの値は複数です。これは配列と言います。
配列は慣れたらどうってことはないですが、慣れるまでの間は頭が混乱します。

配列は一つの変数に番号が付いてものだと理解すればいい。
左から$foods[0]$foods[1]$foods[2]のように番号が付きます。
番号を付けることで、違う変数扱いになる。
1日も早く職に就くための戦略マップ
センスのない人もプログラムを学んでいる限り、就職または転職のことが頭にあるでしょう。センスのない人は戦略的に学び、戦略的に仕事を探した方がいいと思います。以下では詳しく解説します。
需要のあるプログラム言語を学ぶ

プログラム言語の需要は、時代によって変わります。昔はCOBOLが人気でしたが、最近はCOBOLの求人はめっきり減りました。反面、スマートフォンの普及などもあり、インターネット系の言語の求人が増えてきました。
そのため今からプログラムを学ぶ人は、インターネット系のシステムでよく使われる、PHP、python、Rubyなどのスクリプト系の言語を学んだ方がいいと思います。また最近はJavaScriptと組み合わせて使うのが主流なので、JavaScriptも学んだ方がいいでしょう。
アプリプログラマーを目指す人は、JAVAもいいと思います。
できたら旬の技術を身に付ける

これは特にセンスのない年輩の人におすすめしたいことですが、できたら旬の技術を身に付けた方が転職には有利です。旬の技術は需要が多いため、技術者が不足していることがあります。そのためセンスのない年輩の人でも、比較的転職しやすいです。
最近の旬の技術はスクレイピングですが、スクレイピングを教えてくれる学校もあるし、スクレイピング関係の解説書も多いです。
システム開発会社だけにこだわらない

これから書くことは30代以上の未経験者を対象にしていますが、転職先はシステム会社だけにこだわらない方がいいです。システム会社は未経験者をじっくりと育てたいため、若年層の応募者を好むからです。会社によっては、25歳以下しか受け付けないケースもあります。
このような背景を考えたら、30歳以上の未経験者は凄く不利です。しかしシステム開発会社以外にも目を向けたら、活路はあります。
社内SEの道もあるし、一部のネットショップでもプログラミングができる人を探しているケースはあります。ハローワークでこれらの職を探すときは、IT系以外の分野にも目を通した方がいいです。時々ですが、事務職カテゴリーで社内SEを募集しているケースがあります。
センスのない人が学ぶための戦略マップ
これからはセンスのない人が、学ぶための戦略マップを解説します。
プライベートレッスンを選ぶ
プログラムを勉強している人は、一部だけ理解できないことが多いです。全部理解できないケースは極めて稀です。仮にあったとしても、本人が真面目に勉強していないからだと思います。
今の時代はインターネットで調べたら、簡単な問題点は直ぐに解決できる時代です。スクリプト言語のPHPには本格的なマニュアルがありますが、マニュアルを読むだけで簡単なシステムは構築できます。

しかしプログラムというのは難しいもので、セオリー通りにいかないことがあります。そんなときは自分で解決策を考えなければいけませんが、センスのある人は簡単に解決することが多いです。反面センスのない人は、三日以上考えても解らないことが多いです。
躓いたときに一番頼りになるのは先生ですが、集団レッスンの場合は周囲の目もあり、気軽に不明点の質問ができないですね。対してプライベートレッスンは周囲の目を気にする必要がないので、好きなときに気楽に質問できます。
Tech Teacher公式サイト
初心者用の解説書と逆引きできる解説書を選ぶ

センスのない人は、初心者用の解説本を購入した方がいいと思います。少しプログラムをかじったことがあるので、中級者用の解説本がいいという人もいるでしょう。それでも私は、初心者用の解説本をおすすめします。
phpはサンプルプログラム見ても構文分かりにくいから解説本が欲しいでござる(´・ω・`)
— やぎ湯@発展途上のMaker (@yagiyums) May 12, 2015
初心者用の解説本はまったくの初心者を対象にしているため、文法の細かい点まで丁寧に解説しています。プログラムを始めたばかりの頃は文法で躓くことが多いので、初心者用の解説本を購入した方が役に立つでしょう。
初心者用の解説本と共に、逆引きできる解説書の購入もおすすめします。プログラムを構築しているときに、一部の関数だけが解らないことはよくあります。そんなときは、逆引きできる解説書があれば便利です。

プログラムの解説本を選ぶときは、本屋で立ち読みするか、Amazonのレビューを参考にするのがおすすめ
プライベートレッスンのおすすめはTech Teacher
センスのない人はプライベートレッスンがおすすめですが、プライベートレッスンは学費が高いのが玉に瑕です。
Tech Teacherは計画的に利用すれば、学費の捻出は比較的楽です。
Tech Teacherの特徴を詳しく見ていきますね。
オーダーメードカリキュラム
どんな分野でもそうですが、人によって学習速度は異なります。とりわけプログラムの場合は、学習速度の差が非常に大きいです。
学習速度の遅さに落胆し、途中で勉強を投げ出す人もいます。
学習速度が遅いと投げ出したくなるのは自然な感情だと思いますが、Tech Teacherはオーダーメードカリキュラムなので挫折しにくいです。もちろん不明点だけ、気楽に質問することもできます。

オーダーメードカリキュラムの良いところは、最初に生徒のレベルや性格を見極め、最適なカリキュラムを作成してくれるところです。Tech Teacherは専任の教師がマンツーマン指導を行ってくれるので、学習したことが消化しやすいです。
プログラム専門学校の中には集団で授業を行っているところがありますが、授業内容が消化できない生徒は一定数いるそうです。一部の生徒が学習内容を消化できない理由は、講師が生徒のレベルに合わせて指導できないからです。しかしオーダーメードカリキュラムであれば、生徒に寄り添ったレッスンが可能です。

後払いシステムを採用している

プログラム学校に通いたくて資料に目を通したけど、想像していたよりも学費が高かった・・・このような思いを抱く人は多いと思いますが、生徒の中にはローンを組んで学費を払う人もいます。しかしこの不景気の時代に、ローンを組むのは危険が伴います。
最悪の場合はローン地獄という、負のスパイラルに陥ります。
これだけは絶対に避けたいものですが、Tech Teacherは後払いなので非常に気楽です。入学金は最初に支払う必要がありますが、レッスン代は完全に後払いです。これならばお金に余裕があるときだけ受講できるので、継続しやすいですね。
一日も早く一人前になるための戦略マップ
Tech Teacherで学べばプログラムの基礎は身に付きます。ただそれだけでは現場では通用しないので、自宅でも勉強は必要です。自宅で勉強をするときは、以下のことを実行してほしいです。
小さなプログラムを数多くつくる
「読書百遍意自ずから通ず」という言葉があります。初めは難しいと思っていた本でも、繰り返し読むことで、理解できるようになるという意味です。
プログラムもこれと同じで、何回もプログラムをつくることで、自然と理解できるようになります。そのためレッスン以外の時間帯は、多くのプログラムを作成してほしいと思います。

その際には注意点があります。
自分のレベルに合ったプログラムを作成することが大切です。大規模なシステムは、練習には向いていません。
条件分岐を習ったのであれば、条件分岐を使った小さなプログラムを数多く作りましょう。条件分岐を活用すれば、簡単なゲームも構築できます。データベース言語のSQLを学んだのであれば、データベースを活用し、簡単なログインシステムを構築しましょう。
大切なことは数をこなすことです。数をこなせばプログラムのコツは掴めます。
ライブラリやフレームワークの勉強をする
もしかしてレッスンでも習うかもしれませんが、自宅ではライブラリやフレームワークの使い方も学んでください。今のシステム開発はスピードが要求されるので、現場ではライブラリやフレームワークを使うことが多いです。
ライブラリは特定のプログラムの土台のようなものですが、ライブラリを使えばコード量はかなり少なくなります。フレームワークは開発効率をよくするプラットフォームのようなものですが、最近のプログラム現場では、ライブラリだけではなく、フレームワークを使うことが当たり前になっています。

ライブラリの大半は無料でダウンロードできるし、フレームワークも無料で入手できるものが多いです。最近私はあるシステムのマニュアルを制作しましたが、そのシステムはLaravelというフレームワークが使われていました。
インターネットで検索すれば、ライブラリとフレームワークの使い方を解説している解説記事は見つかります。解説記事はいろいろあると思いますが、コードも掲載している記事がいいと思います。
まとめ

センスのない人が1年でプログラマーになる戦略マップを解説しましたが、解説した戦略マップは楽して実行できることではありません。しかし極めて合理的な方法なので、実践すれば必ずや結果は付いてくると思います。
プログラムの現場ではつらいこともあるかもしれませんが、一つのプロジェクトが完成したときは凄く嬉しいです。開放感と同時に、やり遂げた充実感を味わうことができます。そんな感動をみんなに味わってほしいと思います。
まずは本記事の内容を実践し、プログラムの世界のスタートラインに立ちましょう。
