プログラマーの適性とは?論理的思考力だけではない3つのポイント。
プログラマーの適性ってどんな人?と聞かれることがあるので、実際のプログラマーとして働いたり、プログラミング講師をしていた経験を踏まえて、お伝えしたいと思います。
先にお伝えしますが、よく「論理的思考能力」が必要と世間では言われますが…
私が思う適性を3つ挙げたときに、この力は入っていません。
もちろん、いらない訳ではないですが、さほど重要ではありません。
それよりも伝えたい適性と思う3つを紹介します。
私がプログラマーの適性と感じる3つはこれ!
- 好奇心が旺盛。新しいことに抵抗ない。
- わからないことがあると原因を調べたくなる。
- 最適解を見つけるのが得意。
プログラマーの適性1:好奇心が旺盛。新しいことに抵抗ない
プログラミングスクールでも独学でもそうですが、それを終えたからといって、仕事ができるかと言ったらそうではありません。
なぜなら、現場に行けば必ず新しいことがあるからです。
それを抵抗なく柔軟に受け止め、学び続ける力こそ最も重要だと考えています。
また、技術は日々進化し続けているので、自ら新しい技術に触れることができるかどうかもとても重要です。
新しい技術は便利ですが、初学のステップにかなり抵抗を感じると思います。
そこを軽やかに触れて学ぶことができるのであれば、とても優秀なエンジニアになること間違い無いでしょう。
プログラマーの適性2:わからないことがあると原因を調べたくなる
これはなるほどと思ってくださる方が多いかもしれません。
プログラマーの仕事の多くの時間は、
「コードを書く時間」 < 「コードを読む時間」
の方が圧倒的に多いと思います。
良いコードを書こうとすればするほど、この時間が多くなります。
なぜなら、全体のコードを見て最適なコードが何かを調査するからです。
また、バグが発生した時も原因を調査し、最適解を見つけて修正を行ます。
実は、この「調査」をすることがとても重要なのです。
ベテランのエンジニアになればなるほど、この嗅覚が鋭くなるので、初心者が1日かかる問題を5分で解決できるようになります。
私もまだそこまでのスキルはありませんが、本当にベテランのエンジニアさんはすぐ原因を読み解くので、本当に尊敬をしています。
よって、この2番目に項目として挙げさせてもらいました。
プログラマーの適性3:最適解を見つけるのが得意。
「最適解」とは、Aという意見とBという意見があったときに、最も最適であるCという答えを導くことです。
例えば、検索機能を追加したい場合の例を考えてみましょう。
A「キーワード検索、カテゴリー検索、タグ検索、地域検索、日付、値段、商品説明を含んだ検索...いろんな検索機能をつけたい」 B「いや、もうユーザーに直感的に検索を行ってもらうのが良いし検索をサクサクと動かしたい。」 C「それでは、直感的な検索をベースにして、キーワード検索、カテゴリー検索、タグ検索を標準機能にして、詳細検索したい人のメニューを追加すれば良いかもですね。」
このように、システムを開発するとき、必ず意見が分かれます。
よく見るのは、「ユーザー視点」と「エンジニア視点」の意見の対立です。
ユーザー視点を重視しすぎると、システムの構造がバラバラでメンテナンスのしづらい、開発が非効率なシステムになってしまう。
エンジニア視点を重視しすぎると、ユーザーの気持ちを考慮されていないで、ユーザーが使いづらいサービスになってしまう。
大事なことは、ユーザーに使いやすいかつ効率的なシステム設計を目指すことです。
プログラムの開発は、突き詰めれば突き詰めるほどキリがありません。
言われたことをただやるのではなく、「どういう目的」「どういうゴールに向かって」開発をしているのかを把握することがとても大事だと考えます。
プログラマーとして適性がないと思う人
上記の記事を見て、プログラマーの適性自分ないかも…
と思った方ですが、ご安心ください。
最初からこんな完璧な人を求めている企業は少ないです。
何より、これらの適性は、トレーニングすることで身に付けることができます。
詳しいトレーニング方法は後日、ご紹介しますので楽しみにしてください。
※この意見は、あくまで私の個人の経験を通して回答した一意見です。 また、これらの適性を持っていない現場の人もたくさん見てきていますし、 その人が仕事できないか?というとそうでもないです。 結論、「適性」ってある程度あれば仕事をする上ではあまり重要ではないのです。 ただ、この記事を見て、どんな考えが重要かを知って、安心材料としてもらえれば 何よりです。
人気記事 Springbootの環境構築から Hello worldまで on Mac