このページでは、あまり知られていない「プログラマーの仕事内容」について紹介します。
いきなり結論から言ってしまうと、プログラマーの主な仕事は以下の2つです。

よく分からないぞっ??

コンピュータがどう動くかの指示書がプログラムなんだ。
プログラミングについては、別のページで説明するよ。
簡単にプログラミングについて説明をしておくと、
例えばなのですが、パソコンやスマホを初め、電子機器にはプログラムが入っています。アプリケーション(アプリ)とか、システムなんて呼ばれていますが、コンピュータがどう動くかは、プログラマーが事前に「指示書」を作っています。
コンピュータがどう動くかの指示書を「プログラミング」と呼んでいます。

事前にやることを決めているわけか

コンピュータは決められたことをするのが得意なんだ。
なので、どう動くかを「指示書」として作っておくんだよ。
良くシステムエンジニア(SE)とプログラマーは混同されてみられるけど、仕事の内容は違います。
システム開発は「分業制」で行うのが一般的です。システムがどう動くかを決めるのがシステムエンジニアで、システムエンジニアが設計した通りにプログラミングをするのがプログラマーです。
プログラマーの仕事内容
プログラマーの仕事は、コンピュータのために「いつ、何をどんな順番で行うか」の手順書を作ることです。その手順書をプログラミングと呼んでいます。
コンピュータが理解できるように「プログラミング言語」を使って、さまざまなシステム、アプリケーションを作っていきます。

何を言っているか分からない・・・

ちょっとプログラムについて説明しておくよ
プログラムとは、コンピュータがどう動くかを決めた指示書なんです。コンピュータはプログラム通りに動きます。というか、プログラム通りにしか動きません。
そのプログラムを作るのが「プログラミング」
そして、そのプログラミングとは「このボタンが押されたら、この画面を開いて、このデータを表示する」というように、コンピュータがどう動けば良いのかを書いてあるマニュアル、指示書を作る作業です。
人間同士であれば「言葉」を使って指示をしますが、コンピュータへの指示は「プログラミング言語」を使って指示書を書いておきます。

先にどう動くかを決めておくのか?
それって難しくないか?

あらゆる想定をしてプログラミングしていくんだよ
難しいけど、そこが楽しかったりするんだ
そして、作ったプログラミングが想定通り動くかを確認(テスト)するのもプログラマーの仕事です。作った指示書通りに動くか、想定は漏れていないかを確認します。
ちょっと具体的にどんなことをしているかを紹介します。
プログラミング
システム開発時のプログラマーの役割は、プログラミングを行うことです。システムエンジニアが設計した仕様書通りに動くようにコンピュータへの指示書を書いていきます。

なんか簡単だな・・・

設計書が完璧で、プログラミング言語に詳しければ、プログラミングなんて簡単なんだよ。でも、上手くいかないことが多いんだよね。
システムエンジニアが作った設計書通りにプログラミングをするのですが、同じ処理でも、違う命令を使って、プログラミングができます。なので、読みやすい、メンテナンスしやすいプログラミングをするスキルが求められます。
加えて、システムエンジニアが作った設計書は、想像で作っていることが多く、仕様的に破綻していることもあります。なので、プログラミングだけをすることは稀です。仕様の不具合を発見するスキルもプログラマーに求められます。
動作チェック(テスト)
プログラミングが終わったら、思った通りに動くかをチェックします。プログラムが想定通りに動かないとシステムとして動きませんよね。なので、きちんと動くかのテストを行います。
プログラマーの仕事は、設計書通りにプログラミングをすること、そして、設計書通りに動くかを確認(テスト)すること。
なのですが、段々とプログラミングの経験を積むことで、設計を行うことが増えてきます。特に大手開発会社のビッグプロジェクト以外だと、システムエンジニアとプログラマーの境目がなくなってきています。
以前は、はっきりと仕事が別れていましたが、短納期、規模の小さいシステムだとシステムエンジニアとプログラマーの仕事を同じ人が行うことが多くなりました。スケジュールや行程の管理などプログラマーが行うことも増えてきました。
システムエンジニアとプログラマーの違い
一般的にシステム開発は「分業制」で行われていることが多く、システムエンジニアがシステムとしてどう動くかを設計して、その設計通りにプログラミングするのがプログラマーの仕事です。

完全な分業制なのか?

結構、曖昧な線引きなんだけど、システム開発ってやることが多いから役割を分けるんだよ。特に大きなシステムのときはね。
家を建てるときに例えると、システムエンジニアは「建築士」で、プログラマーは「大工」です。
どんな風に動けば、ユーザの満足を得られるかを考えるのが、システムエンジニアで、その設計したシステムを実現するのがプログラマーの役目です。
ここだけの話ですが、一緒に仕事をするシステムエンジニアのスキルによって、プログラマーの仕事内容は変わってきてしまいます。あまり大きな声では言えませんが、システムを理解していないシステムエンジニアが設計をすると論理的に破綻していることがあるんです。
設計書通りにプログラミングをしたのにテストの段階で正しいデータになっていなかったり、そもそもシステムとして動かなかったり、さらに仕様変更があったりしてプログラミングをしなおすことも・・・。

テスト行程は納期前で忙しいから、仕様変更なんてあるとマジで凹むよ

作り直しなんて、ご愁傷様だな・・・
その辺の話は、止まらなくなるので話を進めますね。機会があったら別ページにまとめます。
プログラマーのキャリアパス
プログラマーである程度経験を積んで、システムエンジニアにジョブチェンジするのが一般的でした。しかし、最近ではプログラミングスキルを極めるスーパープログラマーとしての道を用意している企業も現れました。
以前のIT業界では、プログラマーからシステムエンジニアへ。そして、システムエンジニアから、プロジェクトマネージャーと現場の作業から、マネージメント業務へと役割を変えることが当たり前のコースでした。
最近では、プログラミングスキルをつけ、フリーランスのエンジニアになったり、プログラミングに特化した人材になったり、働き方は比較的、自分で決められることが多くなりました。
これから求められるプログラマーとは
プログラマーになりたてのときは、プログラミング言語を学び、効率よくプログラミングが作れるスキルが必要です。プログラミングスキルは、プログラマーの必須のスキルです。
さらに上位のプログラマーを目指すなら、プログラミングスキルに加えて、システム全体の設計ができるスキル、ユーザと仕様を決めるためのコミュニケーションスキルなど求められるスキルが必要になります。
個人的な意見を言わせてもらえば、これからは「一人で『打合せ』『設計』『プログラミング』『テスト』『保守』ができる」プログラマーが求められると感じます。

なんでもできる人材ってことか?

プログラミングスキルだけでは稼げなくなってくると思うんだ
ここ最近の流れだと、プログラミング言語を使うハードルは段々と低くなってきています。技術の進歩で簡単にプログラミングが行えるフレームワーク(よく使う機能を用意した仕組み)が用意されていることが多くなりました。
テストの自動化も行える技術も出てきているし、もしかしたら、プログラミングをするプログラムも登場するかもしれません。
これからプログラマーとして生き残るためには、システムを使う人間とコミュニケーションをとり、コンピュータに上手く伝える技術が必要になってくると思います。

個人的な意見だけどね
まとめ
プログラマーの主な仕事内容は以下の2つです。
実際には、プログラミングとテストだけを行うことは稀ですが、プログラミングスキルは、プログラマーに必須のスキルです。
プログラマーを目指すなら、まずはプログラミングの勉強をしましょう。

プログラミングについては他の機会に紹介するよ
コメント