プログラマーやエンジニアは今や有名な職業です。
パソコンやインターネットの普及により、どんな職種・企業でもITの知識は当たり前。プログラマー・エンジニアの需要も右肩上がりで増加して、他のデスクワークに比べて高収入・高待遇が魅力の職業です。
もちろん、忙しいときもありますが、介護士からプログラマーに転職した僕にとっては、短い労働時間で倍近くの給料が稼げるプログラマーの仕事が本当に驚きでした。
さて、そんなプログラマーというお仕事ですが、実際に働いていない人にとっては「どんなことをやるのか?」という人が多いのではないかと思います。
このページでは、現役プログラマーである当サイト管理人の僕が、できるだけ具体的にプログラマーという仕事をご紹介したいと思います。
プログラマーの種類
ひと言で「プログラマー」といってもいろいろな種類があります。
今ご覧になっているWEBサイトなどを制作したり開発するプログラマーを「WEBプログラマー」といったり、スマホアプリやテレビゲームを開発するプログラマーを「ゲームプログラマー」といったりします。
プログラマーの具体的な仕事内容
プログラマーの種類によって扱うプログラミング言語や知識・スキルも変わってくるし、実際の開発工程も若干異なります。もちろん働く職場によっても違うでしょう。
ここでは一般的なプログラマーの仕事内容をご紹介します。
設計からテストまでを担当する
アプリやサービスの開発は、大きく以下の工程に分けて開発されます。
- 全体設計
- 詳細設計
- プログラミング
- 詳細テスト
- 全体テスト
プログラマーは「詳細設計・プログラミング・詳細テスト」を担当します。
開発手法やプロジェクトの進め方によって異なりますが、一般的なプログラマーの仕事内容は上記の3つの工程です。
詳細設計(開発するアプリやサービスを設計する)
アプリやサービスは、ひとつひとつの部品を結合して作り上げていきます。
まず全体設計では、ディレクターやSE(システムエンジニア)などが中心となって、アプリやサービスの全体の設計をします。全体設計の中で開発するものを複数の部品に分けて設計します。
「分けられたひとつひとつの部品を細かく設計していくのがプログラマーのお仕事」です。
- 部品の流れ(ロジック)を設計
- エラーのときの動作を設計
- ログ(動作の記録)をどのように残すか設計
といったことを決めて設計書を作ります。
アプリやサービスの処理の流れは、プログラミング(コードを書く)ときではなく詳細設計の段階で決めてしまいます。
設計書はWordやExcelなどを使用してドキュメントとして残すことが多いです。WEB系の開発の場面では図などで表現することもあります。
設計書を作成したら、それをもとに何人かのプログラマーで集まり設計書をレビュー(確認)します。
- 全体設計で決めた仕様を満たしているか
- 処理の流れが正しいか
- エラーのときの処理が考慮されているか
といったことを確認していき、問題がなければ実際のプログラミング工程に移ります。
プログラミング(設計どおりにコーディングする)
詳細設計で作った設計書をもとに、実際にプログラミングします。
みなさんが想像する「プログラマー!」って感じの工程ですね。
最近では、統合開発環境(IDE)やフレームワークなどを使う機会が多いですが、案件によっては「テキストエディタ」でコードをゴリゴリ書いてプログラミングする場合もあります。
プログラミング中に想定外の問題が発生したとき、少しの手直しであればその場で設計書とコードを直してしまいます。
ですが、その問題が詳細設計の全体に及んでしまう場合や、全体設計にまで及んでしまう場合などは、工程を遡って設計からやり直すこともあります。
プログラミング(コードを書いていく)工程はある意味プログラマーの見せ場ですが、プログラミング言語を扱うのに必要なのはセンスではなく言語を覚えているかどうか?です。
最近では、わからない部分を調べる力があれば覚えていなくてもプログラミングできます。
本来のプログラミングの工程では、プログラミングする(コードを書く)だけで動作確認や細かいテストはしません。
ですが、最近の開発の現場ではスピード感を求められることもあったり、「コードを書く→テストをする」を繰り返しながらプログラミングしていくスパイラル手法という開発手法もあり、必ずしもコードを書くだけではありません。
詳細テスト(プログラムを動かして動作確認をする)
プログラミング工程が終わり部品ができたら、それを動作させて正しく動くがどうかをチェックしていきます。これが詳細テストです。
プログラミングして作った部品(これをモジュールなどと言います)には、必ずインとアウトがあります。
例えば「1」という数字をモジュールに渡した時、その結果としてモジュールから「2」が返ってくるという仕様があったとします。
このとき
- 1を渡したら2が返ってくるか?
- 想定外の数字(例えば0)を渡したらエラーとして処理されるか?
という確認をするのが詳細テストです。
設計書に従ってプログラミングした全ルートを通るように確認するのが詳細テストで、なかなか根気のいる作業です。
このテスト工程は非常に大事で、ここでプログラミングの間違い(バグ)を確実につぶしていき、設計自体に問題があるときは工程を遡って見直すこともあります。
詳細テストを疎かにすると、後々アプリやサービス全体に及ぶエラーとなることもあるので、面倒ですがプログラマーとしてはしっかり確認しなければなりません。
プログラマーの仕事内容のまとめ
以上の3つの工程がプログラマーの仕事ですが、必ず上記の工程に分けて開発するわけではないし、プログラマーの熟練度や会社の規模によっても異なります。
たとえば、経験豊富なプログラマーは全体設計に加わってディレクターのような仕事も同時にこなすことがあります。また、規模が小さい会社だとSE(システムエンジニア)が担当するようなお客との交渉・仕様決めも行うことがあります。
上記のような場合は、単純にプログラミングスキルがあるだけではなく
- 全体を設計できる想像力
- お客やユーザーの要望を引き出す交渉力
- こちらの考えを言葉で伝える表現力
といったスキル(能力)も必要になります。
もちろん新人のプログラマーがいきなり上記のようなことをするわけではありません。また特殊能力でもありません。
プログラマーとして経験を積んでいけば自然と身につくスキルです。
担当する範囲が広くなり責任が大きくなる分、やりがいもあり報酬も大きくなります。プログラマーが高収入になるのもこのためです。
僕は今、複数の仕事(案件)を同時に抱えていて、ある案件ではディレクターとして全体を見回す仕事、ある案件ではプログラマーとしてプログラミングして開発しています。
今回ご紹介したプログラマーの具体的な仕事内容が、実際に1日の中でどのように行われているかは以下のページでご紹介しています。ぜひ合わせて読んでみてください。