こんにちは。
この記事を読んでいるあなたは、

・プログラマーにどうやったらなれるの?
・プログラマーになるための具体的なスキルは?
・とりあえずプログラミングを勉強したらプログラマーになれるの?
このような悩みを持っているのではないでしょうか?
確かに、プログラミングを勉強するためのノウハウはいろいろなところで扱われています。
ただ、その後どうやってプログラマーになれるか?というところまでの説明はあまりないように思います。
そこでこの記事では、プログラミングを勉強するだけではなく、そのあとどうしたらプログラマーになれるか?というようなガイドを、具体的なステップを踏まえて説明したいと思います。
この記事を読んで分かること
この記事を読んでいただければ、下記のようなポイントが分かります。

・プログラマーが扱う「プログラミング」言語の概要
・プログラマーの仕事の内容や求められるスキル
・プログラマーになるための具体的なステップ
このいずれも、プログラマーになるために、そしてプログラミングを勉強する前に必要な知識なので、この記事で勉強していきましょう!
説明の流れ
この記事では以下の流れで説明していきたいと思います。

・プログラミングについて理解
・プログラマーの仕事内容に関して理解
・プログラマーに求められるスキルに関して理解
・プログラマーになるための具体的なステップを理解
それでは、早速内容に入ります。
プログラミングについて理解
まずは一番前提となる、プログラミングに関してです。
プログラミングとは
この世の中で動いているものには、かなりの確率で使われていると思って間違いないです。
例えば、

・あなたが使っているスマートフォン
・銀行のATM
・自動車
などなど、本当に多くの場所で使われています。
そういった機会やシステムは、人間の言葉を理解することができませんよね?それなのに、作っている人、あるいは使っている人の意図通りに動いてくれます。
これは、作っている人が「プログラミング」を行い、そのように指示をしているからです。
つまり、「プログラミング」は、人間の言葉を理解できない機会に何かを教えるための手段、と言うことができます。
プログラミングでできるもの
今回は、初心者のあなたがいきなり自動車を作るわけにも行かないと思うので、その中でもとっつきやすい、以下2つのプログラミングを紹介したいと思います。
・スマホアプリ系
Web系は、今あなたがこの記事を読んでいるように、ChromeやSafariなどのブラウザ上で動くアプリのことです。
さらに、このWeb系のプログラミング言語の中でも大きく2つに分かれて、
・バックエンド
というものがあります。

フロントエンドは、英語だとFront-endと記載します。Frontは「前」という意味があります。
一方でバックエンドは、英語だとBack-endと記載します。Backは「後」という意味があります。
Web系のプログラミング言語
フロントエンドエンドでは、あなたを含む、エンドユーザ(利用者)に見える画面のレイアウトやデザイン、そこでの細かい動きを作る役目を果たします。
バックエンドでは、フロントエンドで必要な情報を提供したり、何かデータを、データベース(DB)と呼ばれる格納庫に保存したり取り出したりするのが主な役目となります。
フロントエンドとバックエンドとも、それぞれ書けるプログラミング言語は複数あります。
なので、プログラマーは細かくやりたいことや、そのプロジェクトの置かれた状況などに応じて、使う言語を決めることになります。
スマホアプリ系のプログラミング言語
一方でスマホアプリは、iPhoneやAndroid上で動くアプリのことです。
それぞれいろいろな言語で書かれることがありますが、今の主流はSwift (iPhone)とKotlin (Android)になっています。
スマホはアプリはスマホ上で動くため、ウェブよりも動く環境がリッチであることが多いです。なので、結果的により派手なエフェクトなどを使いやすい傾向にあります。
なので、複雑な動きやエフェクトを必要とするアプリは、スマホアプリで実装されることが多いです。

※厳密にはNativeでC++が・・・みたいな話がありますが、ここでは割愛します。
プログラマーの仕事内容に関して理解
プログラマーの仕事は、大きく
・プログラムやシステムの方針を決める
という2つに分かれます。
プログラムを書く
これがまさに「プログラミング」と言われている部分になります。
プログラミング自体の詳細はすでに記載しているのでここでは割愛しますが、一言で「プログラムを書く」と言っても、
・プログラムが問題ないかを確認する/修正する
という2つに分かれます。
「プログラムが問題ないかを確認する/修正する」のところを「デバッグ」と呼んだりします。

この「デバッグ」に関しては、プログラマーに必要なスキルとして、この記事の後半でもう少し説明します。
プログラムやシステムの方針を決める
この方針を決める作業のことを「設計」といったりします。
この設計をするには、
・今後どのような機能に対応しないといけないのか?という方向性を把握出来ている
というスキルや知識が求められるため、比較的経験やスキルの高いエンジニアが担当することが多くなります。

このように、システムの方向性や前提設計をする人を、「アーキテクト」と呼んだりします。
プログラマーに求められるスキルに関して理解
続いて、プログラマーに求められるスキルに関して説明したいと思います。
突然ですが、質問です。
プログラマーに求められるスキルって、どんなものがあるでしょうか?

「プログラマーって言うくらいだから・・・プログラミングをするスキルかなぁ。。」
「あとはそれをロジカルに組み立てるスキルも必要そう」
こんな感じでしょうか。
間違いではないですが、これらはプログラマーに求められるスキルの全体像の50%くらいになります。
残りの50%は(もちろんプロジェクトやその人が置かれた環境にもよりますが)、下記のようなスキルが必要となります。

・デバッグスキル
・設計スキル
・コミュニケーションスキル
ここからは、これらのスキルをかいつまんで説明していきたいと思います。
デバッグスキル
プログラミングは、ソースコードを書いている時間より、そこに書かれた問題を解決している時間の方が圧倒的に長くなります。
不具合を簡単に修正すればいいわけではなく、周りのプログラムに対する影響などを調べる必要があるためです。

開発序盤は1日に1000行くらい書けたりするのですが、後半になったり、大きいプロジェクトになったりすると、1日確認した結果、修正できるのが1行だけ、なんてこともあります。
このような
「プログラムの動きが何かおかしいときにそれを修正する」ことを「デバッグ」といい、このデバッグスキルはそれぞれのプログラマーに強く求められます。
1行ずつプログラムの流れを読んだり、それぞれのコードが他に与える影響を確認するなどの確認を行ったりする作業がメインになります。
かなり地味な作業ですが、プログラマーの作業としては一番と言ってもいいほど、重要な作業です。

デバッグ用にも色々なツールがあったりするので、そこを使いこなすのも、割と重要なスキルの1つだったりします。
設計スキル
これは、ソフトウェアの全体像を描くスキルになります。
例えば新しいプロジェクトが開始されるときにいきなりプログラミングをやり始めると、全体像が分からぬまま、特定の一箇所からいきなり作り始めることになります。
その結果、

:あのソースコード、こっちでも使うから共通化しておいた方がよかった
・この部分、今作ってるところに悪影響を及ぼしている
というようなことが発生します。
なので、ソフトウェアを作るときは、いきなりプログラミングをせずに、「設計」と呼ばれる作業を行います。
この「設計」をプログラマーが行うのか、「システムエンジニア」と呼ばれる人がやるかは会社やプロジェクトによりますが、場合によっては必要となるスキルです。
ここで間違った設計をすると、後々、プログラム同士が競合してしまい不具合が発生することがあったりするので、この設計も、責任の重大な作業だと言えます。
コミュニケーションスキル
これは意外に思われるかもしれませんが、プログラマーも人との会話は発生します。
もちろん、営業職の人や、プロジェクトマネージャーの人のように、「人と話すことが仕事」の役割の人よりは話す頻度や量は落ちますが、
・今、他の人にやってほしい部分は何なのか?
・クライアントの言っていることを解釈する
などをロジカルに説明したり、人の言うことを理解したりする必要があります。
なので、プログラマーとしてやっていく場合であっても、最低限のコミュニケーション能力は必要となります。
プログラマーになるための具体的なステップを理解
それではここから、未経験からプログラマーになるための具体的なステップを説明していきます。
環境を整える
まず、プログラミングをするために必要なパソコンは、大きくMac, Windowsの2つに分かれます。
最初は、どちらから初めても構いません。
おすすめは、「すでにパソコンを持っている人は、そのパソコンを使う」です。
仮に2〜3万円の比較的安いパソコンであっても、それほどプログラミングをしない限りは問題なく動きます。
そして、仮に今後プログラミングの学習が進み、もっと本格的にプログラミングの勉強をしたくなったときに、MacBook Proなどの高いパソコンを買う、でよいと思います。
なので、逆にいうといきなりMacBook Proなどの高いパソコンを買う必要はありません。

これは、最初はそこまで重い処理をするプログラムを書くことが少ないこと、そして万が一挫折したときのダメージを軽減する意味を持ちます。
絶対に挫折しないぞ、という方はいきなり高いPCを買ってもよいかもしれません。
もしパソコンを持っていなくてこれから買うという場合は、Macをおすすめします。Windowsの方は環境設定がやや複雑なためです。
勉強する / 自分の作りたいものを作る
そして、ここが一番重要な、プログラミングの勉強です。
プログラミングの勉強は、

1: ドットインストールやProgateで自分の勉強したいプログラミング言語を1回〜2回程度回る
2: サンプルアプリをベースに、自分の作りたいものを作る
3: ゼロベースで自分の作りたいものを作る
という進め方をオススメします。
このときに大事なのが、
です。完璧を目指した瞬間に、そこで手が止まっています。
イメージとしては、半分くらいしか分かっていないなぁ・・・というくらいで次に行ってもらえれば大丈夫です。
このあたりの詳細に関しては、下記の記事にまとめています。
どこかの企業に転職する or フリーランスとして案件を獲得する
そして、1つ〜2つくらい自分の作りたいものを作った後は、早速、プログラマーとして転職活動をしてみたり、フリーランスとして案件獲得にチャレンジしてみましょう!
やはり、実際のリアルな環境だと、一人 (ここではプログラミングスクールも含む)で勉強しているよりも、圧倒的にリアルで高密度な情報に触れることができます。
なので、多少自身がないかも・・・というレベルでも実際に働き始めることをおすすめします。

もちろん、周りの人のレベルの高さにショックを受けることもあるかと思います。
ただ、プログラマーとして働き始めたタイミングでは誰でも近いショックを受けます。
どうせ受けるのであれば、早めに受けてしまい、出来る限り早くスキルをつけるのがおすすめです。
最後に
ここまでで、プログラミングについての説明から始まり、準備すべき環境や必要なスキル、勉強方法などに関して説明してきました。
もちろん詳細は細かい話がありますが、まずは「プログラマーになりたい!」と思ったら、このくらいの全体感を持ってプログラミングの勉強をするのをおすすめします。
この記事を読んだ方が、実際にプログラマーになって活躍できる日が来ることを願っています。
この記事は以上です。
ここまで読んでくださり、ありがとうございました!
コメント