プログラム初心者の確実な学習方法

2018年1月3日

テクノロジー プログラミング 学習

ITの発展と、AIの上達により、将来色々な仕事が無くなると予想されていますが、上位エンジニアは安泰という事でプログラムを学びたいという非エンジニアの人が増えているようです。 確かに現時点でも、SEや上位エンジニアは、高収入を得る仕事として認識されており、実際にIT企業も多額の人件費を投じて自社の品質向上を行っています。 しかし、このブログでも何度も書いていますが、非エンジニアの人が一流のエンジニアになるのは、非常に大変な高い壁がある事は間違いありません。 その壁を登りきれるかどうかが、エンジニアとして成功できるかどうかの分かれ道であることも間違いないでしょう。 そうした高い壁を確実に登っていく為に、自分でどういう点に注意をしながら技術の学習をすればいいかをしっかり押さえておきましょう。

初心者エンジニアの着実な学習方法について

基本は下記にある3つの工程を確実に進むことで、エンジニアスキルが伸びると考えられます。
1. テキスト通りに打ち込んで、うまく動くか? 2. 少し変えてみて、うまく動くか? 3. 自分で最初からオリジナルを作って、うまく動くか?
この3工程を進む時に一足飛びに進もうと考えると必ず挫折します。 各工程をどのようなポイントで押さえていくかを考えてみましょう。

1. テキスト通りに打ち込んで、うまく動くか?

これは「写経」という人もいますが、基本的には環境構築されたところで、他人の作ったプログラム(サンプルプログラム)をそのまま入力して、出力を確認するだけのことですが、 もしそのプログラムが正常に動作しない場合は、自分の打ち込んだプログラムに100%不具合の原因があります。 初心者エンジニアの場合、何が悪くてプログラムが動作しないのか原因を見つけることが困難です。 そのまま途方に暮れて挫折してしまわないように、確実に動作するプログラムで写経し、それを正常に実行していくことで、プログラム構築の初期工程を学ぶことができます。  ただし、ここで一番重要なのは、写経をする際に、一言一句間違えずに入力する事ではなく、できるだけたくさんの色々な間違いを犯してしまうことが、成長に繋がります。 間違えたことに対しての原因究明はエンジニアにとっては、非常に重要なミッションになります。 多くのエンジニアが、こうした工程を嫌い、自分の仕事ではないと言ったり、不具合の原因が自分ではなくどこか別の場所にあるのでなはいかと心の底から信じ切って、まるでプロジェクトが前に進まないという場合、プログラムは上級だが、不具合対応能力が極めて乏しいというエンジニアも実際の所少なくないのが事実だ。 要するにプログラムを学ぶ際の一番最初は、写経してキーボードやコンピュータ事態に慣れることと同時に、その時点で犯す失敗は、何も影響が無いため、出来る限りの失敗を繰り返すという段階なのである。 失敗をたくさんする人がより成長するというのは、自分でも成長を感じるくらいその後、目に見えて現れてくるでしょう。 ただし、ここでの失敗については、「同じ失敗を繰り返してはならない」という事を補足しておきます。

2. 少し変えてみて、うまく動くか?

次の工程に進むには、サンプルプログラムを失敗せずに入力、実行できるというレベルになっていることです。 そして、このサンプルプログラムを少し変更してみて、自分が思った通りの動作をするかという確認作業です。 ここでの作業は、「面白い」と感じる人と「つまらない」と感じる人に大きく分かれますが、 「面白い」と感じる人は研究開発員に向いており、 「つまらない」と感じる人は、即戦力の実行部隊で活躍するのがいいでしょう。 ただし、つまらないからといって、この工程を飛ばすと、エンジニアとしては、まるで融通の効かないタイプになってしまうので、要注意です。 さて、ここでの「少し変える」というのは、どういうことか理解してみましょう。 もちろん、サンプルプログラムに書かれている色々な値を少しだけ変更して、表示する数量を多くしたり少なくしたり、 表示するサイズを大きくしたり、少なくしたり、登録する項目を1つ追加してみたりすることです。 他にも自分が思いつく限りの変更を行ってみるのがいいでしょう。 実際にこれは、仕事でも要求される、クオリティを上げる時のアイデア出しの作業と同じ内容になるので、これが得意な人は、品質の高い開発が行える人材になるでしょう。 もちろん、ここでのNGは、変更点を人から言われたことしかできないタイプです。 自分に独創性が無く、言われたプログラムしかコーディングできなくなってタイプになりがちなので、「どのように変更するのがいいか」という質問を教えてくれている人にしないように気をつけましょう。

3. 自分で最初からオリジナルを作って、うまく動くか?

ここでは、サンプルプログラムを卒業して、自分で1からプログラムしてシステムを構築しなければいけません。 正直これができれば、エンジニアとしてはプロレベルなのですが、ここで重要なポイントは、「何を作るか」というポイントです。 仮にこれが学校で教わっている最終課題であったとしたら、制約の許す限り自分の中での最高のアイデアをプログラミングするのがいいのですが、恐らく多くの場合、 事前に何かしらの課題が存在することでしょう。 例えば、「LAMP環境で複数ユーザーが利用できる入金システムを構築する」だとか「B2C向けのブラウザベースの集客管理システム」などというお題が出されたらあなたならどういうプログラムを作成しますか? もちろん最初から無茶振りなのはよく分かりますが、身の丈に合わないプログラムを作ると多くのエンジニアが「完成しない」という結末を迎え、成果発表時に、未完成のまま言い訳をしながらプレゼンをしなければならない事態になってしまいます。 この課程で重要なのは、自分の作る開発物にゴールを見据えてスケジュール管理と開発の規模感を把握するという事なのです。 少し難しく聞こえるかもしれませんが、このスキルが無い人が開発現場に就任したとしたらどうなるでしょう? そうです、多大な開発工数がかかる大規模な作業を行い、結末が見えない作業を繰り返し、最終的には完成できずに誰か他の人にケツを拭いてもらうという始末です。 本人も周りの人も誰も得しません。 こうした人材を一人でも少なくするために、この工程をしっかりとクリアする必要があります。 実際にこの工程はOJTで行われる場合が多いのですが、その際の失敗は仕事に穴を開けるという事になりかねます。

教える側と教わる側

これを読んでいる人が、初心者エンジニアであれば、1つの大きな課題に取り組むのではなく、自分の学習する時間を見つけてそこで小さな開発を出来る限り数をこなすことをオススメします。 また、これを読んでいる人が、教える立場の人である場合、この工程が自分でまるで進まない生徒には、1番や2番に戻ってやり直しをするように促してあげてください。 そもそも、自分で一から構築することにモチベーションが上がらない人は、エンジニアには向きません。 その辺のお作法を教えることも大切なのですね。 プログラムを教えてくれる学校などがたくさん世の中に出てきています。 その学校に入学して授業を受ければプログラムが習得できると考えている人は、今一度この工程を自分で行う努力をしてみましょう。 自分の覚えが悪いことを、他人が教える事が下手くそという責任転嫁をしない為に、自分で学習する術を身に着けましょう。 ちなみに、この工程はプログラムでなくても、大体どの技術職、学習する時などに応用できると思うので、この方法を身に着けて、人生のスキルをどんどんアップさせていきましょう。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。