皆さんの会社ではプログラミング能力をどのように評価しているでしょうか?評価はしていないという会社もあるかもしれません。プログラマがコードを書いて、上長がそれをレビューして、フィードバックする。これだけでプログラマの能力は向上するはずだ、と考えてのことでしょう。
しかし、果たして「コーディング→レビュー→フィードバック」というサイクルを繰り返すだけでプログラマの能力は向上するのでしょうか?答えは「No」です。まず大切なのはプログラマごとの能力を評価して、現状を明確にすることが極めて重要です。そうすることで初めて課題意識が芽生えて、プログラミング能力向上に取り組もうという意欲が湧きます。
今回はそんなプログラミング能力の評価についてお話しましょう。
優秀なプログラマの定義
プログラミングとは文字通り「プログラムを作ること」です。そのプログラムは大規模なシステム構築のための一部だったり、現行で提供しているWebサービスの改善のためだったりします。いずれも共通して言えることは、システム要件を十分に理解した上で最も効率良くデータやリクエストを処理し、適切な機能を提供するプログラムが大切ということです。
このポイントを現実的にするためには良質なプログラムを作る、優秀なプログラマの存在が欠かせません。では優秀なプログラマの定義とは何でしょうか?
博識であること
特定のプログラミング言語を深く理解しているプログラマは優秀と言えます。しかしそれ以上に優秀なのは、それに加えて様々なプログラミング言語やケーススタディへの広い知識があり、問題解決に向けて効率良い道筋を知っている人です。
学ぶことが好き
技術は日進月歩で発展しています。今年流行のトレンドが来年も同じようにはやるとは限りません。むしろ、トレンドは年々変化し、技術は移り変わっていくものです。なので常に学ぶ姿勢が無いと、優秀なプログラマとして活躍し続けることは不可能でしょう。
困難を楽しめる
なぜコンパイラが通らないのか?なぜバグが発生するのか?プログラミングの世界では困難の連続であり、それらを乗り越えていくことで良質なプログラムが生まれます。困難を避けるような行為はプログラムの質を落とします。だからこそ困難を楽しみ、立ち向かっていく気構えが大切です。
ビジネスに興味がある
プログラミングとは結局のところ、ビジネスに混在する様々な課題を解決するために存在しているのです。なので自社のビジネスや顧客のビジネスに興味を持ち、理解することで初めて目的に合った良質なプログラムが生まれます。
柔軟な発想がある
プログラミングは困難の連続だと前述しましたが変化の連続でもあります。様々な要因によって優先順位が変わり、それらに対応する必要があります。そのため優秀なプログラマには常に柔軟な発想があり、どんな変化もポジティブに捉えることが大切です。
チームプレイができる
一般的なイメージとしてプログラマは孤独な存在ですが、実はチームプレイが何よりも大切です。一つのシステムを完成させるには多くの人が関わり、関係者全員がコミュニケーションを取っていくことで円滑にプロジェクトが進みます。チームプレイの精神があるプログラマはプロジェクトの成功に大きく貢献する存在です。
もちろん、これが優秀なプログラマの定義のすべてではありません。会社の方針やその状況によって定義は変化します。しかし会社としては、優秀なプログラマの厳格な基準を設け、プログラミング能力を評価しなければならないシーンが多々あります。そのシーンとは一体どのようなものでしょうか?
求められるプログラマーとしてのスキル5選
プログラミングスキルを身につけるメリットについてお伝えしました。
「収入アップしたい」「将来の選択肢を広げたい」という方は、プログラミングスキルが役立つでしょう。プログラミングスキルを発揮する働き方の代表として、プログラマーがあります。プログラマーは、設計書に沿ってプログラミングをする仕事です。
プログラミングスキルを習得すれば、プログラマーとして仕事をする選択肢が生まれますよ。
プログラマーは需要も高く、パソコンとWiFi環境があれば作業可能なので、柔軟な働き方を実現できるでしょう。
プログラマーとして働く選択肢を考えるなら、どんなスキルが必要かを知っておくことが大切です。
ここでは、プログラマーに求められるスキル5選についてご紹介します。
- プログラミングスキル
- 論理的思考力
- 情報収集力
- コミュニケーション力
- ハードウェア・ネットワークの知識
1.プログラミングスキル
プログラマーとして最も重要なのがプログラミングスキルです。プログラムを構築するために、プログラミングスキルは欠かせません。プログラマーは、設計書に沿ってプログラミングでコードを書き、プログラムを作っていきます。プログラミングスキルは、プログラマーの仕事に直結する能力です。高くて幅広いプログラミングスキルがあるほど、優秀なプログラマーとして収入アップやキャリアアップにつながります。
2.論理的思考力
プログラマーは、プログラミングをするなかで論理的思考力が求められます。論理的思考力とは、筋道を立てて物事を考える力のことです。プログラムは論理的な仕組みなので、論理的に考えながらコードを書く必要があります。
また、プログラミングでは頻繁にエラーが発生します。
エラーの原因は何か、どうすれば問題解決ができるのかも、論理的思考力が必要な場面です。プログラマーの仕事は論理的なものに溢れているので、論理的思考をもって対処しなければなりません。
論理的思考力は日々の生活のなかでも身につけ、役立てられるものです。
意識して論理的に考える癖をつけましょう。
3.情報収集力
プログラマーに求められるスキルとして、情報収集力があります。情報収集力とは、必要な情報を集める力のことです。プログラミングは暗記だけではなく、必要に応じて適宜調べながら進める必要があります。
構築したいプログラムを書くためのコードや書き方など、すべてを暗記しているプログラマーはいません。
どんなに優秀なプログラマーでも、調べるという行為は欠かせないものです。必要な情報にすぐにアクセスする力があるかどうかによって、プログラマーの力量がはかれます。
プログラマーは頭の中に情報があるだけでなく、身の回りのものを駆使して情報を集める力も大切なのです。
4.コミュニケーション力
プログラマーは、コミュニケーション力も求められます。
特にチーム開発など複数人で取り組むプロジェクトでは、コミュニケーション力が成果に影響するでしょう。プログラマーという職種に対して、「1人でパソコン作業をしているイメージ」がある人も多いかもしれません。
実際のところ、1人で黙々と作業する労働環境の会社もあります。
しかし、大きなプロジェクトの場合は、チーム開発など複数人で取り組むことも少なくないです。
チームで取り組むとき、円滑なコミュニケーションはプロジェクトのスムーズな進行に重要な要素となります。プロジェクトでは、時間や人員など限られたリソースのなかでそれぞれが能力を発揮し、連携して仕事を進めることが大切です。
コミュニケーション力があるプログラマーは、一緒に仕事をしやすいと評価されやすくなります。
5.ハードウェア・ネットワークの知識
プログラマーの仕事では、ハードウェアやネットワークの知識も求められますよ。
あらゆる業種では、業務効率化を図るためにIoT(Internet of Things、モノのインターネット)の取り組みが広がっています。モノ同士をインターネットで接続し、効率よく業務を進めようとする仕組みです。
IoTの例として、アレクサがイメージしやすいでしょう。IoTシステムを構築するためには、ハードウェア(モノ)やネットワークの知識が不可欠です。
プログラマーとして今後働くなら、身につけておく必要があります。
優秀なプログラマの採用基準
すごいプログラマの要素について説明しましたが、これらすべてを客観的に評価することは難しいかもしれません。プログラマの能力やマインドを100%評価するために、採用活動という時間はあまりに短すぎます。では、その短い時間の中でどういった基準で判断すればよいのでしょうか?
まず「すごいプログラマを採用する」と考えてしまうと、上に挙げたような項目をすべて満たしてほしいと考えてしまいがちです。しかし、実際にはそこまで満たしていなくても、「優秀なプログラマを採用する」ということは可能です。なぜなら現時点ではすべてを満たしていなくても、ある一定のレベルを満たしていれば優秀な人を見つけ出すことができるからです。
では、改めて優秀の定義とは何でしょうか?
先ほどご紹介したすごいプログラマの条件にはある前提があります。それはプログラミングスキルです。そのうえで、意欲や性格などが組み合わさると、すごいプログラマと思われるようになるのです。しかし、実際にはすべてのプログラマがすごいレベルである必要はないのも事実です。そのため、まずプログラマとして優秀であるかという点をきっちり判断し、加えて上記の要素があればなおいいという形で区別したほうが、採用後のミスマッチを防ぐことができるでしょう。
プログラミングスキルの評価ツールの例
プログラミングスキル判定サービスはいくつか存在しますが、そのうちの1つTOPSICというサービスでの代表的な評価画面をお見せします。
どの言語を使って、どれくらいのレベルのプログラムが書けて、一般的な企業の中での順位はいかほどなのかがパッと見てわかると思います。プログラミングスキルの評価ツールとして、このようなサービスの活用をオススメします。
プログラミング能力評価の活用場面
新卒採用
日本ビジネスの独特な慣習の一つといえば「新卒者一括採用」です。実はこれは欧米諸国から見るとかなり奇異な採用活動に映るようです。というのも、欧米諸国や日本以外のアジアでは基本的に「ジョブ型」という採用活動がされます。これは新卒であっても「能力ありき」で採用するという方式であり、社会経験も能力も無い新卒者を採用する日本ビジネスとは大きく異なります。ちなみに日本ビジネス式の採用活動を「メンバーシップ型」と呼びます。
最近になりこのメンバーシップ型に疑問を持つ会社が多くなり、ジョブ型の新卒採用を進めることが多くなっています。今後は、新卒者であってもプログラミング能力の評価を行い、採用活動を進めていくことが一般化していくでしょう。
中途採用
中途採用に関しては日本ビジネスでもジョブ型を取り入れています。それは当然、会社が中途採用に求めるものは「即戦力」だからです。しかし、プログラマの中途採用ほど難しいものはないでしょう。「あれができる」「これができる」といくら面接時に語ったとしても、入社後実際にそのスキルが発揮されるかどうかは分からないのですから。
だからこそ、スクリーニングとしてプログラミング能力の評価を行って、入社後のミスマッチを防止するための対策が必要です。
人事評価
プログラマの人事評価としてプロジェクトへの貢献度を一つの指標としている会社が多いかと思います。しかし、実際にその人がどれくらいプロジェクトに貢献できているかどうかは判断が難しいところです。もしかすると、部下の功績を自分の功績としている上長が存在するかもしれません。
そこで、人事評価の一環として社内プログラミングコンテスト(社内プロコン)を取り入れると、誰が優秀なのか?を明確に把握し人事評価に反映できます。
社員教育
社員教育の一環として社内プロコンを導入することもおすすめです。単にプログラミングに関する技術を教え込むのではなく、社内プロコンを実施することで社員同士の競争力も芽生え、技術向上へ意欲的になります。
社内プロコンで上位へランクインすることを目標とすれば、自然とプログラミング能力の向上も図れます。
適材適所
社内プロコンを実施すると誰が優秀か?ということだけでなく、誰がどのプログラミング言語に長けているかも把握できます。システム開発の現場ではプロジェクトごとに扱うプログラミング言語も違うので、プロジェクトに応じて適切なプログラマを参画させることが大切です。
いわゆる適材適所を実現するためにもプログラミング能力の評価は欠かせません。
業務委託
システム開発を委託するクライアントの立場になって考えると、その委託先が本当にスキルの高い会社なのかを判断することは難しいでしょう。そこで、プログラミング能力を評価するためのツールがあれば、委託先選定はもっと簡単になるはずです。 [RELATED_POSTS]
プログラミング能力判定サービス「TOPSIC」
今や様々なシーンにおいてプログラミング能力を評価することが求められています。特に中途採用では、ミスマッチを防ぐためにプログラミングテストを実施することは欧米諸国や日本以外のアジアでは当たり前に行われています。
当社システムインテグレータでは、そうしたプログラミング能力の評価をシンプルかつ簡単に行うためのサービスTOPSICを提供しています。
6段階の難易度で出題される様々な設問に対し、実際にプログラムコードを書いてもらうことでプログラミング能力の評価が行えるというサービスです。中途採用、新卒採用、社内プロコンの実施など様々なシーンでご活用いただけます。
プログラミング能力の評価に課題を感じているのなら、TOPSICの活用をぜひご検討ください。
- カテゴリ: