プログラマーとは、システム開発において、システムエンジニア(SE)が作成した詳細設計に基づきプログラムを作成する職業です。
システム開発において、システムエンジニア(SE)が作成した詳細設計に基づきプログラムを作成する。
システム開発の流れをみていくと、SEが顧客の要望をヒアリングし要件定義を行い、この要件定義に基づいて基本設計を行う。この基本設計を基に細部に至るまで処理方法を確定する詳細設計を行う。
この詳細設計に基づきプログラマーがコーディングし、プログラムを作成する。また、プログラマーは出来上がったプログラムを個々に動作させて確認を行う単体テストを行う。複数のプログラムを組み合わせて行う結合テスト、そしてシステムとしての動きを見る総合テストをSEとともに行うこともある。バグが見つかればそれを解析の上、修正する(「デバッグ」)。担当したプログラムが出来上ると、今後の保守に必要なドキュメント(開発したプログラムの説明、テスト結果等)を作成するのもプログラマーの仕事である。基本的にはSEの仕事は基本設計や詳細設計と結合テストや受け入れテスト、また納品後のアフターケアであり、プログラマーはコーディングし、プログラムの単体テストを行い、担当したプログラムを完成させる。
アジャイル開発ではプロトタイピングを繰り返し、最初は荒い全体の開発、その中での個別機能の開発、さらにその中の開発という具合に、徐々に詳細な開発をプロトタイプとして行っていく。このプロトタイプ作成の中でプログラマーがソフトウェア作成を担当することもある。
プログラムには様々な種類がある。経理等各種業務用のソフトウェア、ショッピングサイトなどWeb用のプログラム、家電製品や電子機器などを制御するプログラム、PC向けソフトウェア、スマートフォン向けアプリ、ゲームのプログラム、さらに、通信やオンラインを制御するプログラム、また、大型汎用計算機のプログラムなど、様々である。開発言語や開発環境はそれぞれ異なり、プログラマーは得意とする分野のソフトウェアを作成する。
また、今日、多くの情報システムが稼働しており、それら既存のシステムを修正し、変化に対応したり、機能を追加する開発も多く、このような開発に関わるプログラマーもかなりいる。
開発するシステムの規模は様々であり、小さいものは1人で作成したり、大規模なシステムでは数百人のプログラマーがチームに分かれ、開発する場合もある。
Web画面の開発ではデザインツールから自動的にHTMLなどが作られ、プログラミングの必要がなくなっている。また、プログラムのツール、ライブラリー、モジュール等が整備され、SEがプログラム作成をプログラマーに依頼しなくても、システム開発がかなりの程度できるようになっている。
しかしながら、ツール等で作られたプログラムは整理されておらず、その後の修正や機能追加が難しい。プログラマーには効率的で整理された分りやすいプログラムを作成する、職人的な仕事が期待されている。また、プログラミングのエキスパートとして、ツール等ではできないクリエイティブなプログラムを作成したり、ブロックチェーン、AIなど特定分野に特化した専門性の高いプログラムを作る場合もある。
◇ よく使う道具、機材、情報技術等
OS(オペレーションシステム:Linux、CentOS、ubuntu)、統合開発環境、プログラミング言語(C言語、Java、Python、Ruby、HTML等)、デザインツール(Figma)、データベース(MySQL、Oracle、MongoDB等)、パソコン
入職にあたって、特に学歴や資格は必要とされない。専攻も特に問われず、最近は文系出身のプログラマーも多い。ただし、専門学校等でプログラミングを学んでいたり、必須ではないが、基本情報技術者等の資格を持っていると入職時に有利になる。
新卒で入職、あるいは未経験で他の仕事から入職した場合、企業内で一定期間の教育を受けた後に、プログラマーとして配属される。配属後、半年から1年間程度、先輩プログラマーやSEなどの指導を受けながら、部分的なプログラムを担当したり等、プログラマーとしての経験を積んでゆく。一人前のプログラマーとして認められ、詳細設計書を自分で読み解き、時にはその中の誤りを指摘できるレベルになるには、3~4年かかるといわれる。
その後のキャリアパスとしては、プログラマーからチームリーダーになり、管理職になっていくというルートがある。それ以外にSEに転身してシステム設計に携わる人、また、知識と経験を活かして、営業になる人もいる。高い技能や専門性を持ったプログラマーも求められおり、プログラマーとしてのスキルを磨き、プログラミングのエキスパートとなる人も少なくない。
プログラマーになる資質としては、ITリテラシーがあり、情報セキュリティに対する意識が高いこと、SEとは違い、顧客に直接接することは少ないが、顧客の内部情報に触れることもあるため、個人情報の取扱い、コンプライアンスに注意を払うことが求められる。
使用するプログラミング言語は色々なものがある。WebサイトのプログラムではJava、PHP、Rubyなどの言語が使われる。PCやスマホのゲームではC言語が多く用いられる。AI(人工知能)の開発ではPythonなどが多い。
今日、Webサイトのためのプログラミングの仕事が多いが、このためにサーバのOS(オペレーティングシステム)であるLinux、Webサイトを実現するApache、データベースのMySQL、Oracle、MongoDBなどの知識がプログラマーに求められることもある。
東京や大阪を中心とする大都市とその周辺で就業することが多い。システム開発会社やWeb開発会社などのIT企業、また、製造業、金融・保険業、建設業などの企業や研究機関からプログラム作成を受託した会社で働くことが多い。
就業者は男性の割合が高く、20歳代後半から40歳代が多い。
コンピューターがあればプログラム作成はできるが、セキュリティの観点からインターネットを遮断した環境下で開発をすることもあり、この場合、リモートでの働き方はできない。顧客との守秘義務やトラブル対応の関係もあり、プログラム作成を受託した会社の正社員として働いていることが多い。
賃金、労働時間等労働条件は勤務先の規定によるが、開発期限が迫っていたり、開発に問題が生じたような場合は、休日や夜間に仕事をすることもある。
プログラミングを海外に発注するオフショアも広がってきたが、最近の円安傾向もあり、現在、拡大しているという状況ではない。
先に述べたように画面デザインから自動的にHTMLが作成されたり、一般的なシステム開発はクラウドサービスでも行われるようになったり、「ノーコード」と言われるように、プログラミングの必要なく、かなりの部分のシステム開発ができるようになっている。生成AIによるプログラムも年々、質が良いものになっており、コメントアウトなども適切に配置され、分かりやすくなっている。このような中、プログラマーはエンジニアとしてシステム全体の開発を担当するようになったり、プログラミングの技を磨き、開発になくてはならない役割を果たすようになったりであたり、ブロックチェーン、AI、ゲームなど特定分野の専門性を活かし活躍している人もいる。さらには、スーパープログラマーや天才プログラマーと呼ばれ、活躍している人もいる。
業界をまたいで、AI 影響度が同水準の代表職業(規模順)。