英語とプログラミングできたらいいなぁと思って夢を見てフィリピンに行き、

そしてプログラマーを夢を見てIT企業に転職しました。



ですが、自分の意思で入社した企業を6ヶ月で退職し、プログラマーとして生きることを諦めました。
今回は、そんな私がプログラマーに向いている人・向いてない人について考えていきたいと思います。
と思っている方や
と思っている方がこのページを見てくれているのかなぁと思っています。
なので、そういった疑問を抱いている人の参考になればとても嬉しく思います。
目次
プログラマーのイメージってどんなイメージ?
さて、突然ですが質問です。
プログラマー以外の人は、素直な気持ちでお答えください。
プログラマーの人は、プログラマーになる以前に考えていたイメージでお答えください。
プログラマーという職業にどのようなイメージを抱いていましたか?


私は、正直なところ↓の様な印象を抱いていました。
・コミュニケーション能力は低い
・ずっとキーボードをカタカタしている
・おとなしい
・理屈っぽい
・長時間労働
といったイメージを持っていました。
ですが、実際のところは、
・コミュニケーション能力はもっとも重要な能力で
・キーボードを常にカタカタしている訳でもなく、後ほどお話させていただくググり力の方が大事
・積極的に人と関わる人の方が断然的にプログラミングの成長率は高いです
ではプログラミングに必要な能力がわかったので、1つづつ見ていきましょう!
プログラマーに向いていない人
コミュニケーションが苦手な人
実は、私は入社する前から、
「プログラマーはコミュニケーション能力」が一番大事ということ情報は理解をしておりました。
そして、コミュニケーション自体は苦手だけど、必要最低限のコミュニケーション能力はあるはずだし、大丈夫でしょ!
と思っていました。
ですが、コミュニケーションにも色々と種類があり、私に足りていなかったコミュニケーションスキルについて考えてみました。
人と関わるのが苦手


プログラマーという職業はコミュケーション能力が低かったり、1人でいるのが好きな人が多いイメージがありませんか?
私は当初、その様なイメージを抱いていましたし、実際に職場でも一定数の人はその様な人がいました。
ですが、プログラマーを目指すに当たって、コミュニケーション能力は最低限必要なのですが、
自分の思っている事を自分の言葉で伝える事ができる能力が無いと厳しい世界だとは、ハッキリと言えます。
その理由はプログラムは1人では完成しないですし、他人とあなたの脳は違うからです。


仕様書を見るだけでなく、自分の何のプログラムをどのように作るのか、密にコミュニケーションをとる必要があります。
何故なら、あなたの考えていることと相手の考えていることは多くの場合で違うことが多いからです。
ある日のことでした、butterfly(バラフライ)で連想する曲は?と友人に言われたのですが、
私が倖田來未のbutterflyと言ったら、友人にお前は日本人として終わってると言われました。
彼の中では木村カエラかデジモンの主題歌の和田光司さんのbutterflyと答えて欲しかったようです。
このように、人の考えていることは人によってことなります。
プログラミングを扱う現場においても同じことが言えて、例えば仕様書に
Facebookと提携させること
と書いてあっても、ライブラリを使うのか使わないのか? Facebookアカウントを持っていないユーザーはどうするのか? と逐一自分の疑問点と相手の考えていることを擦り合わせる必要があります。
コミュニケーションを密に取らないと、指示者が思ってたのと違うプログラムが出来上がることになり、二度手間になってしまう可能性が十二分にありえます。
企業に属して、プログラミングに取り組む以上、プログラムを1人で作りあげることは出来ません。
よってコミュニケーションが取れなければ、プログラムは完成しないといっても過言ではありません。
なので、人と関わるのが向いてない人と感じる人はプログラマーとしての適性は低いと言えるでしょう。
教えてもらうことが苦手


私は、幼い頃から「教えてもらう」という行為が苦手でした。
理由としては、
・言われた事を理解するのに凄く時間がかかる。
・(無償で何かを)教えてもらっている時に教えてもらっている内容よりも、どうやったら相手を不快にさせないかを優先している
と言ったことを抱いていました。
ですが社会人という立場で仕事をしている以上そんなことは言っていられません。
ですが、仕事中でもしょっちゅう1人で抱え込むことが多く、
それと同時に、教えてもらう身分にも関わらず、教えてもらう際は申し訳なさを感じると同時にストレスを感じる様になっていました。
また、分からないことを聞かないで仕事効率が低くなってしまうことで周囲にとって迷惑なことである、ということも重々理解していたのですが、
私は「なかなか人に頼るという行為」を実行に移せなかったのです。
もちろん、自分で色々と調べて考えた結果、仕事を終わらせることが出来ないのであれば、
なりふり構わず不明点の解消のために、誰かに教えを請わなけれなばならない立場にも関わらず「他の人の手を煩わせてはならない」という思いが優っていました。
他にも人に質問できない理由として
- 「普通なら分かっていて常識的なこと」
- 「聞かなければ分からないこと」
- 「調べればすぐわかること」
の区別をつけるスキルが私には不足していました。
実際に質問をした際に「こんなことも分からないのか、常識がない、自分で考えろ、手間とらせるな、迷惑ばっかりかけやがって」と言われたことのある一方で、自分で頑張って考えて行動したら「間違っている、なぜ聞かなかった、時間の無駄だ」と言われることもあり、
何が正しいのかが分からなくなっていましたし、正直なところ退職間際には話しかけるという行為がとてもストレスに感じていて、自分が話しかけるだけで身が裂けそうな気持ちになっていまし。
受身な人
いわゆる指示待ち人間と言われる人や、
「教えてくれるだろう」といった受け身的な思考の人もプログラマーに向いていません。
主体的に行動して、やったことが無いことや分からないことがあっても
自分で調べて解決する能力がプログラマーには求められます。いわゆるググり力ってやつです。
以前、言っていたプログラミング学校でも、
と聞かれました。当初はこれが毎回続くのかと思うと身震いしました。
もちろん、どうしても分からない時はもちろん教えてくれますよ!
実際に現場でもネットに落ちている情報(Qiitaや公式リファレンス)を頼りに仕事を進めていく能力やエラーコードをヒントにバグを解消する能力を求められていました。
前述の方で、キーボードを常にカタカタしている訳でもなく、ググり力の方が大事と書かせていただきましたが正にその通りで、プログラミングを自分で1から作るのではなく、ノートやアプリにフロー図を書いて、何をやれば良いかを考えます。
そして、実際にプログラムを動かそうとする場合は、まずはコピー&ペーストをしてとりあえず動かそうとすることが多いです。
海外サイトを含めれば、要件に似たような処理を既に実装していてそれを公開していることが多々あります。
また、あなたが分からないことは大抵他の誰かが先にネットで質問済みだったりします。
共通して必要なコードは抜き取り、不要なコードは消去し、不足する部分を自分で補って作る形が大半だと思います。
よって、自分で主体的に行動するのが苦手な人や誰かの指示が無いと動けない人には向いていないと言い切ることが出来ます。
補足
ググり力が重要と言いましたが、「分からないことは直ぐに聞く」も大事なことです。
プログラミングスクールでも現場でも、「分からないことを直ぐに聞く人」は成長がとても早かったです。
上司や先生からしても学習の進歩状況や仕事の進歩状況が分かるので、
プログラミングスクールではどこでつまづいているかが把握できますし、何より頼られて嬉しく無い人はいないはずです。
それは現場でも同じことが言えて、主体性がある人はやはり非常に重宝されます。
これから、プログラミングをされる方は遠慮せずにガンガン聞いていきましょうね!そして主体性を磨いていってください!
※2020年10月03日追記
退職後、WEBクリエイターを養成する職業訓練に行っていたのですがそこでも、ぐぐり力や自己解決能力が必要とおっしゃっていました。
やはりアプリ業界でもWEB業界でも同じことなんだなと痛感しました。
コードレビューが苦手な人
作ったコード(プログラム)を他の人に見てもらって「コードは大丈夫なのか?おかしいところがないか?ちゃんと決まったルールや用件に基づいて作られてるか?」というのを別の人にチェックしてもらう作業のことです。
注目して欲しいのが、「別の人にチェックをしてもらうこと」という点です。
個人での開発する上では意識してもしなくても良い分野であり、学校の授業でもグループ開発がない限り他人に指摘されることはないでしょう。
ですが、仕事となれば違います。
仕事としてコーディングをする際は、保守業務をしていくことが前提となるので、誰でも読めるように可読性が高いコードを書く必要があります。
そこで、コードレビューで第3者の目を通じて、自分が作ったコードが正しいかを、他人(主に上司)に見てもらう必要があるのです。
そんなコードレビューが私は苦手でした。
理由は、レビューアーへ申し訳なさを感じているからというのと、自分では1番の出来のコードを指摘されるのが怖かった。ということでした
一方で、私の先輩はコードレビューをしてくれるのはありがたいことで、これは仕事をしている人間の特権だ。
とおっしゃっていました。
コードレビューは組織でプログラマーとしている間はずっと続くので、コードレビューをしてもらうことに苦手意識を感じている方はプログラマー には向いていないと言えるでしょう。
論理的思考ができるか
論理的思考を語る前に、ご紹介させていただきたい議題があります。
それは、文系でもプログラミングは出来るのか?問題です。
この問題は文系出身者がプログラミングに興味が湧いた時に一度は考えるのではないでしょうか?
google検索で調べたところ、理系文系は関係無いという意見が大多数でした。
実際にプログラミングの学校で文系出身者の人に同じことを聞いてみたところ面白い答えが返って来ました。
プログラミング話Aの場合
プログラミング話Bの場合
まさかの、真反対の意見でした。
次に某まとめサイトの記事を参考にしました。
色々な意見がありました。
こちらのサイトでも、文系理系どちらが向いているかの有益な情報は得られなかったのですが、


「全く向いていな人」ってのは一定数存在するのは確実というコメントに強く共感したので、それがどんな人かというのを考えたところ論理的思考が出来る人なのかなと思いました。
論理的思考について
論理的思考という言葉をご存知ですか?
論理的思考とは
論理的思考とは、因果関係を整理し順序立てて考えること、あるいはわかりやすく説明することを指します。ロジカルシンキングとも呼ばれます。
ferretより
プログラミングではこの論理的思考を絶え間無くやり続けなければいけません。
プログラミングで実装する時は、上記のようなフローチャートを意識しないといけないですし、
方法Aで要件を満たせなかったら、別の方法Bをやって、それでもダメだったら方法Cを試してみて、その方法を使っても実装できずに1時間以上経過したら先輩に助けを求めよう…
といった感じで、常に論理的思考を求められます。
この論理的思考ができない人は、プログラマーに向いていないと言えるでしょう。
センスが無い人
プログラミングはセンスが必要で、全員が全員習得できる訳ではありません。
わからない人とわかる人では大きな溝があるとも言われていますが、
わかる人とわからない人では頭の構造が違うので仕方ないこととも言えるでしょう。
休日までプログラミングに捧げられるか?


IT業界は変化の激しい世界です。
なので、プログラマーは基本的に休日にも勉強することを求められます。
日々新しい技術やトレンドを追っていき、学び続けていかなくてはなりません。日々アップデートしてく情報をキャッチし、勉強をし続けなければなりません。つまり、あなたがプログラマーとして生き続ける為には、常に勉強が必要になるわけです。
私の実体験からも分かるように、バージョンアップデートしたら自分の知識もアップデートさせる必要があります。
よって、休日にもプログラミングをすることができる情熱があるか?というのがプログラマーとしての適正に直結していきます。
プログラミングが好きか?


私はプログラミングが解けたときの脳汁が出る瞬間が大好きだったのですが、
結果を追い求めるばかりで、結局のところコピペばっかりで本質を掴めていなかったように思います。
プログラミング初心者だったら、helloworldを出力しましょう!ということを初めに言われるかと思いますが、私は出力したところで、でたけどこれがプログラミングとどんな関係があるの…?
あと、プログラミングをアクセサリーの様に捉えてる節があり、
プログラミングが好きでは無く、プログラミングをしている自分が好き。
プログラミングというよりも創作が好き。
誰かに求められるプログラミングがしたい。
そして一番決定的なのが、以前まではプログラミングだったらフリーランスという選択肢もあるよね
みたいな考えがあったのですが、
フリーランスでもプログラミングは出来ないししたくない。
と最終的に思っていました。
まとめ
いかがでしたでしょうか?
プログラミングが貴方の適職であるのであれば、それはとても嬉しいことです!
ですが、プログラミンングが合ってないなぁと思ったら、
やり続ける勇気・辞める勇気 どちらを選ぶかは貴方次第です!
正解を探すのでは無く、自分の選択を正解に導いてあげてください!
▼ オススメの転職サイトです



では !