どんな仕事?
システム開発において、システムエンジニア(SE)が作成した詳細設計に基づきプログラムを作成する。
システム開発の流れをみていくと、SEが顧客の要望をヒアリングし要件定義を行い、この要件定義に基づいて基本設計を行う。この基本設計を基に細部に至るまで処理方法を確定する詳細設計を行う。
この詳細設計に基づきプログラマーがコーディングし、プログラムを作成する。また、プログラマーは出来上がったプログラムを個々に動作させて確認を行う単体テストを行う。複数のプログラムを組み合わせて行う結合テスト、そしてシステムとしての動きを見る総合テストをSEとともに行うこともある。バグが見つかればそれを解析の上、修正する(「デバッグ」)。担当したプログラムが出来上ると、今後の保守に必要なドキュメント(開発したプログラムの説明、テスト結果等)を作成するのもプログラマーの仕事である。基本的にはSEの仕事は基本設計や詳細設計と結合テストや受け入れテスト、また納品後のアフターケアであり、プログラマーはコーディングし、プログラムの単体テストを行い、担当したプログラムを完成させる。
アジャイル開発ではプロトタイピングを繰り返し、最初は荒い全体の開発、その中での個別機能の開発、さらにその中の開発という具合に、徐々に詳細な開発をプロトタイプとして行っていく。このプロトタイプ作成の中でプログラマーがソフトウェア作成を担当することもある。
プログラムには様々な種類がある。経理等各種業務用のソフトウェア、ショッピングサイトなどWeb用のプログラム、家電製品や電子機器などを制御するプログラム、PC向けソフトウェア、スマートフォン向けアプリ、ゲームのプログラム、さらに、通信やオンラインを制御するプログラム、また、大型汎用計算機のプログラムなど、様々である。開発言語や開発環境はそれぞれ異なり、プログラマーは得意とする分野のソフトウェアを作成する。
また、今日、多くの情報システムが稼働しており、それら既存のシステムを修正し、変化に対応したり、機能を追加する開発も多く、このような開発に関わるプログラマーもかなりいる。
開発するシステムの規模は様々であり、小さいものは1人で作成したり、大規模なシステムでは数百人のプログラマーがチームに分かれ、開発する場合もある。
Web画面の開発ではデザインツールから自動的にHTMLなどが作られ、プログラミングの必要がなくなっている。また、プログラムのツール、ライブラリー、モジュール等が整備され、SEがプログラム作成をプログラマーに依頼しなくても、システム開発がかなりの程度できるようになっている。
しかしながら、ツール等で作られたプログラムは整理されておらず、その後の修正や機能追加が難しい。プログラマーには効率的で整理された分りやすいプログラムを作成する、職人的な仕事が期待されている。また、プログラミングのエキスパートとして、ツール等ではできないクリエイティブなプログラムを作成したり、ブロックチェーン、AIなど特定分野に特化した専門性の高いプログラムを作る場合もある。
よく使う道具、機材、情報技術等
OS(オペレーションシステム:Linux、CentOS、ubuntu)、統合開発環境、プログラミング言語(C言語、Java、Python、Ruby、HTML等)、デザインツール(Figma)、データベース(MySQL、Oracle、MongoDB等)、パソコン