プログラマーに必要な適性とは?【現役プログラマーを徹底分析!】

プログラマーに必要な適性とは?【現役プログラマーを徹底分析!】 エンジニアの紹介
プログラマーに必要な適性とは?【現役プログラマーを徹底分析!】

こんにちは。

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

「そもそも自分はプログラマーに向いているんだろうか?」
「プログラミングを勉強しても、適性がなかったらどうしよう」

このように思っているのではないでしょうか?

プログラマーになってみたら、実は全然向いてなくてメチャクチャ辛かった、とか避けたいですよね?

そこでこの記事では、そんなあなたの悩みを解決するために以下の内容をまとめました。

この記事を読んで分かること
・プログラマーとして働く全ての人が持っているべき適性
・さらに「デキる」プログラマーが持っている適性
・プログラマーに向いていない人の特徴
・プログラマーに適性がない場合の対処方法

この記事を読むことで、プログラマーとして持っているべき適性がバッチリ分かります。
しかも、僕自身のプログラマーの経験を踏まえているので、信憑性も◎です

最後までしっかり読んで、あなたの進路選びの参考にしてくださいね!

  1. [結論]プログラマーに必要な適性は「最低限」と「持ってるといい」の2つに分かれる。全部を持っている必要はない!
    1. 「プログラマーとしてやっていくために、最低限もっておくべき適性」とは?
    2. 「もっとデキるプログラマーになるために、持っているといい適性」とは?
  2. [実体験]僕は、プログラマーになるための最低限度の適性はあると感じた
    1. 僕にプログラマーの特別な適性があったわけではない。
    2. 「このプログラマーはすごいな、ここまでできないな」という人もいた
      1. すごい人1: プログラミングや新しい技術に対する感度が非常に高い
      2. すごい人2: 感覚で、どういうプログラミングをすればいいか分かってしまう
  3. プログラマーとしてやっていくために必要な適性
    1. プログラマーとしてやっていくために、最低限持っておくべき適性と、具体的に必要なレベル
      1. 論理的思考能力
      2. コミュニケーション能力
      3. 作業やミーティングでの集中力
      4. 難解な問題に立ち向かえる忍耐力
      5. 長時間労働に耐えられる体力
    2. もっとデキるプログラマーになるために、持っているといい適性
      1. 新しい技術に興味がある
      2. 常に「より良い解決手段はないか?」を考えたくなる性格
      3. 感覚で、どういうプログラミングをすればいいか分かってしまう
  4. プログラマーに向いていない人
    1. 作業がいい加減な人
    2. 勉强が苦手な人
  5. 「プログラミングに適性がないけどプログラマーに興味がある!」という場合はどうしたらいいか?
    1. 独学をし、プログラミング自体に抵抗がないか?を調べる
    2. プログラミングスクールで、もう少し実践的な内容を勉强してみる
  6. 適性がない人はプログラマーになるのを諦めるべきなのか?
    1. もし、努力しても本当にダメだ・・・という場合
      1. 「ダメだ」と思うものがプログラミングに関する集中力だったり、論理的思考能力だったりする場合
      2. 「ダメ」だと思うものがコミュニケーション力による場合
  7. [最後に]もしプログラマーの適性が足りなかったとしても、頑張りでカバーすることができる
    1. Related Posts:

[結論]プログラマーに必要な適性は「最低限」と「持ってるといい」の2つに分かれる。全部を持っている必要はない!

[結論]プログラマーに必要な適性は「最低限持っておくべき」と「持ってるといい」の2つに分かれる。全部を持っている必要はない!

「プログラマーに必要な適性」と一言で言っても、内容は2つのタイプに分かれます。

プログラマーに必要な適性の種類
1: 「プログラマーとしてやっていくために、最低限持っておくべき適性」
2: 「もっとデキるプログラマーになるために、持っているといい適性」

この2つとなります。

このうち、これからプログラマーをめざすあなたが持っておくべき適性は、1つ目の「プログラマーとしてやっていくために、最低限持っておくべき適性」です

2つ目の「もっとデキるプログラマーになるために、持っているといい適性」を持ち合わせていれば、さらに活躍できる可能性は高まります。

ただ、2つ目の適性を持っていなくても心配することはありません。

今プログラマーとして働いている人の多くは、2つ目の「もっとデキるプログラマーになるために、持っているといい適性」を持ち合わせていません。

2つ目は、プログラマーになった後により高みを目指そう!と思ったときに見るくらいに思っておくとよいでしょう。

この2つを混ぜてしまうと、

「そんなすごいスキルはないし、適性もないから、自分はプログラマーとしてやっていけない・・・」

なんてことになってしまいます。

「プログラマーとしてやっていくために、最低限もっておくべき適性」とは?

プログラマーとしてやっていくために必要な適性やスキルのことを指します。

具体的には、以下のものです。

プログラマーとしてやっていくために、共通で必要な適性
・論理的思考能力
・コミュニケーション能力
・集中力
・忍耐力
・体力

これらの項目で求められる適性はそれほど高いレベルでなくても、実際に、プログラマーとしてやっていくことは可能です。

基本的には、日常生活が送れて他の仕事やバイトで働くことができていれば問題ないものばかりです。

なので、プログラマーとして働くために必要な適性は、実はプログラマーを目指すほとんどの人が持っています。

詳細は、この記事の後半で解説します。

「もっとデキるプログラマーになるために、持っているといい適性」とは?

一方、一般のプログラマーよりも成果を残せる、「もっとデキるプログラマー」になるためには、さらに追加の適性が必要です。

もっとデキるプログラマーは、普通のプログラマーにはない、以下のような適性を持っていることが多いです。

もっとデキるプログラマーが持っている適性
・新しい技術に興味がある
・常に「より良い解決手段はないか?」を考えたくなる
・「いかに手をぬくか」を考える
・感覚で、どういうプログラミングをすればいいか分かってしまう

これらの適性は、普通にプログラミングを勉强するだけでは身につきません。

どちらかというと小さい頃からパソコンを触っていることによる感覚や、育ってきた環境、生まれ持った才能などにも依存する部分が大きいです。

この記事では、これら2つの適性の内容を、僕がプログラマーとして働いていたときの経験も踏まえつつ、紹介していきます。

[実体験]僕は、プログラマーになるための最低限度の適性はあると感じた

[実体験]僕は、プログラマーになるための最低限度の適性はあると感じた

僕は新卒でメーカーに入社し、プログラマーとして仕事をしていました。
そこでは、携帯電話の端末自体のソフトウェアの開発や、スマホアプリの開発などを行っていました。

正直、社会人1年目、2年目くらいの頃は、社会人としてのスキルが足りないこともあり、かなり苦労しました。

先輩から、

「これも分からないの?この前言ったよね?」

なんてことを言われて、嫌な汗をかきながら仕事をしていた記憶があります。

先輩から注意を受けるたびに、

「自分にはプログラマーに向いてないんだ・・・。早く仕事辞めたい・・・」

なんて思っていました。

ところが、そこから数年間経験を積むと、他の人並みにプログラマーとしてやっていける実感を得ることができました。

他の人と同じくらいのレベルでプログラミングができるようになりましたし、簡単な設計も、一人で行うことができるようになりました。

また、誰かが書いたプログラムを見て、「このプログラムはひどいな・・・」というように、他の人のプログラミングのスキルを判断できるくらいのレベルに到達しました。

つまり、プログラマーになったばかりの僕に足りていなかったのは、プログラマーとしての適性ではなく、スキルでした

数年間プログラマーとして働いていく中でいろいろ苦労をしましたが、結果的には普通のプログラマーとしてやっていくことができました。

僕にプログラマーの特別な適性があったわけではない。

僕はプログラマーとしてやっていけるかもな、という実感を得ることはできたものの、あくまで淡々と努力をした結果です。

僕には、最初から他の人より優れた論理的思考能力があったわけでも、コミュニケーション能力があったわけでもありません。

むしろ、(すでに紹介した通り)新入社員の頃は落ちこぼれプログラマーでした。

ですので、これを読んでいるあなたが「自分には、特別すごい適性とかないんだよな・・・」と不安思っていても、あまり気にする必要はありません

それよりも、きちんとプログラミングスキルなど、プログラマーとして必要とされるスキルを身につけておけば、プログラマーとしてやっていくことは可能です。

「このプログラマーはすごいな、ここまでできないな」という人もいた

ある程度プログラマーとしてやっていけるという実感を持つ一方で、中には

「この人はすごいな。この人には到底及ばないな」

という人も数名いました。

その「すごい人」は、このスマホメーカーで働いていた時代に、一緒に仕事をしていた数名の先輩です。

すごい人1: プログラミングや新しい技術に対する感度が非常に高い

すごい人には、プログラミングや新しい技術が好きで、常に新しいプログラミング言語や技術を追いかけ続けている点が共通していました。

例えば、僕の1人の先輩は、以下のようなことをやっている人でした。

・プログラミング言語自体のバージョンアップがあればすぐに取り入れてみる
・AppleやGoogleなどのイベント(WWDCやGoogle I/O)があればその内容を確実にチェックする。
・家に帰ってからも、息を吸うようにプログラミングをしているというくらい、新しい技術が大好き

僕はプログラミングは楽しいと思っていましたし、仕事ではプログラミングをしていました。
一方その先輩は、プログラミングや新しい技術に対して僕よりもはるかに高い感度を持っていたのです。

これだけ感度が高ければ、必要な情報が入ってきますし、スキルが伸びていくのも当然です。

すごい人2: 感覚で、どういうプログラミングをすればいいか分かってしまう

また、一緒に仕事をしていたプログラマーの1人は、

・ソフトウェアの設計をするときに、どうすべきか分かる
・不具合を見て、(外れることもありますが)何が間違っているかが分かる

という能力を持っていました。

プログラムを開発する前の段階には、どのように作るか?を決める段階があります(「設計」と呼ばれることが多いです)。

彼は、その設計を一瞬でやってしまうのです。

僕のような平凡(どちらかと言うと落ちこぼれ気味)なプログラマーは、一生懸命考えます。

一方、彼はどのような設計がいいかを、これまでの知識や経験から一発で言い当ててしまうのです。

そんな彼を見て、僕は「天才か・・・」と思わざるをえませんでした。

また、不具合を修正するときも、普通の人が一生懸命原因を探す一方、彼に依頼するとすぐに問題点が見つかることが多々ありました。

本当にデキるプログラマーは、こんな適性も持っています。

この記事では、そんな僕自身や、周りにいるプログラマーの特徴など含めて、プログラマーに必要な適性を紹介していきます。

プログラマーとしてやっていくために必要な適性

プログラマーとしてやっていくために必要な適性

このパートでは、プログラマーとしてやっていくための適性を紹介します。

すでに触れた通り、適性には、

・プログラマーとしてやっていくために、最低限持っておくべき適性
・もっとデキるプログラマーになるために、持っているといい適性

この2つがあります。
この章では、この2つの詳細を説明します。

プログラマーとしてやっていくために、最低限持っておくべき適性と、具体的に必要なレベル

まずは全てのプログラマーが最低限持っておくべき適性を紹介したいと思います。

この適性は、「プログラマーとして仕事をする上で最低限必要なスキル」と言い換えてもいいかもしれません。

「最低限必要」という言葉の通り、それぞれトップレベルのスキルが必要とされるわけではありません。

論理的思考能力

プログラミングは、論理な考えの積み重ねです。
プログラムの状態や流れを追いながら、最適なプログラムを書く必要があります。

もし、この論理的な考え方ができないのであれば、プログラマーとして活動するのは厳しいでしょう。
とはいえ、プログラマーだからといってずば抜けた論理的思考能力が必要かと言われると、そうでもないと考えています。

論理的思考能力は、他の仕事でも必要になる能力であり、普通に生活しているだけでも十分に養われているからです。

もちろん、プログラマーになった直後はプログラマーの考え方に戸惑うかもしれません。
また、非常に複雑なプログラミングをするときは非常に大変な思いをするでしょう。

新人の頃は何をやっても難しいですし、難しい部分のプログラミングは誰がやっても難しいです。

さらに、プログラマーになった直後であれば同じチームの人に助けてもらいながら作業をすることが可能です。
なので、実際、あまり気にしすぎなくてよい部分でしょう。

プログラマーに必要な論理的思考能力
・基本的なプログラムの流れを追うことができる
・普通にプログラムを書くことができる
・他の人と会話が成立する
・流れや構成が複雑なプログラムの設計ができればより良い。ただし、プログラマーになった直後は他の人に助けてもらってもよい部分 (プログラマーとして働いている人にも、複雑な設計をするのが苦手な人は多い)

コミュニケーション能力

他の記事でも紹介していますが、プログラマーの仕事では、かなり、他の人と会話する機会があります。
実際の開発現場では、システムエンジニアもプログラマーも、毎日結構話す機会が多いです。
プログラミングが仕事のメインであるプログラマーも、多い時は1日に3時間も4時間もミーティングをすることがあります

プログラマーの仕事では、具体的には以下のようなコミュニケーションが発生します。

プログラマーがやる必要があるコミュニケーションの例
・システムエンジニアなど、立場の違う人からどのようなプログラムを書く必要があるかをヒアリング
・他のプログラマーとの分担を相談
・自分の作業の進捗を報告

コミュニケーション能力が足りないと、業務上必要なやりとりで効率が悪くなってしまうことがあります。
実際、僕の職場にもコミュニケーション能力があまり高くないために、日々のやりとりに苦労している人はいます。

とはいえ、プログラマーに必要とされるコミュニケーション能力は、社会人として他の仕事をやっていても普通に必要となるものです。

プログラマーとしてのコミュニケーションで大変な思いをする人は、ほぼ間違いなく他の仕事をしていても大変な思いをするでしょう。

僕の実体験上、「プログラマーだから特別に高いコミュニケーション能力が必要」ということはありません

そしてプログラマーの場合は、コミュニケーション能力がなかったとしても、(周りの人に負荷やストレスはかかりますが笑)周りの人が必要なだけ説明してくれたりするので、実は何とかなったりします。

とはいえ、コミュニケーション能力がない場合は、周りの人からはかなり警戒されます(笑)
その警戒されていることさえ、コミュニケーション能力がない人は気づかないのですが・・・。

プログラマーに必要なコミュニケーション能力
・他の人と会話のキャッチボールができる
・今、どのような作業状態で、どのような問題があるかを説明できる
・相手の言っていることや言いたいことを理解し、受け止めることができる

作業やミーティングでの集中力

作業やミーティングでの集中力

プログラマーの作業は、間違いなく集中力を要求されます

例えば他の人とミーティングをしているときは、1〜2時間集中している必要があります。

また、実際にプログラミングをやっているときも、1〜2時間くらいは集中して作業をしないと、思考が断絶されてしまい、非常に効率が悪いです。

とはいえ、このくらいの間集中をするのは、他の仕事や家事をやっていても同じではないでしょうか?

例えばゲームをやっているときは、誰でも1〜2時間集中しているでしょう。
また、料理をするときもそのくらいの時間は集中していそうです。
車の運転であっても(途中で音楽を聴いたりしているかもしれませんが)同じくらいの時間は集中力が必要です。

ですので、プログラマーだから特別高い集中力が必要、ということはあまりないように思います。

また、営業の担当などと違い、プログラマーが何時間もミーティングをすることはあまりありません。

プログラマーは1日2, 3個のミーティングに、午前中1つ+午後1つ出席するような参加の仕方が一般的です。

また、そのミーティングでも自分が100%集中しておくべき内容は少ないのが実態です。

プログラマーは、割と自分の関係するところだけ発言する、というミーティングへの参加の仕方をすることが多いからです。

どちらかというと、そのミーティングの司会をしているシステムエンジニアの方が、(特にミーティングが連続するときは)集中力が必要となります。

プログラミングの作業においても、自分のペースで進められるので、「疲れた」と思ったら5分や10分の休憩は自由にとることができます。

こういった内容をまとめると、「プログラマーに集中力は必要ではあるものの、何時間も継続した集中力は必要ない」と言えるでしょう。

プログラマーに必要な集中力
・ミーティングの間の1時間〜2時間くらい、集中できること (ただし、そのミーティングのうちプログラマーに関係するのは一部分だけだったりするので、実際に集中しているのはもっと短時間でもよい)
・プログラミングの作業をしている1〜2時間くらい集中できること (もし疲れたと思ったら比較的自由に休憩をとることはできる)

難解な問題に立ち向かえる忍耐力

プログラマーの作業は、忍耐との戦いです。

例えばプログラマーになった直後は、周りについていけない状態に焦ることもあるでしょう。
ただ、焦ってもスキルが身につくわけではないので、粘り強く勉强を続ける必要があります。

また、プログラミング中にエラーが起きた場合、丸一日経ってもそれが解決できない・・・なんてこともあります。

ふと気付くと夕方になっており

「今日一日、何をしていたんだ・・・」
「予定していた仕事が全然終わっていない・・・」

なんてことに気づき、焦ってしまうこともあります。

仮にこういう状態に陥ったとしても、プログラマーである以上、忍耐強く目の前の不具合を処理する必要がありますし、淡々と仕事をしていく必要があります。

とはいえ、こういった問題は、受験勉強だったり、プログラマー以外の仕事をしていても発生するのではないでしょうか?

「勉强をしているけど、この問題がなかなか理解できない・・・」
「英単語が覚えられない・・・」
「営業として仕事をしてるけど、なかなか受注できない・・・」

それぞれ内容は異なりますが、勉强や仕事をする上で、忍耐力は何かしらの形で必要になるのではないでしょうか?

もしあなたがここまで学校の勉强や受験、何かしらの仕事をしたことがあれば、そこで培った忍耐力はプログラマーになった後も活かすことができます

プログラマーに必要な忍耐力
・目の前の問題が難しくても、投げ出さずに辛抱強く解決する忍耐力が必要
・特に不具合が解決できずに時間が経過していくときなど、焦ることもある。それでも耐えられる忍耐力が必要。
・とはいえ、勉强や他の仕事でも似たような忍耐力は必要とされるので、プログラマーだけが何か特別な忍耐力が必要というわけではない。

長時間労働に耐えられる体力

長時間労働に耐えられる体力

プロジェクトの締め切り直前などの繁忙期には、プログラマーの稼働時間はどうしても伸びてしまいます。

ソフトウェア開発の性質上、開発のしわ寄せは開発後半のプログラミングの部分に寄ってきますし、締め切り直前に行うテストで思わぬ不具合が発覚した際、バタバタするのが原因です。

特に忙しいプロジェクトだと、夜の10時〜11時くらいまで働くこともあるでしょう。
忙しい期間はプロジェクトによってまちまちですが、短いと1ヶ月くらい、長いと3ヶ月〜半年くらいになることもあります。

つまりプログラマーになる場合、ある程度の期間、夜遅くまで働く可能性があることを知っておいた方がよいかもしれません

一方で、いわゆる「ブラック企業」とか「デスマーチ」と呼ばれる、家に帰れないような会社やプロジェクトは、一時代前と比べて随分減ってきているように思います。

これは、日本全体で推進されている働き方改善が主な理由です。

そして、プログラマーの労働時間が他の職業と比べて特に長いわけではないかと思います。

僕の知っている学校の先生をやっている友人は、朝の7時〜夜の9時まで働いていると言います。
また、看護師などの職業は夜勤があることもあり、実際に働く時間よりも体力が削られてしまいます。

一方で、プログラマーは夜の遅い時間まで働くことはありますが、プロジェクトの繁忙期に限定されるケースがほとんどでしょう。
また、プログラマーを雇っている企業は一般的に始業時間が遅く、平均すると朝の10時くらいから仕事が始まる会社が多いようです。

ですので、プログラマーに体力が必要なのはもちろんですが、割と一般的な企業に勤めることができる体力があれば、プログラマーとして十分やっていけるということになります。

むしろ求められるのは、「一日中パソコンの前に座っている」体力かもしれません。

特にこれまで営業で外回りをしていた人は、一日中身体を動かすのが前提になっています。
一方、プログラマーは一日中パソコンの前にいるので、使う筋肉や身体で疲れる箇所が全然違います。

これまでデスクワークをあまりやったことがない人は、「ずっとパソコンの前に座っている」という体力で苦労するかもしれません。

とはいえ、これもしばらくプログラマーをしていれば少しずつ慣れてきます。ですので、あまり心配する必要はないかと思います。

プログラマーに必要な体力
・一般的な企業に勤められるだけの体力があれば問題ない。
・ただし、プロジェクトの繁忙期は夜の10時〜11時くらいまで働けるだけの体力は必要。
・これまでデスクワークをあまりやったことがない人にとっては、「一日中パソコンの前に座っている」ことの方がつらい可能性がある。

もっとデキるプログラマーになるために、持っているといい適性

もっとデキるプログラマーになるために、持っているといい適性

ここまでは、プログラマーとして仕事をするために最低限持っておくべき適性と、具体的に必要なレベルを紹介してきました。

基本的には、ここまでで説明した適性を持っていれば、十分にプログラマーとしてやっていくことはできます。

それは、特に優れた適性を持っていないプログラマーだった僕が実証しています。

この章では、さらにデキるプログラマーになるために必要な適性を紹介していきます。

改めてですが、この章で紹介する適性は、持っていなくてもプログラマーとして仕事をすることは可能です。
これらの適性を持っていることで、プログラマーとして更に高い成果を残せる可能性がある、という位置づけになります。

新しい技術に興味がある

優秀なプログラマーは、最先端の技術に興味があり、それを取り入れている人が多いように思います。

例えば僕の先輩の場合、新しく出てきたプログラミング言語やフレームワークなどに興味があり、常にアンテナを張っていました。

その人は、とにかく新しいプログラミング言語やフレームワークを自分で触ってみないと気がすまないような人でした。
新しい技術を触ってみては、次の日に会社で目を輝かせながらその話をするような人です。

一方、普通のプログラマーの日常の業務であれば、そこまで新しい技術に追従しなくても何とかなります。

新しい技術はまだ不具合や完成していない部分も多く、いきなり新しい技術を使うと、開発中にその不具合を引き当ててしまい、プロジェクト進行が遅れたりする危険性があるためです。

プログラミング言語やフレームワークは、一度に全ての機能が完璧な状態でリリースされることはありません。

一般的に、新しい技術は不具合を含んだ状態で初回のリリースが行われ、その後少しずつ修正のリリースによって品質が向上します。

ですので、一般的なプログラマーの業務でそういった新しい技術を取り入れるのはあまりありません。

ですので、実は普通のプログラマーとしてやっていく分には、実は最先端の技術にあまり興味がなくても問題ありません。

とはいえ、最先端の技術を知っていることにより、そのスキルの幅が広がります
結果的に新しい技術に興味がある人は優秀なプログラマーであることが多いです。

常に「より良い解決手段はないか?」を考えたくなる性格

何かの機能を開発するとき、目的を実現するためのプログラミングの方法は1つではありません。

プログラマーは、やりたいことに対して、常に複数の解決案のうちから「より良い」解決案を選択することになります。

普通のプログラマーであれば、1つ解決案が見つかったらそのやり方でプログラミングを開始したくなります。

一方、優秀なプログラマーは、やり方が見つかってもすぐにその方法でプログラミングを開始することはしません

普通の人以上に、普通の人が思いつかないような様々な角度から「どのように開発するとより良いプログラムになるか?」を考えます

そんなこだわりの結果、時折非常に良い解決方法が見つかることがあります。
その解決方法は、作っているシステムやサービスの品質や競争力を一気に上げてくれます。

僕の体験談
僕が過去に携わっていたプロジェクトで、どうしてもネットワークの転送速度が上がらない問題がありました。
どうやっても転送速度が上がらず、プロジェクト内では半ばあきらめムードが漂っていました。

ただ、とある優秀なプログラマーが転送をしているプログラムの内容を隅々までチェックした結果、転送速度を5倍以上、高速化することができる箇所を発見しました。
優秀なプログラマーが1人いることで、システム全体の品質が格段に良くなった例です。

感覚で、どういうプログラミングをすればいいか分かってしまう

感覚で、どういうプログラミングをすればいいか分かってしまう

特に優秀なプログラマーと話していて目立つのが、「解決案を考えるのが早い」という点です。

僕の周りにいたプログラマーの例でも紹介しましたが、デキるプログラマーは、

・ソフトウェアの設計をするときも、適切な設計を素早く行える
・不具合を見つけるときも、どこに問題があるかをすぐに見抜くことができる

こういったことが可能です。

普通の人が時間をかけてコツコツと検討・確認をする一方、デキるプログラマーは一瞬でこの作業を行うことができます
あたかも、彼らが天才的なひらめきによってプログラマーの仕事をやっているようにさえ見えます。

そして作業をしたデキるプログラマーは決まってこう言うのです。

「だって、この方法がいいよね?」

って。

彼らはおそらく(僕も感覚的にプログラマーの仕事をしたことがないのでわかりませんが)、これまでのたくさんの経験がベースになって、素早く作業を進めることができていると考えられます。

また、頭の中で超高速にいろいろなパターンを検討して、最適な一手を導きだしているのかもしれません。

とはいえ、一般プログラマーからすると、

「え、何故その答えがすぐ出るの!?」

とびっくりするくらい、答えを導き出すのが早いのが特徴です。

普通の人が、どのような設計にするのか?どのようなプログラムの流れにするのか?を綿密に検討する一方、優秀なプログラマーはあまりしっかりと検討することなく、方向性を導き出すことができます。

これは、作ろうとしているシステムの種類や傾向が頭に入っていたり、彼らの過去の膨大な経験に基づく感覚だったりするんだと思います。

彼らは、何かを検討するときは、「だいたいこんな感じの方向性じゃない?」ということをすぐに導き出すことができます。

回答を一発で導き出すことができることで、余計な検討をする手間を減らすことができますし、何より迷いがありません。

実力に裏打ちされた「プロとしての感覚」のようなものを、会得していると考えられます。

ちなみにこのレベルに到達するには、10年以上プログラマーとして働いている人のうち、ごく一部の人だけのようです。
僕のまわりのプログラマーでも、このレベルの人はあまりいません。

プログラマーに向いていない人

プログラマーに向いていない人

続いて、ここまで紹介したような適性を持っておらず、プログラマーに向いていない人の特徴を紹介したいと思います。

作業がいい加減な人

システムやサービスの開発作業は、非常に緻密な作業が多く発生します。

論理的に矛盾がないかを確認したり、より良い解決方法がないか?を見つける必要もあります。

作業がいい加減な人は、そういった緻密な作業と正反対にいる人となります。

「まあ、こんな感じでいいかな」

という感じで、目の前の作業にこだわれない人は、プログラマーに向いていないと言えるでしょう。

勉强が苦手な人

この記事で紹介したように、「常にプログラミングの勉强をすべき」とは思いません。

僕も、そこまでの努力ができない人がいることも理解しています。

ただ、IT技術の進化は非常に早く、プログラマーになった後も何かしらの形で勉强を続ける必要があります

「勉强は絶対したくない!」

という人は、プログラマーではなく、もっと動きが遅かったり、定形の作業だけを行う仕事の方が向いているでしょう。

「プログラミングに適性がないけどプログラマーに興味がある!」という場合はどうしたらいいか?

「プログラミングに適性がないけどプログラマーに興味がある!」という場合はどうしたらいいか?

もしあなたが、

「どうやら自分にプログラマーの適性がないようだけど、一度プログラマーをやってみたい」

と思っているのであれば、以下の2つの行動をやってみることをオススメします。

独学をし、プログラミング自体に抵抗がないか?を調べる

まずは、プログラミング自体に抵抗感がないか?エラーが出たときに忍耐強く解決できるか?を確認する意味で、独学でプログラミングを勉强してみるとよいでしょう。

もしプログラミング自体に抵抗感があったり、エラーが出たときに自分で解決方法を調べるのがとてつもなく嫌だ・・・!と思うのであれば、プログラミングはオススメしません。

実際にプログラマーとして働き始めると、プログラミングを勉强しているときよりも、圧倒的に大変な状態になります。

プログラミングスクールで、もう少し実践的な内容を勉强してみる

独学をやって「何とかやっていけそうだ・・・」と分かったら、プログラミングスクールに通ってみるのがよいでしょう。

プログラミングスクールでは、プログラミングの勉强を講師に教えてもらいながら進めることができます。

講師との会話では、あなたの思っていることや困っていることを伝える訓練にもなります。
また、講師の言っていることを正しく理解してプログラミングに反映する必要もあります。

こういった独学では得られないスキルや経験ができるのが、プログラミングスクールの大きなメリットです。

特に「興味のあるプログラミング言語を触ってみたい!」という場合は、TechAcademy(テックアカデミー)で開催しているコースから選んでみるのがよいでしょう。

完全初心者からWebサービスの開発、より実践に近いコースまで、様々なコースが開催されています。
いろいろ見てみることで、あなたのやってみたいコースが見つかるでしょう。

ちなみに、プログラミングスクールはとにかくたくさんあって分かりづらいかと思います。

そこで、僕のプログラマーの経験を踏まえて、TechAcademy以外のオススメのプログラミングスクールをまとめました。

僕の経験を踏まえて「ここなら安心」と思える場所を選んでいるので、是非とも参考にしてみてください。

徹底比較した記事は、以下にまとめています。

適性がない人はプログラマーになるのを諦めるべきなのか?

適性がない人はプログラマーになるのを諦めるべきなのか?

ここまで読んでくださったあなたは、もしかすると「プログラマーになりたいけど、プログラマーの適性がないかも・・・」と思っているかもしれません。

例えば、極端に論理的思考能力がなかったり、コミュニケーションが苦手だったり。

ただ、安心してください。

プログラマーに必要な能力は、訓練すれば伸びていきます。
社会人になった直後は落ちこぼれだった僕が言うので間違いありません。

もちろん他の人よりも多少大変な思いをするかもしれませんが、継続して頑張っていればいつか、他の人を追い抜くことができます。

もし、努力しても本当にダメだ・・・という場合

もししばらく努力をしてみて、「もうどうしてもダメだ・・・」という場合の緊急避難方法もお伝えしておきます。

「ダメだ」と思う内容によるので、2つに場合分けをして説明します。

「ダメだ」と思うものがプログラミングに関する集中力だったり、論理的思考能力だったりする場合

この場合は、プログラマーとして最低限持っておくべき適性が足りていないことだと推測されます。

そんなあなたには、ちょっと営業よりの仕事、例えばシステムエンジニアやプロジェクトマネージャーなどの仕事をしてみることをオススメします。

もちろんシステムエンジニアもプロジェクトマネージャーも集中力や論理的思考能力能力は必要です。

ただ、プログラミングで使うものと若干異なるため、もしかするとシステムエンジニアやプロジェクトマネージャーの方がしっくりくるかもしれません。

「ダメ」だと思うものがコミュニケーション力による場合

この場合は、プログラミングなどの作業自体ではなく、他の人との会話で苦労している状態だと推測されます。

そんなあなたには、他の人と話さなくて済むような、人材派遣会社のプログラマーをオススメします。

自社開発をしているプログラマーの場合、どうしてもそこの社員と話したり、業務委託で来てもらっているプログラマーとの会話が発生します。

一方、人材派遣会社のプログラマーであれば、作業をお願いされるだけの場合が多くなるため、必要なコミュニケーションの量が減ります。

結果的に、「決められたことをひたすらプログラミングする」という状態になれたりします。

もし「どうしてもコミュニケーションがうまくいかない」ということでしたら、自社開発にこだわらず、人材派遣会社のプログラマーを目指してみるのもよいでしょう。

[最後に]もしプログラマーの適性が足りなかったとしても、頑張りでカバーすることができる

[最後に]もしプログラマーの適性が足りなかったとしても、頑張りでカバーすることができる

この記事では、プログラマーに必要とされる適性を紹介してきました。

ここまで読んでくださった人の中には、

「プログラマーの適性なんてない・・・」

と思うかもしれません。

もしそうだったとしても、心配しなくて大丈夫です。

もし適性があまりなかったとしても、努力をしてスキルを高めることで、カバーすることも可能です。

諦めずにプログラミングの勉强をし続けるのが最も重要です。

この記事を読んでくださったあなたがプログラマーとして活躍できるのをお祈りしております。

この記事は以上です。
ここまで読んでくださり、ありがとうございました!

コメント

タイトルとURLをコピーしました