どの仕事にも、適性というものがあります。プログラマにもやはり適性があって、適性がないゆえに残念ながら現場を去った人たちは多数います。
本記事ではプログラマを目指している人のために、プログラマ適性とは何か、プログラマ適性がある人とない人を比較しながら分析してみました。もし今のあなたに適性がなかったとしても大丈夫です!プログラマになるまでに、必要な適性を身につければ良いだけですから。
プログラミングの適性とは
そもそもプログラミングとは
適性を知る前に、まずはプログラミングについて知っておきましょう。前提を誤解していると、適性も上手く測れません。プログラミングとは、コンピューターに「こう動いてほしい」という指示を出すものです。
コンピューターには人間の言葉は分からず、また曖昧な命令を受け付けません。そのため、コンピューターに分かる言語で、明確な指示を出す必要があります。コンピューターに渡す指示書をプログラムと言い、この指示書を書いてコンピューターに意図した通りの仕事をさせることがプログラミングです。
プログラミングと適性の関係
プログラミングは努力よりも適性とよく言われていますが、適性がなくてもプログラマーになることはできますが、プログラミングと適性は、非常に重要な関係性を持っています。例えば、プログラミング学習において、適性の高い人とそうでない人ではまったく学習効率が異なります。プログラミング初心者が学習を進めていくと、どうしても躓いてしまうことがたくさんありますよね。
そこで、「自分が何を理解してるのか」「何を理解出来ていないか」「今何を理解すべきか」ということを論理的に整理することができる人とただ漠然と学習を続けている人では学習効率が違います。
この論理的に物事を考える能力が、プログラミングの適性と深く関係しており、論理的思考(ロジカルシンキング)を身につけることで、プログラミングは非常に効率的なものとなります。
プログラミングの適性がないことで起こりうるリスク
先程、プログラミングの適性がなくてもプログラマーになることはできると言いました。しかし、プログラミングの適性がないままプログラマーとして働き続けることにはリスクが伴います。
- 何から学習をすればいいか分からず、学習意欲が低下
- 周囲のメンバーと差がついてしまい、自分に自信がなくなっていく
- 残業が増え、プライベートの時間が削られる
この状態でプログラマーになっても、評価を得て昇進することは難しく、収入の低いまま働き続けることになりかねません。
プログラミング適性がある人の6つの特徴
ここからは適性検査だけでは分からないプログラミングに向いている人の特徴をご紹介します。
論理的思考力を持っている
プログラミングには論理的思考(ロジカルシンキング)ができるかどうかが大切です。
例えば、この論理的思考力はエラー処理時に役立ちます。エラーが発生した際、発生源はどこか、なぜ発生したか、どこの修正が必要かなどの因果関係を整理して、原因究明に当たることで、より迅速にエラーを解消することができるようになります。
どんなにすごいプログラマでもミスを0にすることはできません。いかにエラーに素早く対処できるかが、プログラミングには強く求められます。
集中力がある
プログラミングを扱う仕事の多くはパソコン画面との格闘です。長時間、デスクの前で作業を続けているとどうしても集中力が乱れがちになります。
しかし、プログラミングは少しでも間違いがあれば、全くプログラムが動作しなくなります。そのため、コーディングを行う際は、常に集中して業務に当たらなければなりません。
探究心・向上心がある
プログラマーとして成功するためには、ただ設計書通りのプログラムを組むだけじゃなく、どうすればより良いプログラムを組めるのかを追求し続ける探究心が不可欠です。
特に質の高いプログラマーになるには、ただ動くプログラムを組むだけじゃなく、誰が見ても理解しやすいプログラムを組むことを目指さなければなりません。そのためには、常にどうすれば今よりも質の高いプログラムを組めるかを意識する向上心や探究心が必要になります。
体力がある
プログラミングに体力が必要なの?と思われるかもしれませんが、プログラマーなどのIT職には体力が不可欠です。プログラミングに携わる多くのIT職は、一般的に納期が定められており、納期に応じて仕事をこなしていきます。納期が迫ると他業種に比べて格段に忙しく、時には帰りが毎日終電になったり、家に帰れないことも。
そういった繁忙期の多忙さに対応できる体力もエンジニアを目指す上では必要となります。プログラミングを学ぶ上で、今後は体力もある程度必要になるということを念頭に入れておきましょう。
新しいことを学び続ける意欲がある
IT業界は非常に技術革新の速度が早く、いま使われている技術が将来的にも使えるわけではありません。そのため、プログラミングを仕事にしていくためには、常に最先端の技術を学び続ける必要があります。
ただ闇雲に最新の情報を学んでいくのではなく、数ある情報のなかから、必要な情報を集める情報収集力。そして、常に自分を成長させるための情報をインプットし続ける学習意欲が、優秀なプログラマーには不可欠です。
協調性がある
プログラミングは基本的に1人で行うものではありません。基本的には、プロジェクトごとに複数のエンジニアがチームを組み、それぞれ協力して1つのプログラムを組むことになります。チーム全体の共有事項などがあれば会議もありますし、進捗を確認するために頻繁なコミュニケーションも必要です。作業を滞りなく進めるためには、協調性も不可欠です。
プログラマの適性①:論理的思考力
プログラムとはAがBを呼んでCに渡す
学校の数学の時間で、関数を学んだことは覚えているでしょうか?関数とは、値を渡して、その結果を得るものでした。
プログラムも数学の関数と同じです。機能や処理ごとにプログラムを分けて、必要に応じて呼び出したり、値を渡して結果を得て、さらにそれを別のプログラムに渡したりしています。
まさにタイトルどおり、プログラムとはAがBを呼んで、Bから得た結果をCに渡すという感じで続くものなのです。
頭の中でロジックを組む
プログラマは、ロジックの流れを頭の中で描き、そしてプログラムへと落とし込みます。逆に、プログラマは他人の書いたプログラムを見るとき、流れるように処理を追いかけます。
「プログラマには論理的思考が必要」といわれるのも分かりますね。
論理的思考ができなかったらどうなるか
論理的思考ができないと、頭の中でプログラムの流れを追えません。プログラムをまるで文章を読むかのように先頭から一気に読み始め、複雑な動きをするロジックに差し掛かったとたんに、流れを追えなくなり迷子になります。
プログラムは部分的に見てみると、確かに上から下に流れています。しかし至るところに流れを分岐させたり、関数を使って値を取得したりしています。論理的思考が弱いと、これらの動きが追えない = プログラムがどう動くかをイメージできないのです。
何が分からないかを言語化できない
「何が分からないか、そこから分からないです(涙)」こんな質問、よくありますよね。
プログラミングでも同じで、学習を始めたばかりの方からよくこの質問が出ます。確かにそうなるのは無理もありませんが、フォローする側からすれば、この言葉が出るともう何もできなくなります。論理的思考ができれば「そもそもこうしたいけど、この部分が分からないんだ」と分からないことを言語化できます。
プログラマの適性②:コミュニケーション能力
プログラマにもやっぱり必要
もくもくと一心に孤独にキーを叩き続ける、そんなイメージのあるプログラマですが、コミュニケーション能力は必要なのです。
それもそのはず、プログラマといえども職人であり社会人です。仕事をする上でいろいろな人と関わる以上、コミュニケーション能力はとても大事な適性なのです。
指示を出す側・受ける側、どちらの立場でも必要
もう少しコミュニケーション能力の必要性について見てみましょう。
最初は指示を出す側の話です。
ある程度プログラマとしての経験ができたころから、若手やスキルが低めのプログラマの面倒を見るようになります。仕事上、他人への指示やプログラムの評価をすることが多くなります。指示を出す側として、指示を受ける側に間違った動きをさせず、効率よく仕事を進めさせるためにも、コミュニケーション能力は必要です。
次は指示を受ける側です。
指示を受けて次の行動へ移るには、指示を正確に理解するためのコミュニケーション能力が必要になります。また分からないことを言語化し、指示をあおぐためにも必要です。
コミュニケーション能力がなかったらどうなるか
「あの人、いつも何を言っているのか分からないよねー」そんなことを若手たちから言われているリーダがいます。正確で分かりやすい指示が出せないのです。
また圧が強すぎるリーダもいます。なぜか上から目線、かつ指示も投げやり、若手が誤った動きをすると怒る・・・こういったコミュニケーション能力がないリーダの下で仕事をするのは大変です。
逆に、指示を受ける側もコミュニケーション能力がないと、周りはその人が何を考えているか分からないし、理解できたのかどうかそれすら分かりません。周りがフォローしづらい状態になります。
プログラマの職場に限ったことではありませんが、みんなが気持ちよく効率的に仕事をするためにはコミュニケーション能力がとても大切なんです。
プログラマの適性③:技術的好奇心
どんな技術でも、いずれは消える
Struts(Ver1.x)、Seasar、PHP5、これらに共通することがあるのはご存知でしょうか?
正解は、かつて栄華を誇ったものの、すでに開発が終了してしまった言語やフレームワークです。どんな技術でもいずれは消えます。逆に今は圧倒的少数派の言語やフレームワークであっても、将来いきなり脚光を浴びるかもしれません。今ある技術も、永久に存在し続けるわけではありません。いつ消えてもいいように、さまざまな技術を身につける、または興味を持つのがプログラマの適性として、とても大事です。
技術的好奇心がなかった残念な人たち
「やったことがないからできません」このセリフを平気で口にする人がいます。これは「今できている以上のことはやりません、そんな気はありません」と断言しているようなものです。これはプログラマとしてかなり残念で、流れの早いIT技術の世界には向きません。
特定の技術にしがみついた人の末路は…
すでに述べたとおり、昔は業界の標準的な技術だったとしても、いずれは衰退するか最悪は消えてしまいます。いきなり完全に消えてしまうわけではありません。その技術を使って構築されたシステムはしばらくの間生き残ります。次第にそれらのシステムすらも役目を終えて別の技術で再構築されます。すると、それしかできないプログラマの、選択できる案件の幅がせまくなってくるのです。
時間が経つと歳をとります。今度は技術だけでなく年齢的にも追い討ちがかかります。歳をとって経験もないとなると、さまざまな技術に柔軟に取り組める若いエンジニアを上回るパフォーマンスを出すのは難しくなりますね。最悪の事態を防ぐためにも、さまざまな技術に好奇心を持って取り組みたいものです。
まとめ
本記事では、プログラマの適性について以下の3点を解説しました。
1.論理的思考力
2.コミュニケーション能力
3.技術的好奇心
これからプログラマを目指す方や、IT企業の採用・教育などプログラマに関わる仕事をしている方々にとって、「プログラマ適性」について考えるきっかけになればうれしいです。
- カテゴリ:
- プログラミング