プログラマーの適性
このページは、プログラマーの適性 (プログラマーに向いていそうな人) について考える予定のページです。
目次
注意
- このページを作った人がシステム開発や指導に関わったうえで感じたことをまとめています。
- 特に職業プログラマーを想定しています。(趣味であれば誰でも可能性はあるため)
- 後に出てくる内容のうち、顧客に関する内容はプログラム作成・テスト業務だけするプログラマーの場合は当てはまらないかもしれません。
- 内容は増えたり減ったりするかもしれません。
プログラマーに向いていそうな人
下記のような人はもしかしたらプログラマーに向いているかもしれません。
- IT 技術やガジェットが好きで、ずっと PC などを使っていられる人
- IT 技術に対する適性がある
- コンピューターゲーム (コンシューマーゲーム、スマホゲーム等) が得意な人
- 規則性に対する適性がある (システム (ゲームシステム) に対する理解力が高い)
- IT 技術に対する適性がある (コンピューターゲームも広義の IT とした場合)
- 数学が得意な人
- 規則性に対に対する適性がある
- パズル、ペンシルパズル (ナンバープレースやお絵かきロジックなど) が得意な人
- 推理・仮説思考に対する適性がある
- 規則性に対する適性がある
プログラマーの適性につながる要素
下記のような能力や思考を持っている人はプログラマーに向いているかもしれません。
IT 技術やプログラムに対する適性・執着心 (こだわり、愛着)
項目 | 概要 |
---|---|
意味 | コンピューター、スマートフォン、サーバー、プログラミング言語、技術に対して、使うことや知識への適性の高さや欲 (仕事以外でも自分の欲のためにプログラミングできたり、技術資料、技術系ニュースを追いかけたりできる) |
能力がある場合 | ・仕事のモチベーションが高い状態で維持しやすい ・IT 技術全般に慣れていて仕事が早い ・新しい仕事を任されたときにそこで使う技術を既に知っている場合があり、アドバンテージになる (顧客やプロジェクトメンバーとの話がスムーズになる、すぐに仕事に取りかかれる等) |
能力がない場合 | 単純に仕事が遅くなる (PC の操作自体がおぼつかない、タイピングが遅いなど) |
規則性に対する適性・執着心 (こだわり、愛着)
項目 | 概要 |
---|---|
意味 | 統一化されたシステム (IT 以外のシステム、IT システム両方) や論理体系に対する適性の高さや欲 |
能力がある場合 | プログラミング習得に繋がりやすい (プログラミングは規則によって成り立っているため、規則に対する執着があると理解が早い。興味を持続しやすい) |
能力がない場合 | プログラミングが習得できない、整ったプログラムを早く作ることができない |
推理・仮説思考
項目 | 概要 |
---|---|
意味 | ・推理: 起こった問題・起こりそうな問題に対して、どういう原因でその問題が起きたのか (起きるのか) を周囲の状況や前提条件をもとに論理的に推測し、絞り込むこと ・仮説: 推理によって絞り込んだ原因の候補や、原因を解決するための解決方法の候補 |
能力がある場合 | ・システム開発はその時点での原因不明な問題が起きやすいため、「何故その問題が起こったのか?」などの原因特定をしやすい ・原因特定を行った後、妥当な (その状況においてベターな) 解決方法を見つけ出して解決していくことができる |
能力がない場合 | 自分の頭で考えて主体的に仕事を進めることができない (他人にレールを敷いてもらう仕事 = 単純作業に近い作業しかこなせない) |
実験的思考
項目 | 概要 |
---|---|
意味 | 失敗をいとわず、むしろ意図的に失敗を起こすチャレンジ (実験) をして、新しい発見や知見を得ようとする考え方 |
能力がある場合 | ・新しい概念 (プロジェクト、言語、ライブラリ、フレームワーク、サービス、機材) を使用・理解しやすい ・想定通りにプログラムが動くまでソースコードを変更 (書く → 実行 → 消す、など。トライアル・アンド・エラー) していくことができる |
能力がない場合 | ・新しい概念の理解や使用ができなかったり、遅くなる。人に教えてもらわないと仕事が進められない ・プログラムを完成させるまでの時間が遅くなる |
抽象化・共通化・標準化
項目 | 概要 |
---|---|
意味 | ・抽象化: いくつかの事柄に共通する重要な部分を適切に抽出して扱うこと ・共通化: いくつかの事柄や作業を整理して、同じように扱えるようにまとめること ・標準化: いくつかの事柄や作業を整理して、ルール (全社ルール、チームルール) として決めること |
能力がある場合 | ・少ない時間で仕事の成果を上げていくために、プログラムや仕事の重要な部分・不要な部分を切り分けられる ・ 誰が作業しても効率的で結果が同じような品質になるようにできる ・顧客の仕事の洗い出しができる ・過去の仕事から、新しい仕事に活用できる知識やプログラムを抽出して流用することで効率化を図ることができる |
能力がない場合 | 新しい仕事が増えても効率化することができない (かかる時間を抑えながら同じ品質を出す工夫ができない) |
説明能力 (アカウンタビリティ)
項目 | 概要 |
---|---|
意味 | 自分がしている作業の進捗、作成した設計書やソースコードの意味などを他人に合理的に説明する能力 |
能力がある場合 | 顧客への説明 (プロジェクト進捗状況、設計、システムの操作方法、不具合の説明)、プロジェクトメンバーへの説明 (設計、実装の説明) ができる |
能力がない場合 | 関係者と連携して仕事を進めることが難しくなる。無駄な仕事が増える場合がある (顧客への説明を怠ったせいで進捗報告の頻度や要求が厳しくなるなど) |
根気
項目 | 概要 |
---|---|
意味 | 必要な仕事を諦めずに最後までやり遂げる気力 |
能力がある場合 | 難しいプログラム完成や理解できない知識の理解、顧客との折衝を最後までやり切れる |
能力がない場合 | 難しい仕事 (技術的に難しい、納期が厳しいなど環境が悪くて難しい) だと、メンタル不調になりやすい |