プログラミング

独学でプログラマーになるのに必要なスキルはこの3つ

こんにちは、ボムクン(@bombkun1)です。

独学でプログラミングを学び、プログラマーとして就職してから13年が経ちました。

今回の記事は独学でプログラマーになるために必要なスキルは何か?という内容です。

結論から言うと、以下の3つのスキルを身に付ければ独学でプログラマーになれます。

  • プログラミング言語の知識
  • 論理的思考力
  • コミュニケーション能力

この3つについてなぜこのスキルが必要なのかを中心にお話していきます。

プログラミング言語の知識

まず必須なのがプログラミング言語の知識です。

ソフトウェアは全て何かのプログラミング言語で作られている

プログラマーという職業はiPhoneアプリのようなソフトウェアを作りますが、ソフトウェアを作る時には必ず何かしらのプログラミング言語が必要になります。

プログラミング言語というのは1つでは無く何百種類も世の中にあります。言わば私たちが話す言葉が日本語や英語、フランス語といくつも種類があるのと同じです。

例えば具体例を出すと、私たちが日々のつぶやきを投稿するTwitterはJavaというプログラミング言語で構築されています。また、写真投稿SNSのInstagramはpythonというプログラミング言語を採用しています。

このようにソフトウェア開発をする上でプログラミング言語というのは必須なのです。

企業は即戦力が欲しい

企業というのは基本的に即戦力の人材を求めます。そのため、即戦力ではないという時点で大きなマイナススタートになります。

プログラミング言語はソフトウェア開発をする上で必須のスキルなので、それを知らないというのは即戦力にはなれません。

よほどのポテンシャルがあれば別ですが、企業もヒマではありmさえん。そのような即戦力では無い人材に0から教育するなんてコストはかけたく無いので、まず採用されないでしょう。

必須なスキルを持っていない時点でサヨナラってことです。

論理的思考力

プログラミング言語の知識の次に必要なのが論理的思考力です。

論理的思考力というのは言わばカンタンに言うと、筋道を立てて矛盾なく考える力のことで、これがある人と無い人では大きな違いがあります。

論理的に作られたプログラムはバグが少ない

プログラミングというのはとても自由度が高いので、人によってコードの書き方は千差万別です。

とりあえず動けば良いやという程度でテキトーにコードを書く人もいれば、仕様をしっかりと理解し今後の保守性等も考慮して論理的にコードを書く人もいます。もちろんどんな書き方でも最終的に動けばお客さんに納品できます。

しかし、コードの書き方の違いで大きく差が出るのがバグ発生率です。

仕様をよく読まずとりあえずで書いた非論理的なコードは論理的に書かれたコードよりもバグが発生しやすいです。考えずに筋道を立てずに書いていないなら当然ですよね。

バグ修正にはコスト(時間、お金)がとてもかかるので企業としてはとても大きな負担になるため嫌がります。

レビューがラク

ほとんどの企業ではプログラミングでコードを書いた後にはコードレビューというのをやります。

コードレビューというのはこれは言わば自分がプログラミングした内容を関係者にチェックしてもらう場です。プログラミングを担当した人は変更内容を説明したり、なぜこのような変更をしたのかをカンタンに説明する必要があります。

論理的な人の場合は自分がしっかり説明できる状態でプログラムを組んでいるのでとてもレビューがラクです。指摘をしても理由をふまえてなぜそのように書いているか答えてくれます。

非論理的な人の場合は大変で、指摘してもなぜそのように書いたのか書いた本人が説明できないことが多々あります。そのようなことがあると、レビューアーとしてもOKを出せないし、最悪コード書き直しということにもなります。

非論理的だとこのようにレビュー時もとても苦労します。

コミュニケーション能力

論理的思考力の次に必要なのはコミュニケーション能力です。

プログラマーはPCに向かって一日中作業するイメージだから、コミュニケーション能力なんて不要では?と思った人はその考えを改めましょう。

ソフトウェア開発には必ず関係者がいる

私は今まで以下のようなソフトウェアの開発をしてきましたが、いずれも多くの関係者がいました。

  • 自動車の組み込みソフト開発
  • 精密機器の制御PCアプリ開発
  • 音声信号処理の制御PCアプリ開発

どの案件でも関係者として他のプログラマーだったり、仕様を調整するSE・作ったソフトを販売する営業担当がいました。つまり、一人でソフトを作って売るのは難しいってことです。

このように関係者がいる場合、必ずコミュニケーションが発生します

具体例をあげて話すと、プログラマーがコードを書いている時に仕様のバグを見つけた場合はSEに対して顧客との仕様調整依頼を出します。その際に、プログラマーは以下のような点をSEに対して説明する必要があります。

  • どの仕様が問題か
  • どのように変更すれば解決できるか

このような時にコミュニケーション能力が無いプログラマーの場合、SEに対して話した内容が伝わらなかったりだとか、誤解を与えてしまう等の状態になりかねません。

そうすると開発作業の手戻りや顧客からの信頼失墜等にもつながるので、企業としては嫌がります。

コミュニケーション取れた方が品質が上がる

コミュニケーション能力のあるメンバーで開発した方がソフトウェア品質としても上がります。

プログラムというのは1つ1つの仕様がとても細かく、且つとても仕様も多いのが特徴です。そのため、頻繁にSEや他の開発メンバーに対して仕様を確認したり質問しなければいけない場面があります。

それなのに、もし開発メンバーにキレてばかりのコミュニケーションの取りにくいメンバーがいたらどうでしょうか。当然ながら確認したり質問したりしにくいですよね。

そうなると確認や質問をせずに思い込みで開発を進めるメンバー等も出てきます。

その結果、仕様の不整合でバグが大量に出るという事態につながります。企業にとってコスト増なので嫌がられます。

まとめ

今回は「独学でプログラマーになるのに必要なスキルはこの3つ」というテーマでお話してきましたが、いかがでしたでしょうか?

プログラミング言語、論理的思考力、コミュニケーション能力をあげましたが、どれか苦手な人でもあきらめる必要はありません。いずれのスキルも時間をかければ誰でも身に付けれます。

またプログラマーとして働いてからも各々のスキルはUPしていくので、基礎を学んでとりあえずプログラマーとして働き始めるというのも良いでしょう。