プログラミングに必要な力は大きく3つ
プログラマーがプログラミングを行う上で必要になる力は大きく3つあると思います。
細かい部分を挙げるとキリがないので、この必要になる3つの力について書いていこうと思います。
プログラミングに必要な力
全体の設計を考える力
何かソフトウェアを作る場合、最終的な完成形を目指してコーディングすると思います。
まずは完成形から機能の切り分けや共通化、保守性に関わる全体の見通しの良さ等の全体の設計を考える力が必要になります。
大きなプロジェクトではリーダークラスのエンジニアが担当する事の多い大事な部分となります。
この部分がよく考えられていない場合、後になって問題が噴出してきます。
開発工数や効率、タスクのクリティカルパス、サービス後の手間などあらゆる部分に影響を及ぼします。
プログラマーとして新人のうちは全体の設計を考える機会は少ないと思いますが、新人のうちから全体の設計を意識して勉強しておくとよいと思います。
小さな会社で単発の小さな案件では新人のうちから全体の設計を考えるような事があるかもしれません。
全体の設計も時代の流行がありますので、最新の技術情報に触れて自分の考えに取り入れ、過去に行ったり出会った設計の経験を加えてブラッシュアップしていきます。
この能力を磨いていけば実際にコーディングをしなくても、これだけで上流工程で仕事として成立するような大事な力です。
パフォーマンスを考える力
いくら設計が優れていても個々の処理のパフォーマンスが悪ければいいものは作れません。
実用の段階でパフォーマンス上の問題が見つかり、長期間公開停止からの結局作り直しという事例を時々耳にすることがあります。
処理の効率を上げパフォーマンスを出せるようなアルゴリズムやデータ構造、最適な手順などを考える必要があります。
また大規模なシステムでは処理能力のスケーリングも考えておく必要があります。
全体の設計と絡んできますが、必要に応じて処理能力をサーバ数やCPU数などで処理能力をスケーリングできるような仕組みです。
セキュリティを考える力
近年では特にアプリやサービスのセキュリティがよく問題になっています。
いくら全体の設計が良くてパフォーマンス的にも素晴らしいものであったとしても、1つ大きな脆弱性が発覚した段階でダメになってしまいます。
7payの例が記憶に新しいと思います。
各プログラマーはセキュリティを意識したコーディングを行う必要があります。
ベース部分にフレームワークなどを使用している場合はあまり意識することがないのかもしれませんが、最低限のセキュリティの知識は必要です。
もし仕様的にセキュリティ上の穴がある場合は、必ず仕様を考えた人に伝えて変更してもらいましょう。
また、仕様上の範囲内で各コード内でも簡単な制限をかけて、不正な事をやりづらくしておく必要もあると思います。
とにかくプログラマーは悪意ある人の立場になって「このアプリ、システムで不正な事は出来ないか」と常に考えながら、それが出来ない処理を書いていくべきです。
また何かセキュリティ的にマズい事に気付いたら、必ず上長やプロジェクトマネージャーなどに伝えて対応方針を相談し、自分だけで抱えておかないようにしましょう。
まとめ
プログラミングで必要になる力はここで挙げた3つ以外にもたくさんあると思います。
まずは分かり易い大きな3つの力を挙げてみました。
ひとりで独学でも勉強できることだと思いますが限界があると思います。
やはり実践経験から学ぶのが一番早くて確実だと思います。
いきなり実践が怖い人は、最近ではプログラミングスクールという手もあります。
自分に合った方法で学習して少しずつプログラマーとして前に進んでいきましょう。