みなさんはプログラマーの仕事について具体的に知っていますか?
プログラマーはさまざまな仕事をこなし、システムの根幹を左右する重要な業務を担います。
この記事ではプログラマーの仕事について、システム開発の流れをもとに具体的に説明します。プログラマーのランクづけや1日の業務内容など、プログラマーを目指す方やプログラマーという仕事を知りたい方は必見です。ぜひご覧下さい。
参照:フリーランスでプログラマーとして活躍するための極意を紹介した記事はこちら
システム開発フローから考えるプログラマーの仕事
システムの開発手法にはさまざまな方法がありますが、ここでは一般的なウォーターフローモデルからプログラマーの仕事を解説します。
上流工程ではあまり出番がありません
お客様の業務内容のヒアリングやシステム化する範囲などを決めるフェーズを業務分析・要件定義と呼び、システムの基本的な枠組みや大枠をデザインするフェーズを基本設計と呼びます。
これらはSEが担当する仕事のためプログラマーの出番はありません。プログラマーは次の詳細設計と呼ばれる段階で仕事が始まることがほとんどです。
プログラマーの仕事:プログラムを書くための設計書作り
案件によって名前は違いますが、プログラムを書くために詳細な指示が書かれた設計書を詳細設計書と呼びます。
プログラマーの仕事のひとつにはこの詳細設計書作りがあり、ほとんどの場合SEの指示に従って作成します。
プログラマーなのに設計?と思われるかも知れませんが、システムの細かい機能の実装準備にプログラマーが関与することは珍しくありません。
プログラマーのメイン業務:製造・プログラミング
プログラマーのいちばん大きな仕事はプログラミングです。SEや他のプログラマーが作った設計書をもとに、アプリケーションやwebサービスのコーディングを行います。
単にコーディングするだけでは2流以下のプログラマー
コーディングは設計書をもとに行いますが、プログラミングする段階で気づいたことをSEに伝えることもプログラマーの重要な仕事です。
プログラミングでバグを出さないことが困難を極めるのと同様、完璧な設計書もなかなか存在しません。
コーディングしながら「この画面は使いづらい」「このSQLはこうすればもっと早くなる」など気づいたことをSEと共有してシステムの品質を上げていくことが大切です。
単体テスト:プログラマーの自己点検
プログラミングを終えたあと、そのプログラムが正常に動作するかどうか確認する仕事が単体テストです。このテストはSEが用意したチェックリストに従ってプログラムが正常に動作するか確認し、チェックリストに載っていない項目も「作ったものの責任として」隅々までチェックします。
システムの機能の確認:結合テスト
結合テストとは複数のプログラムを組み合わせて行うテストでシステムの機能が正常に動作するかを確認します。製造・プログラミングのフェーズほどではないものの、不具合が出れば対応する必要があるためプログラマーの仕事はまだ終わりません。
いよいよ完成間近:総合テスト
結合テストにてシステム機能単位の正常動作が確認できれば、すべての機能を連携させて、ひとつのシステムとして動作することを確認する総合テストのフェーズに進みます。
もちろんこの段階でも不具合が出ればすぐに対応する必要があるため、プログラマーの出番です。しかし、単体テスト・結合テストの段階である程度不具合が判明して対応済みですから、プログラマーはすでに他の案件に移っていて不具合が出た時だけヘルプで対応するといったことも行われます。
プログラマーの仕事内容をさらに深掘りして解説
ここではプログラマーを3つに分け、それぞれの仕事内容を説明します。
一般プログラマー:コーダーとも呼ばれるコーディング要員
設計書に基づいてプログラミングをする仕事はほぼすべてのプログラマーに共通する仕事です。一般にプログラマーの仕事というとこのようなコーディングを指しますね。
リーダープログラマー:とりまとめやレビューなどの仕事も担う
プログラマーの仕事を続けていくと複数のプログラマーをとりまとめるリーダー的役割を担うこともあります。
案件によりますがリーダーなどと呼ばれることが多く、複数のプログラマーの進捗や質問、業務内容をとりまとめて管理します。プログラミングをしていると設計書の書き方や仕様や設計指示に対する質問や相談が出てきますが、ひとりひとりのプログラマーがSEに質問をするのは非効率です。
そこでリーダーのプログラマーがSEとのパイプ役になり、質問や相談、設計・プログラミングの要所を押さえておくことで、他のプログラマーに指示をしたりSEの補助をしたりします。
意外と重要なレビューへの参加
設計書やプログラミングルールをまとめたコーディング規約などは、作成したあと複数のSEが目を通して誤りがないことの確認と品質向上のためのブラッシュアップを行います。この作業をレビューと呼びますが、リーダークラスのプログラマーもこのレビューに参加してプログラマーの視点から要望や意見をSEに伝えます。
プログラミングを極めたアーキテクトプログラマー
システム作りでは共通部品・基盤と呼ばれるフレームワークを作ることが一般的です。プログラミングレベルでは、データの受け渡しやデータベース入出力などあらゆるプログラムで利用できる部品作りは効率的なシステム開発に不可欠であり、これの設計や製造を担うのがアーキテクトと呼ばれるSEやプログラマーです。
共通部品はあらゆるプログラムで使われるため設計製造の難易度が高く、もっともスキルが高いプログラマーが関わります。
とあるプログラマーの1日
それではとあるソフトウェア会社に勤めるプログラマーの1日を見てみましょう。プログラマーと言っても色々な仕事をこなしているとわかるはずです。
出社したら早速ミーティング:プログラミングはまだしない
始業と同時にリーダープログラマーとミーティングルームで打合せが始まります。前日までの進捗、今日の予定、質問や相談事項の確認、プログラマーへの共有事項の伝達といった重要な打合せです。
さっそくプログラミングにとりかかる
打合せのあと開発端末でプログラミングを始めます。前日までの作業内容を確認しつつ、打合せで伝えた今日の進捗目標を終わらせるために頑張る時間です。
システムエンジニアから設計書の説明を受ける
次に作成する機能の設計書が完成したということで、システムエンジニアと打合せです。設計書は基本的に読めばわかるように書かれてはいるものの、文字や図表だけでは伝えきれないポイントなどはシステムエンジニアから直接説明を受けることがあります。
実際にコーディングできるかどうか、その場でSEに直接質問ができることから大変重要な打合せです。
ランチ後に不具合?!リーダープログラマーと打合せ
ランチのあとプログラミングに再度取りかかりましたが帳票がうまく表示できないため、リーダープログラマーに相談に行きました。
どうやらコーディングしている機能で出力する帳票が他の帳票に比べて行数が多いため、パラメータの設定を変更する必要があります。
設計書の指示通りではうまくいかないこともあります。プログラマーでは判断できないのでリーダーを通して、SEに相談するのもプログラマーの仕事です。
無事に今日の進捗達成〜帰宅後は?
SEやリーダーへの相談・報告も済ませ、朝の打合せで決めた今日の進捗も達成したので、業務終了です。リーダーやSEが打合せで不在の場合は進捗が進まず残業になることもありますが、今日は特に大きな出来事もなく仕事が進みました。
帰宅後は趣味のコーディングやゲーム、ブログ執筆、飲み会やフットサルなど思い思いの生活を楽しんで翌日に備えます。
プログラマーは意外とプログラミングをしない?
プログラマーの具体的な仕事についてご説明しましたが、ひょっとしたら以外とプログラミングの時間が少ないと感じられたかも知れません。
プログラマーの主な仕事はプログラミング・コーディングです。しかしコードを書くためには設計書が必要ですし、ドキュメントを作る人との調整もプログラマーの仕事に含まれます。
PJで仕事をする以上、他のメンバーと歩調を合わせることや、ナレッジや注意点の共有のための打合せをすることなども仕事に含まれます。
みなさんはこの記事を読む前とあとでプログラマーの仕事へのイメージは変わりましたか?コーディング以外の仕事は結果的に、質の良いプログラミングに結びつきます。
積極的にPJに関わり、素晴らしいシステムを作って下さいね!
参照:フリーランスでプログラマーとして活躍するための極意を紹介した記事はこちら
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)