- プログラミングってセンス(適正)が必須?
- そもそも自分はプログラミングに向いてるの?
- プログラミングを学ぶとどうなれる?
- 入門としての学び方のオススメは?
プログラミングを習得することは自身のキャリアの可能性を広げます。
実際にプログラミングを始めようとした初心者が「自分には向いていない?」「何に活かせる?」となり、諦めてしまうケースは非常に多いです。
私はエンジニア業界で20年務め、100名以上の初心者のプログラマーを育成してきています。しかし、対象者の目的やレベルに合わせた育成ができずに遠回りをさせてしまったこともありました。
そこでこの記事では、プログラミング初心者の初めての壁になる「まず始めること」へ導くため、個々の適性に応じた目的と学び方を紹介をします。
この記事を読めば初心者が必ず陥るプログラミング適正への不安が解消され、自分に最適な学習の方向性が決められるでしょう。
プログラミングには向き不向きはあるが、お金を稼ぐ意欲次第で乗り越えることは容易である。まずは自身の適正レベルを知り、目的を把握し、学習方法を決めることが大切!
プログラミングに適正は大切だが克服は可能
「自分にはプログラミングの適正がない?」と思っている方も多いのではないでしょうか。
実際に「性格が雑で論理的に考えられない」「パソコンの前で試行錯誤している事自体が苦痛」など少なからず、プログラミングには不向きな人はいます。
ただし、「お金を稼ぎたい」という意欲さえあれば、たとえプログラミング適性が低くとも克服は可能です。
プログラミングの適性がない(不向きな)人はいる
実際に「プログラミングに向き不向きはない」と主張する人もいます。
しかし、そう主張する人はその人が置いている前提が違うだけで、プログラミングが不向きな人はたくさんいると言えます。
例えば私の知人は、「ルーチンワークが向いていて、新しいことをとりあえずやってみるということにストレスを感じる」と言います。
ただこの考え方は「食べず嫌い」と似ていて、実際に自分の手で作成したプログラムが動いた実体験を経ることで「やってみたら意外と簡単、楽しい」となることが多いです。
そのため、最初のハードルさえ超えれば不向きな人の不安は杞憂に終わると考えます。
プログラミングは簡単で楽しいんです!
エンジニアを極めていくということは非常に奥深く専門的知識をひたすら追求していく限られた才能と努力を兼ね備えた人だけができることです。
ただし、誤解を恐れずに言うと、学習の方法さえ間違えなければ、お金を稼げるくらいのレベルのプログラマの一人になるということであればとても簡単です。
私がエンジニアになった頃(約20年前)は、プログラミングを学び始めることがもっと難しかったです。(私の経験に偏った意見かもしれませんが)難しかった理由は、C言語から学ぶことが標準的だったからだと推測しています。
C言語はコンピュータが動く原理(メモリ管理など)を知らないと使いこなすことが難しい言語です。一方、
現代のプログラミングでは基本的に部品と部品を組合せてシステムを作るため、パズル感覚でより高度なサービスをシロウトでも作ることができます。
よって、プログラム自体が簡単になっている点と、動かすという実体験が身近に感じられるようになった点で、初心者がプログラミングを楽しいと感じるまでの期間がとても短くなっていると言えます。
プログラミングが簡単だと思う理由を補足すると次のようになります。
- 初心者が学習しやすい言語がある
- ひとつの言語を習得すればあとは応用が効く
- 細かいことは覚えなくて良い(ググれば良い)
- プログラムが動くという実体験を身近に感じられる
- 無料でもはじめられる
プログラミングの向き不向きの診断
プログラミングの適正の定義は、人によって考え方が変わるところです。
次にプログラミングの適性を一通り挙げますが、これに当てはまる項目が少ないからと言って諦める必要は全くありません。繰り返しになりますが、現代のプログラミングで、ある一定のラインまで(お金が稼げるようになるまで)習得することは簡単なのです。
向いているか向いていないかで学習方法が変わるというくらいの認識で良いです。
プログラミングに向いている人
プログラミングに向いているか否か、以下のチェックリストで確認してみてください。
当てはまる項目が多いほど、プログラミングを習得することに適しています。
- 論理的な思考を持っている人
- 自主的に行動しながら学べる人
- 物事に対して疑問や課題を持てる人
- 効率を重視できる人
- 好奇心がある人(新しいことを考える・挑戦することが好き)
- 黙々と地道な作業をする事ができる人(集中力がある)
- コミュニケーションを積極的にとれる人(協調性がある)
- プログラミング自体に興味がある人
- モノづくりが好きな人
- パソコン作業が苦痛でない人
- 想像力がある人
- 柔軟性がある人
- 体力がある人
プログラミングが向いていない人
プログラミングが向いていない人は、「上記のチェックリストの反対の人」ということになります。
ただし、チェックリストに当てはまらなかったとしても諦めることはありません。
多くの人はプログラミングを「やってみたら意外と楽しい」というところからスタートして、徐々に適性が上がっていくことが多いからです。
やってみてもプログラミングを楽しめなかった人は本当に向いていないのかもしれません。
しかし、学びで得られるITに関する知識は、他の副業などの職種の全てにおいて活きるので学ぶこと自体は有益で、無駄にはならないので臆することなくチェレンジしてみることをオススメします。
プログラミングを向いていない方は下に紹介するオフライン型のプログラミングスクールで指導を受けつつ、モチベーションを維持しながら進める方法が良いです。
プログラミングを学ぶ目的を決める
プログラミングのスキルを活かす先は複数あるため、一括で語ることは難しいです。
そのため、まずはプログラミングをやる目的を明確化しましょう。
プログラミングが活きる職種は、IT業界から、半導体など製造業の非ITなど様々で、プログラム言語の観点からも、その多様性は大きいのです。
プログラミングが活かせる職種を決める
プログラミングが活きる職種は、システムやアプリのIT業界から、半導体など製造業の非ITなど様々です。
Web系
SNS、ECサイト、会員管理システムなど多種多様なWebサイトやシステムを開発する仕事です。Webサイトに特化したプログラマで、フリーランスとして働く人も多くいます。「HTML」や「CSS」の基礎知識に加えて、「JavaScript」「PHP」「Python」などが用いられることが多いでしょう。Webのフロントエンド、バックエンドのどこを専門とするかによっても異なりますが、データベースやサーバーなどのシステムへの知見も必要になります。
SIer系(システムインテグレーター)
銀行、鉄道情報、工場の生産管理、店舗の在庫管理などさまざまなシステムの要件定義・設計・開発・運用を行う仕事です。そこで働く人のことをSE(システムエンジニア)と言いますが、プログラミングだけではなく、システム構築〜運用の幅広い知見が求められます。もう少し狭い括りで言うと、社内で運用している汎用機やITインフラのメンテナンスを行う場合もあります。
制御・組み込み系
モバイル機器、産業機器、ロボットなど特別なハードウェアに組み込まれるソフトウェア(ファームウェアともいう)を開発する仕事です。この業種は開発対象のハードウェアが動く仕組みも理解しながら、限られたメモリやプロセッサのリソース制約と限られた開発環境上で開発する技術が必要になります。「C」「C++」「Java」「アセンブラ」などを使うことが多く、開発環境も特殊であることから初心者には少々ハードルは高めの職種になります。ちなみに、私はこの業界で20年のキャリアがあります。
アプリ系
パソコンやスマホにインストールされるアプリやゲームなど自社でソフトウェアを開発して製品として売り出す仕事です。アプリの目的に合わせて開発プラットフォームが異なるため、開発言語はたくさんありますが、「Java」「C#」「Python」などが比較的多めです。
プログラミングの言語を決める
プログラミング言語にはメジャーなものから、マイナーなものまで全世界で数百種類の言語が存在します。プログラミング学習を行う目的に合わせて選択していきましょう。まずは、独学である程度の方向性を絞りましょう。
言語の紹介をしだすとキリがないので、「初心者がプログラムの原理を学ぶ」という視点で「このあたりを目指せば間違いない」という言語習得のスタートアップ事例を挙げます。これらから目的に沿って導入しやすいと思う言語を選択されると良いと思います。
- HTML/CSSからJavaScript、PHPを使ってWebブラウザ上で動かす
- Java、C、C++などをコンパイルしてアプリを作る
- Bash/ShellでUnixコマンドに慣れる
- Python、Rubyで作業の自動化ツールなどを作る
プログラミング初心者の学び方
今からプログラミングを始めてみようと思った際に悩むことが、その学び方です。
一番良いのはプログラミングができる環境に身を置いて実践から学ぶということですが、すでにそういう職種に就いている恵まれた環境にない人が多いでしょう。
学び方はその人の適性・好み・ジャンル・経済状況・時間的余裕によって異なるので、具体的にこの方法がオススメと絞ることは難しいです。
ここでは学ぶための選択肢と共通点を挙げておくに留めますが、ご自身に合った方法で進めてください。
プログラミングを独学で学ぶ
無料サイトや書籍での独学はあくまで「この言語はこんなものなのかぁ」を知るまでに使うのが良いでしょう。
最終的にはスクールや優良サイトなどの優良教材へ自己投資すべきです。
3ヶ月後にビジネス案件が取れるようになっているか、まだ無料サイトで学習を続けているかで考えると時間効率は明白です。
まずは、書籍や無料サイトで言語の感触を知り、どのプログラム言語に注力するかの方向性を決めましょう。
- 無料の自習型サイトで学ぶ
- 有料の自習型サイトで学ぶ
- 書籍で学ぶ
- たくさんのコードを書く(写経する)
プログラミングスクールで学ぶ
プログラミングスクールの受講スタイルは、オンライン型とフライン型の2種類あります。
自分に合った受講スタイルのあるスクールを選択しましょう。
オンライン型プログラミングスクール
ネット完結型のオンラインスクールです。
オフライン型よりは費用は安めで、非対面型やライブ授業型などがあり、時間の自由がない会社員でも取り組める点が良いところです。チャットやビデオ通話で講師に質問できるサービスもあります。
時間や場所にとらわれずに進められるのですが、上記の独学と同じでモチベーションを維持することが課題となります。
オフライン型プログラミングスクール
従来からある教室で受講するタイプのプログラミングスクールです。
オンライン型よりは費用は高めですが、不明な点はすぐに講師に聞けて解決できる点が良いところです。
同じような志を持った人たちと一緒に勉強することができ、自分を律することが苦手な人にとってはモチベーションも維持しやすくてオススメのやり方になります。
個別指導のタイプ、通い放題のタイプ、オンラインと併用するタイプと様々なサービスがあります。
プログラミングを学ぶ際のコツ(注意点)
プログラミング学習をする際には以下の点をコツとして進めてください。
- 毎日継続して勉強する
- 暗記はしようとしない
- アウトプットする(=実際にプログラムを作ってみる)
- お手本のプログラムを模写をする
- エラー解決は成長の機会と捉える
- 解決しない場合は回避策を見つける
- とにかくググる
初心者は、インプットだけを行うのではなく、アウトプットにも心がけ、実際にお手本コードを模写しながら機能追加するようなかたちでコーディングすると良いでしょう。
進めていくと、エラーにぶつかることが必ずあります。ここが挫折ポイントでもあるのですが、その際は「最高の成長の機会」とポジティブに捉えて自身でググるなり、教えてくれる人を見つけるなりして、手を止めずに解決に向けてもがいてみてください。
どうしても解決に至らない場合は別の回避策を探してみても良いでしょう。本来の目的達成の実現方法はひとつではないはずです。そういった試行錯誤が何よりも価値のある学習なのです。
まとめ
プログラミングには向き不向きはあるが、お金を稼ぐ意欲次第で乗り越えることは容易である。まずは自身の適正レベルを知り、目的を把握し、学習方法を決めることが大切!
ということをお伝えするために、次のことを解説してきました。
- プログラミングの向き不向きを確認するチェックリスト
- プログラミングを学ぶ目的を決め方
- プログラミングを初心者の学び方
エンジニアになるためにコツコツと基礎を積み重ねてきた一部のプロフェッショナルな人と比べると、勉強しはじめのときは差がありますが、その差は現場経験で必ず埋まります。
ただし、エンジニアとしての実力一本でその道を極めて生きていこうと考えると、その道はかなり険しいでしょう。
そのくらいエンジニアの追求する技術の世界は奥深いものです。つまり、なにか特別な新しい技術を生み出すことは難しいですが、現場で仕様に沿って機能を実現するという点においては、横一線なのです。
個人で稼ぐビジネス視点でのエンジニアとしての価値は、プログラミングの実力のみではなく、営業力やデザイン力など何か顧客にとって付加価値を与えられる力との掛け算で決まります。
また、プログラミングを学ぶ過程で得られる知識や経験は、何か別のビジネスを行う上で役に立つものばかりなので、皆様もぜひ学んでみてはいかがでしょうか。
では!