プログラミング初心者の『結局何から始めればいいの?』を現役SEが徹底的に解説します。

どうもです!わだっしーです!

現場でリーダーをやっている23歳SEです。

 

今回は初心者がプログラミングを勉強するのに、
迷わず一直線に突き進むための学習プランを紹介したいと思います。

プログラミングって結局よくわからないし、
自分なんかにできるのかな?
と思っている人もいるかもしれません。

ですが、
プログラミングは頭の良い人だけのスキルじゃないし、
資格もいらないので比較的に簡単に身につくスキルです。

 

難しい、挫折した、
というのは勉強する方法が間違っていただけであって、
あなたに能力が無いわけではないのです。

勉強法をきちんと押さえて入れば、
間違いなくプログラミングができるようになるので、
今回の記事でプログラミングの勉強の方法を学んでいただければと思います。

 

僕の高専生時代は情報工学という、
コンピュータを専門とする学科に通っていたのですが、
誰よりもプログラミングができない学生でした。

どれぐらいできなかったかというと、
プログラミングの演習で1人だけ時間内に課題が終わらなくて、
1人寂しく昼の13時から夜の20時まで
プログラムと格闘していたぐらいできませんでした。

そんな僕でもプログラミングが出来るようになった勉強法なので、
効果のほどは絶対に保証します。

 

ではいきます!

プログラミングの勉強をする前にゴール設定をしよう

やる気のある方は本を買ったり、
ネットで調べながら

オラオラオラオラオラ!!!!

とプログラミングの勉強を始めるちゃうかもしれませんが、
ちょっと落ち着きましょう笑

プログラミングを効率よく、
挫折しないようにやっていくには、
ゴール設定を絶対にしないとダメです。

 

これには

  • 目的がないと面白さがわからずに挫折する
  • 途中で何をやっていい変わらなくなり挫折する

という2つの理由があるからです。

 

やる気のあることは非常に素晴らしいことですが、
プログラミングは正しい方法で学ばないと、
挫折する可能性が高いので、
ゴールは絶対に設定すべきです。

 

ゴールはなんでもよくて、
例を羅列すると、

  • ゲームを作りたい
  • スマホアプリを作りたい
  • ウェブサイトを作りたい
  • ロボットを動かすアプリケーションを作りたい
  • SNSのようなウェブアプリケーションを作りたい

などなど。

本当になんでもいいです!

 

自分がワクワクするものや、
これがあったら自分は楽しく作れそうと思うもの、
作れたら嬉しいなと思うものを設定しましょう。

自分が作りたくないものを作っても楽しくはありませんし、
そんな苦行みたいなのを好むなんてただのドMにしか思えません笑

だから、自分が面白いと思うもの、
作ってみたいものを思いのままに
ゴールとして設定しましょう。

 

僕が学生の時に掲げたゴールは
『Androidアプリを作ってみたい!!』
というもので始まりました。

スマホが出たばかりで、
まだどのスマホもしょぼくて、
アプリがガックガクになったりしていた時代の話ですww

 

僕はAndroidアプリ作れたらカッコよくね?
とかいう不純な動機でプログラミングの勉強を始めたので、
ゴールなんて本当になんでも良いのです。

だから、こんなのは自分にはできないなどとは思わずに、
とりあえず自分の素直な、
『俺はこれが作りたい!!』
っていう気持ちでゴールを設定してほしいなと思います。

 

ゴールとなるアプリケーションのジャンルを知ろう

ゴールを設定したら次はちょっとしたお勉強です。

 

お勉強とは言ってもここに書いてあることを
3分読めば解決するので、
サクッと読み進めていきましょう!

 

アプリケーションにはジャンルがあります。

世の中のアプリケーションを大きくザックリ分けると下記のようになります。

  • ウェブアプリケーション
  • ネイティブアプリケーション
  • 業務アプリケーション
  • 組み込みアプリケーション

細かく分けることもできますし、
他にもジャンルはあるのですが、
とりあえずはこの4種類を押さえておけば問題ないです。

 

自分の作りたいものが
どのジャンルに位置付けられるかを知っておくことで、
今後ネットでプログラミングで調べ物をするときや
本屋に行って書籍を買う時にもメチャクチャ役に立つので、
知っておいて損をすることはないでしょう。

僕は最初にこれを知らなかったので、
調べ物にメチャクチャ時間がかかってしまっていたし、
その時間をもっとプログラミングに使えば、
自由に書けるようになるまでの時間はもっと短くなったと思っています。

あなたにはこんなことで時間を無駄にして欲しくないし、
調べ物ばかりでプログラミングがつまらないものになったら
めっちゃもったいないので知っておいたほうがお得です。

なので、先ほど紹介した4種類のジャンルをサクッと学んでいきましょう。

 

ウェブアプリケーション

これは初心者に一番オススメしたいジャンルで、
世の中で一番使われていると言っても過言ではないアプリケーションです。

今僕がパッと思いついただけでもこれだけあります。

  • 企業のECサイト
  • わだっしーのブログ
  • Twitter, Facebook, InstagramなどのSNS
  • Amazonや楽天などのショッピングサイト
  • Paypalなどの決済サービス
  • Googleなどの検索エンジン
  • Youtubeなどの動画サイト

これ以外にもウェブアプリケーションは鬼のように世の中に溢れています。

 

だから上記に挙げたようなもので、
自分が作りたいものがあれば、
あなたの作りたいアプリケーションは、
ウェブアプリケーションということになります。

ウェブアプリケーションのいいところは、
他のアプリケーションのジャンルよりはるかに学習コストが低く、
初心者がもっとも身につけやすいジャンルだからです。

しかも、ここでプログラミングの基礎を網羅しておけば、
他のジャンルに転向したいとなっても、
比較的容易にジャンル転向することができるようになるので、
一番最初のプログラミング勉強の対象としてはめっちゃオススメです。

 

僕は実際にプライベートで
ウェブアプリケーションを作ったことが何回もあるし、
短期間で作ることが簡単なのでお手軽という意味で、
メチャクチャおすすめですね。

 

ネイティブアプリケーション

全く知らない単語が出てきて混乱したかもしれませんが、
知ってみるとメチャクチャ簡単で、

分かりやすいのは下記になります。

  • iPhoneアプリ
  • Androidアプリ
  • Windowsアプリ
  • Mac OS Xアプリ

 

iPhoneアプリ、Androidアプリとかは分かりやすいと思うので、
説明は不要かと思いますが、
WindowsアプリはMicrosoft Officeとかブラウザとかです。
Mac OS XアプリはQuickTimePlayerとかSiriとかがそうです。

これらに共通しているのは、
その端末でしか動かない
というところで、
このジャンルのアプリケーションを
ネイティブアプリケーション
と言います。

 

それぞれで使う言語は違いますし、
他の端末で動かすことができないので、
native(=固有の) application(アプリケーション)
というわけです。

これはみんながスマホやPCで使っているアプリが該当しているので、
ネイティブ端末のアプリを開発したい人はこのジャンルが該当します。

 

ネイティブアプリケーションは
他のジャンルへの応用範囲が狭い代わりに、
その端末のポテンシャルを最大限に活用することができるので、
動かしたときにメチャクチャ楽しいというメリットがあります。

僕もAndroidアプリで色々動かしてみて感動したし、
メチャクチャ楽しかったので、
そういう感動を味わいたい方にはオススメですね。

スマホゲームやPCゲームもこのジャンルなので、
ゲームを作りたい!!
っていう人にもオススメのジャンルですね。

 

あと作れたらなんかカッコいい!
っていうのもメリットですねw

人に見せるときも自分のスマホを見せて、
「これ俺が作ったんだぜ!(ドヤァ」
ってできるのはなかなか快感です。

 

業務アプリケーション

これはあまり馴染みがないものかもしれませんが、
主に企業が使うようなアプリケーションのことです。

業務フロー効率化や顧客データの一括管理、決済システム、資材管理システム
などなど。

大規模で使われることが多く、
高い品質が求められるアプリケーションです。

 

僕がSEとして開発をしているのは業務アプリケーションで、
数千万〜数億単位でお金が発生する開発をやっています。

 

たくさんの人が関わって開発したり、
使う機材がメチャクチャ高額だったりするので、
その分発生するお金も大きくなるという感じです。

なので、新しい技術をふんだんに使うというよりかは、
プログラミング言語の深いところまで精通し、
大規模な仕事がしたい人にとってはオススメなジャンルです。

 

大規模になればなるほど
品質維持のために設計や試験にたくさんの時間を使うことが多いので、
実際にプログラムを書く作業はメチャクチャ少なかったりします。

プログラミングができるようになりたい!
というよりかは
プログラミングで大きな仕事がしたい!

という人にとってはオススメのジャンルですね。

 

上流工程になればなるほど高単価になるので、
エンジニアとしてより高みを目指したい人にとっては
挑戦してもいいのかなと思います。

 

組み込みアプリケーション

組み込みアプリケーションは、
家電やロボットなどの
精密機械に搭載するアプリケーションのことです。

これは家電メーカーに就職したいとか、
趣味でマシンを作ってみたいという人にとっておすすめです。

 

自分が書いたプログラムで掃除機が動いている!!!
とかめっちゃ感動しませんか?

そういう物理的に動くものを作りたい、
電子工作が好きな人にとってはメチャクチャおすすめですね。

 

僕は高専の卒業研究の時に、
Androidアプリでマイコンを搭載した音楽機材を操る
というものを作りました。

Andoroiアプリは音楽機材のコントローラーの役割をしていて、
Bluetoothでマイコンが搭載された音楽機材を操る
ということをやってました。

あれは電子回路の知識が必要だったり、
電気信号の知識も必要だったのですが、
作りたい一心でやっていたのでメチャクチャ楽しかったですね。

 

僕みたいにプログラムで、
いろんな機械を動かしてみたい!!
っていう人は挑戦してみてもいいと思います。

 

作りたいもののジャンルは分かりましたでしょうか?

作りたいもののジャンルがわかったら、
いよいよ次はどんなことを勉強すればいいか?
という話に入っていきます。

ここまで学べば、
自分がどんなことを勉強すればいいかは一目瞭然だし、
何を勉強するかを一気に絞り込むことができます。

 

プログラミングを勉強するときは絞ることがメチャクチャ大事で、
短期間で作りたいものが作れるようになるための道筋は、
次の言語選定で8割固まります。

ではでは、またサクサクっとプログラミング言語について見ていきましょう。

 

ジャンル別プログラミング言語の紹介

ジャンル別に勉強すべきプログラミング言語をまとめました。

世の中には数百というプログラミング言語があるのですが、
その中でもよく使われているものについて絞って紹介します。

それぞれの言語は世の中でどんなものに対して使われているのも紹介するので、
自分のゴールにあった言語を選びましょう。

 

ウェブアプリケーション

ウェブアプリケーションについては、
ちょっと知識を入れないと言語について理解が難しいと思うので、
ちょっとだけ勉強を挟みます。

 

ウェブアプリケーションで使われている言語については2種類あるのですが、
クライアントサイドとサーバサイドがあります。

とは言ってもよくわからないと思うので、
簡単な表と絵にしてみました。

種類 プログラムが動く場所 やること 言語
クライアントサイド スマホ、PC ウェブページを表示する HTML/CSS, Javascript
サーバサイド サーバ データや計算の処理をする PHP, Ruby, Python, JavaScript

 

クライアントサイドとサーバサイドについて簡単に説明していきます。

 

ユーザーがPCやスマホでURLやリンクをクリックしたりタップすると、
サーバに
「サーバさんこのサイトのページのデータください!」
という信号が飛びます。

するとサーバはウェブページを
ブラウザに表示するためのプログラムを
クライアントに送ります。

 

ここで登場したプログラムがクライアントサイドのプログラムです。

表にもありますが、HTML/CSS、JavaScriptですね。

これを見てみればわかるように、
クライアントサイドだけでもウェブアプリケーションが作れちゃうので、
ぶっちゃけクライアントサイドだけでも成り立っちゃいます。

 

でも、クライアントサイドのプログラムでできるのは、
ブラウザにページを表示するだけなので、
これだけじゃちょっとつまらないですよね。

ただページを表示するだけだと文字や画像、動画しか載せられないので、
アプリケーションというよりかはページって感じがしますよね。

 

そこで登場するのがサーバサイドのプログラムです。

サーバサイドのプログラムでできるのは、
データと計算の処理と書いたのですが、
具体的に絵にするとこんな感じ、

・ショッピングサイトのカートの合計金額の計算

 

クライアントサイドだけだと、
計算やデータの処理ができないので、

(正確にはクライアントでも計算はできる。便宜上ご了承を)

サーバサイドのプログラムに任せることで、
ユーザー個別のデータを取り出したり、
そのデータをもとに計算をしてクライアントに結果を返すことができます。

 

これがサーバサイドのプログラムの特徴で、
具体的にどんな処理ができるのかというと、

  • 会員サイトのログイン、ログアウト
  • ショッピングサイト
  • お問い合わせフォーム
  • 投稿サイト
  • サイト内の検索機能
  • 予約システム

などなどできることがかなり広がります。

 

だからクライアントサイドのプログラムだけでなく、
サーバサイドのプログラムも必要になってくるんですね。

 

実際、世の中のウェブページはほぼ、
クライアントサイドとサーバサイドの両方が稼働していて、
両方とも必要不可欠な技術になっています。

最初から両方ともやろうとすると大変なので、
まずはクライアントサイドからやってみて、
慣れてきたらサーバサイドを勉強するという形がいいと思います。

 

で、クライアントサイドとサーバサイドについて理解したところで、
勉強すべき言語について表にまとめました。

さあ、サクッと選んでプログラム書いていきましょう!

言語名 タイプ 必要度 難易度 ウェブアプリケーション使用例
HTML クライアントサイド 必須 ☆☆☆☆★ ほぼ全て
CSS クライアントサイド 必須 ☆☆☆★★ ほぼ全て
JavaScript クライアントサイド デザインにこだわりたい人は必要 ☆☆☆★★ あらゆるサービス!
JavaScript サーバサイド サーバサイドから1つ選べばOK ☆☆★★★ アメーバピグLinkedIn
PHP サーバサイド サーバサイドから1つ選べばOK ☆☆★★★ Facebook, このブログ
Ruby サーバサイド サーバサイドから1つ選べばOK ☆☆★★★ Cookpad, 食べログ, Crowdworks

 

ネイティブアプリケーション

ネイティブアプリケーションは
ウェブアプリケーションより話すことは少ないです。

 

ウェブアプリケーションは言語の選択肢が多いので、
たくさん説明をしてきたのですが、
ネイティブアプリケーションで使っている多くないです。

それぞれの端末でできることが決まっているので、
それに合わせて言語を選択することになるので、
迷いも少ないでしょう。

 

言語について表にしてみました。

作りたい対象の端末に合わせてサクッと選んでしまいましょう!

言語 端末 難易度 用途
Swift iPhone, Mac ☆☆★★★ iPhoneアプリ、Macアプリ
Java Android ☆☆★★★ Androidアプリ
C# Windows ☆☆★★★ ゲーム、Windowsアプリ
Visual Basic Windows ☆☆★★★ Windowsアプリ
C++ Windows ☆★★★★ ゲーム、Windowsアプリ

 

C++についてちょっとだけ解説

C++はWindowsの深いところまでふんだんに機能を扱うことができるので、
ハードウェアを強く意識したシビアな計算が求められる処理をしたり、
そういうった目的のWindowsアプリで使ったりします。

なのでWindowsのフルパワーを使って、
アプリケーションを開発したい!
っていう人は勉強するといいと思います。

 

業務アプリケーション

はい。これね。
説明難しいです笑

 

言ってしまえば
「この世のすべての言語が対象になる」
と言うことになります。

それというのも
業種、業務にあった言語を選択しなければならない
からです。

 

基本的に業務アプリケーションはオーダーメイドで開発するか、
製品としてパッケージングされたものをカスタマイズして開発するのですが、
それぞれによって最適な言語は違いますし、
それを選定するのもシステムエンジニアの腕の見せ所だったりするので、
具体的にどんなものを作るかで選択する言語を変えます。

で、実際に作るのはその言語を扱うことができる会社に外注して、
依頼したり自社内で扱える人間をピックアップして作るというのが
基本的な開発の流れになるので、
なんの言語?と言われるとはっきりとしたことは言えないです。

 

そもそもウェブ系の言語を使うかもしれないし、
組み込み系の言語を使うかもしれないし、
ネイティブ系の言語を使うかもしれない。

それすらも選び抜かれたものが使用されるという感じです。

だからこれと言って特定の言語を勉強しましょうとは言えないです。

 

が、強いて1つだけ言語をあげるとすれば
Java
です。

Javaはあらゆるシステムにマッチングしやすく、
プログラマーの求人数としてもめちゃくちゃ多いかつ単価が高いので、
実力があればメチャクチャ重宝される存在になれます。

高単価だけを狙い撃ちする
Javaプログラマーっていうのも職人みたいでカッコいいですし、
稼げるのでいいんじゃないかなって思います。

 

ただ仕事としては大変な業務が多いのがデメリットです。

僕もJavaで業務アプリケーションを開発していたこともありますが、
大規模なシステムの開発だったので結構大変でしたね笑

週7終電で帰るみたいな生活していました。。

 

稼げる金額が大きいので、
苦労してでも金だけは稼ぎたいっていう人にはオススメですね。

 

組み込みアプリケーション

組み込みアプリケーションは
組み込み対象のコンピュータによって使う言語が異なります。

初心者のうちは仕事で使うというよりかは、
趣味でやってみたいという人にオススメですね。

で、実際に作るとなるとどんなことができるかというと、
ぶっちゃけなんでもできますw

  • ミニコンピュータ
  • 携帯ゲーム機
  • 扇風機
  • ラジオ
  • 音楽プレイヤー
  • ラジコン
  • 温度センサー
  • モバイルルーター
  • 携帯電話
  • ウェアラブル端末
  • カーナビ

などなどなど。。。

 

コンピュータが搭載されているようなものは
なんでも作ることができます。

これってメチャクチャ夢広がるし、
自分のオリジナルマシンを作ることができるので、
電子工作としては最高の題材ですよね。

 

早速、組み込みアプリケーションの言語をまとめました。

言語名 難易度 使用例
C ★★★★★ 世の家電全般
C++ ☆★★★★ 世の家電全般
Python ☆☆★★★ Pepper

これまでより色々情報が少なくなっていると感じるかもしれませんが、
それというのも
プログラムを搭載する対象のコンピュータによって
使用できる言語が異なります。

プログラムを搭載するコンピュータは
マイコン(マイクロコンピュータ)というのですが、
マイコンは死ぬほどたくさん種類があるので、
ここでの紹介は控えさせてください。。

 

僕が高専の卒業研究の時は、
PICというマイコンにC言語でプログラムを組み込んで
音楽機材を作っていました。

C言語は他の言語に比べて難しいですが、
コンピュータの仕組みを意識しながら作ることになるので、
コンピュータに対してより理解できるようになりましたし、
今もその知識が活きているのでやってよかったなって思ってます。

 

言語の勉強はコンピュータのコトバを知ることである。

プログラムはプログラマー、SEにとって、
コンピュータと会話するための言葉です。

言葉を知らないことには
コンピュータに対して命令をすることはできないのです。

だからまず準備して欲しいのは、
プログラミング言語について知る
ということです。

 

勉強方法としてはProgateというサイトがオススメで、
無料で基本的な文法を抑えることができるので、
まずはここからスタートするのがオススメです。

僕が学生の時はこういうサービスがなかったので、
本屋に行って本を買い、
それを必死に読み漁るということをやっていたのですが、
Progateのようなサービスがあれば、
そこまで頑張る必要なかったなって思いますw

とにかく言語を理解することが最優先です。

 

本来であれば、
開発環境の構築なども自分でやらないといけないのですが、
Progateはそんなことも不要にしてしまうので、
マジでオススメです。

それで勉強してみて、
もう少し詳しく勉強したいとなれば、
Amazonとかでレビュー評価の高い書籍を購入して勉強したり、
プログラミング教室に通ってみるというのが
非常に効率の良い勉強法だと思います。

最初から難易度の高いことに挑戦するより、
こういう無料で簡単に学べるサービスがあるのであれば、
最初はそこから始めた方が理解が早くていいです。

 

ただ、注意して欲しいのが、
このサイトだけではプログラミングはできるようにならないです。

あくまでも言語の文法とか書き方を知るという使い方をしてください。

それ以降はそれなりに自己投資して勉強しないと、
実践するときに何もかけなくてパッパラパーという状態になりかねないので、
そこは気をつけていただければと思います。

 

もっと基礎を固めるにはやっぱり入門書や人に習うというのが鉄則ですね。

ここまでここまでくれば言語の超基本は押さえれていると思うので、
スラスラと言語の勉強が進むはずです!

 

人の作ったプログラムをパクる

ある程度、言語について
「こんな感じで書けばプログラムって動くんだ」
というのが掴めてきたら、
実際に実践レベルのプログラムを書いていきましょう。

とは言ってもゼロから書くのではなくて、
『人の書いたプログラムを丸パクリ』
するのがメチャクチャオススメです。

 

ネットや書籍で自分が勉強している言語に関して、
面白そうだと思ったプログラムやアプリケーションを探して、
プロやアマチュアが書いた実際のソースを写経して動かす
ということをやりましょう。

ここでは実践ベースのプログラムを写経した方がより力がつくのでおススメです。

 

ネットで無料で拾ってきてもいいのですが、
やっぱり書籍からパクってくる方がプロに近づくのが早いです。

当たり前ですが、書籍を作った人はプロですし、
プロの技術をを数千円でパクって自分ものにできるのは、
学習する上では力が身につくスピード感が全然違います。

ネットもいいのですが、
素人が書いたソースを真似てしまって、
あまり良くないソースコードが正しいものと判断してしまい、
結果として実務ではあまり使えないコードを書いてしまう可能性があります。

なので、初心者こそ書籍やプロに実際に教えてもらったソースを
丸パクリしてそのプログラムの仕組みを理解しながら、
動かすところまで作ることをオススメします。

 

最初は丸パクリするだけでも動かない場合があるので、
丸パクリして動かない場合は、
なぜプログラムが動かないのか?
というのを勉強するチャンスです。

動かないとイライラしてしまいがちですが、
それこそプログラムの原理原則を学ぶことができるチャンスで、
プログラムがどのようにしたら動くのか?
という経験値を積むことができるので、
こればかりはある程度量をこなした方がいいです。

 

写経したことによってプログラムが動かない理由は、
パターンが決まっていて、
慣れると
「動かないなぁ。」
となっても秒で問題を解決できるようになります。

そう言ったデバッグ能力を鍛えると、
ソースを書くこと自体にミスが減りますし、
実務レベルで必要とされる技術の基礎をが身につくので、
プロを目指すのであればぜひそこまでを目指して欲しいです。

 

最終的にはシステムの部分的なプログラムではなくて、
アプリケーション全体のソースコードをネットや書籍から拾ってきて、
写経しましょう。

そこまでくればアプリケーションの全体像を掴めるようになりますし、
プログラミングの基礎は身につくでしょう。

 

後もうちょっとで、
あなたは実務で使えるレベルのプログラミングスキルを身につけることができるので、
サクッと読み進めてゴールまで突っ走っていきましょう!

 

人からパクったプログラムをアレンジしよう

次のステップは、
『人のプログラムをアレンジする』
ということに取り組みましょう。

まずは人が完成させたアプリケーションは、
実際にユーザーが使えるレベルのものをパクります。

 

スマホアプリだったら、
『アプリ自体のソースコード』
ウェブアプリだったら、
『クライアントサイド、もしくはクライアントサイドとサーバサイドの両方』
のサンプルソースをパクリの対象として扱いましょう。
(組み込みアプリケーションも同様です)

 

そして写経して動くところまでいったら、
『人のプログラムをアレンジする』
ということをやるとより実力をつけることができます。

 

例えば、スマホアプリだったら、
『特定の条件になったら画面に通知する機能』
をつけるとか、
『ゲームをクリアしたら音がなるようにする』
とかそういった自分が思いついた機能を
自分で考えて実装するということをやります。

これを実践するにはこれまで勉強してきた基礎の範囲で、
自分だったらどういう機能を追加したいか?
とか、
自分だったらもっとこういう風に効率よくプログラムを書く
といった自分なりのアレンジをしていきましょう。

 

 

プログラミングは頭脳労働です。

この段階で頭を使って作業をするということを身につけ、
このプロセスでは脳みそを鍛えていくことを重要視します。

人間の脳のポテンシャルってハンパ無くて、
使えば使うほど磨かれていきます。

 

だからここに関してはプロを目指す心意気があるのであれば、
絶対に避けて通ることはできないプロセスです。

遊びなら思考せずに人のプログラムをパクるだけでいいのですが、
実務で思考がされていないプログラムを出してしまうと、
作ったプログラムによって大きな問題を発生させてしまったり、
問題が起こっても自分では直すことができないという、
本末転倒な結果を引きしまうのでやっちゃダメなことです。

 

これは僕が雇っていた外注さんの話ですが、
『ネットのプログラムを丸パクリ』
して実稼働しているプログラムに改修を加えたら、
サービスが停止寸前まで追い込まれました。

そして、
その人は自分が書いたプログラムなのに、
自分で直すことができなかったので、
僕が徹夜して直した。

という経験があります。

 

彼は思考せずに世の中にプログラムを提供しようとしていたので、
僕としてはプロ意識が低いなと感じてしまいました。

意識は出来るだけ高く持った方が良くて、
自分の能力を拡張し続ける気持ちがないと、
実務で使った時に死にます笑

 

人がなんとかしてくれるとか、
自分はプログラムを書けばいいんだという
低いマインドを持っていると、
あなたの実力は全然身につかないですし、
ユーザーに喜んでもらうこともできません。

これは仕事に関わる全ての人に共感できる話だと思いますが、
「テキトーに作られたものを人が使いたいか?」
というのを考えてみて欲しいです。

 

プロとアマチュアの違いは、
制作物に
『お金を払うだけの価値があるか』
というところに現れると思っています。

つまり、
商売として提供できるだけの価値を提供できるか
にあります。

 

プログラミングは対してお金を書けずにパソコン一台でできるので、
あなたの書いたプログラムの羅列から人に価値を与える
ということがイメージしにくいかもしれませんが、
最終的にはあなたの作ったプログラムがユーザの手に届きます。

フリーのアプリケーションであれば、
そこまでの意識は必要ないと思いますが、
ビジネスマンとしてやっていきたいのであれば、
お金をもらってプログラムを提供する
ということを意識して欲しいです。

僕の場合は、
『環境や立場がそのレベルに導いた』
というのが大きくて、
高い基準が求められる実務環境に身を置いて、
プロのプログラムのパクリとアレンジを繰り返してきたから、
プログラムを書くことでお金をもらえるようになりました。

僕は人にプログラムを教えてもらったわけで無く、
プロの書いた膨大な量のプログラムを読んで理解し、パクリ続けてきた
からこのレベルにまで到達しました。

 

なので、これを読んでいるあなたが初心者であっても、
ここのレベルにまで到達することができれば、
プログラムだけでご飯を食べることは十分可能です。

 

ゴールから逆算して楽しさと効率を重視しよう

プログラムが書けるようになると、
自分がまるで魔法使いにでもなったかのように
自由自在にコンピュータを動かすことができるようになります。

これまで読んできた内容でゴールと勉強方法を見定めて、
あとは一気に突っ走ることで、
プログラミングの能力を手にすることができます。

 

一気にやるというのが結構ポイントで、
何ヶ月も地道にやるよりも1ヶ月、2ヶ月にやった方が、
知識の積み重ねやプログラミングに必要な思考力が身につきます。

そのほうが出来上がったものが動くことの面白みが早くわかるし、
どんどんプログラミングの魅力にはまっていくことになると思います。

自分が作ったプログラムが手元で動くというのは、
感動がありますし、それこそがプログラミングの楽しさです。

楽しくやることができれば結果は自然と付いてきます。

 

なので、
ゴール設定と逆算、パクって楽しむことが、
一番効率の良いプログラミングの学習法だと思っています。

長期間勉強を重ね続けるのも大変ですよね。

一気にやった方が結果的にメチャクチャ楽だし、
速攻でスキルを身につけられるのでオススメです。

そういった勉強をすれば実力は右肩上がりに伸びていくので、
一気にプロと同格のレベルに到達することができます。

 

 

ただ、ここに書いた勉強法よりも
もっと早くプログラミングスキルを身につける方法もあります。

 

もっと学びを加速させるにはどうしたらよかというと
プログラミング教室に通って手っ取り早くプロから教えてもらう
というのがめっちゃ早いです。

プログラミングのプロから学ぶことで、
プロが考えていることをさらっと盗み取ることができるので、
プロの思考そのものをインストールすることができます。

プログラミング教室は
ネットで無料で拾ってきた情報や入門書などの書籍よりも
濃いレベルの知識、経験を積むことができ、
実務に必要なことだけにコミットして教えてくれるので、
めちゃくちゃ効率いいなーと思います。

 

僕は現場で学んだことが多かったですが、
出来ることならプログラミング教室に通ってから
実務に取り組みたかったなって思います笑

やっぱり実務では独学で通用しないところもあったし、
そういったことを事前に解決できるプログラミング教室は、
最強だなって思いましたね。

 

しかも、身につくまでの時間がめっちゃ早い。。

 

実務で技術を磨くのと、
プログラミング教室で技術を磨くのでは、
学びの速さは段違いだと思います。

技術の深さという点においては実務の方が上ですが、
学びの速さという観点ではプログラミング教室の方が圧倒的です。

だから僕はプログラミング教室に通っておけば、
もっと早く実力が身についたなと後悔していますし、
自己投資って大事だなって思いました。

 

僕はこのレベルに到達するのに、
数年を要してしまいましたが、
僕なんかよりも圧倒的に早く実力を身につけたいなら、
プログラミング教室はマジでオススメですね。

いずれはそういう教材とかも自分で作って、
自分のような失敗をしない人を増やしたいと思うし、
一緒に技術を志す人が増えたら嬉しいなって思います。

 

 

最後にまとめになりますが、
プログラミングを勉強するのに大事なのは、
『ゴール設定と学ぶべき対象を決め、プロのプログラムをパクる』
ことです。

ゴールを決めれば学ぶ対象で迷うことは無くなりますし、
プロのプログラムをパクることでプロが作ったアプリケーションを
自分の手で再現することができるので楽しくないわけがないのです。

プロのアプリケーションを自分の手で再現できると、
「おおおお俺ソフトウェア開発やってるぅぅぅぅぅ!!!!!」
ってなれてマジで楽しいです。

 

プログラマーには資格も学歴もいらないです。

実力だけでのし上がれるチャンスのある職業です。

フリーランスであれば生産性を高めること、
もしくは
より品質の高いプログラムを書くことで、
高単価の報酬を得ることができます。

そこを目指すにはある程度の勉強と実践は必要ですが、
稀少性の高い仕事をすることができるようになります。

 

 

プログラミングスキルを身につけて、
フリーランスで自由な働き方をするっていうのもいいですよね。

僕はそういった働き方に憧れを持ちます。

会社にいるといくら儲けても報酬には繋がらないし、
拘束時間もフリーランスより圧倒的に長いですから。。

 

これってスキルを身につけたら解決できると考えたら、
メチャクチャやる気湧いてこないですか?

そんな感じで最近の僕は燃えています笑

 

 

この記事を読んでプログラミングを勉強する方法に迷わなくなったら嬉しいですし、
同じ道を志す人が増えたら最高だなって思って書きました。

長文ながらも一つの価値を提供することができたら幸いです。

 

ここまで読んでいただきありがとうございます!
以上、わだっしーでした!

稼ぐエンジニアの考え方を凝縮した電子書籍をプレゼント中

僕はシステムエンジニアとして
年間6000万円以上売り上げています。


才能があったわけではないし、
昔から超がつくほど要領が悪いです。


そんな僕がプログラミングを習得したり、
心から尊敬する先輩や上司から影響を受けて、
エンジニアとして成長することができました。


酸いもあまいも経験してきましたが、
普通の人よりもたくさん失敗してきて、
それをガソリンにして結果にフォーカスしてきました。


その経験から
「ポンコツでもエンジニアになれる」
と思っているし、
成長して理想の自分を手に入れられると信じています。


そして、今は同じ道を志す仲間を
1人でも多く増やして、
エキサイティングでより生産性的な社会を
作っていこうと夢見ています。


そういった理念をもとに、
僕の知識や経験をふんだんに絞り出して、
エンジニアとして成長し、
結果を出すにはどうしたら良いかを
体系的にまとめた電子書籍を作りました。


僕のストーリーも交えて作っていて、
20分程度でサクッと読める内容なので、
もし興味があれば読んでみてください。


→電子書籍『エンジニアという生き方で人生をデザインする。』


メールアドレスを入力すれば、受け取れます。


最後まで読んでいただきありがとうございました。


もしこの記事が役に立った!と思われたら
SNS等でシェアしていただけるとすごく喜びます。
(すぐ下のボタンからシェアできます)