プログラマーはとは、どのような役割のお仕事でしょうか。
定義としては、曖昧な部分もありますが以下となります。
システムエンジニアにより設計された内容を、プログラミングする。
したがって、プログラマーのお仕事としては、プログラムを設計通りに動くものとして実現することができれば問題はありません。
逆に言うとそれが役割としては最低必要となります。
その上でさらに1歩2歩も上をいくプログラマー。
先を読み行動ができるプログラマーとは、どのようなものでしょうか
それは与えられた役割だけではなく、視野を拡げてサービス全体を見れているか。
またそれに沿ってプログラミングが行えているか。
という観点になります。
こちらに関して具体的にお話をしていきます。
内容としては以下です。
実装するプログラムの理由を考えること
まず、プログラマーのキャリアを考えてみましょう。
プログラマーの次のステップとしては様々な方向性があります。
ただ、一般的なキャリアップとしては「システムエンジニア」という職種が考えられます。
システムエンジニアとは顧客の要望をヒアリングして、実際のシステムにて実現可能な設計に落とし込むという役割です。
したがって以下の事を常に考えていかねばなりません。
- 顧客が何を求めているか。
- サービスが何の目的として作られているのか。
プログラマーとしては、システムエンジニアが設計した内容をプログラミングすることでコンピュータ上で実現できれば良いです。
ただ、そのサービスやシステムがどのような目的の為に作られているかということ。
これを考えた上で、プログラミングすることができれば、単純に与えられた設計を進めるよりも、プログラマーとして更に1歩前に進めるはずです。
例えば、ある機能をプログラミングする際についても作り方は複数あるかと思います。
それを速度優先で作るのか、安定性を優先で作るのか。
これは、そのサービスやシステムが何の為に作られているかまで考えられているかによって、速度か、安定性か、どちらを優先すべきなのかが変わってきます。
また、別の観点にて、そのサービスの開発が終わり、リリースされた後のことを考えてみましょう。
リリース後、サービスは運用フェーズに入ります。
運用フェーズに入ったサービスは大きなプログラムの変更はあまりなく、安定的に動くことが1番に求められてきます。
そのため、サービスが安定的に動いているかのチェックの仕組みや、もしバグがあったときにも簡単に修正しやすい作りとなっているか。など。
システムが動き出してからのことをどれだけ考えて、作られているか。
そのサービスが実際に動き出してからという先までしっかりと見えているかという事も重要になります。
システム全体を見れる視野をもつこと
プログラマーとして1歩2歩先を進むためには、結論としては視野を広く持つこと、それをプログラミングに活かすことです。
視野を広くというところに関しては以下の観点があります。
(上でも同じことを記載していますが)
- 顧客が何を求めているか。
- サービスが何の目的として作られているのか。
- サービスが開発された後の運用が考慮されているか。
したがって、単純に設計されたままをプログラミングするだけではダメです。
そのシステム全体をどれだけ理解しているかが大切です。
仮にシステム全体の方針とは異なる設計がシステムエンジニアから来た場合。
その設計理由をシステムエンジニアに確認したり、逆にこちらからより良い設計の提案をしたりと、システムエンジニア含めて、システム全体の成功に進めるようにプログラマーの立場からもしっかりと推進できることが大切です。
まとめ
今回は1歩2歩の先の考えを持つプログラマーというお話をしてきました。
内容としては以下でしたね。
プログラマーとしてプログラミングをすることは、与えられた役割を果たすこと。
これは大切なことですが、1つ深堀りした設計の意図や、その先にあるシステム全体の目的をしっかり理解しておくことが大切だとお話してきました。
そして、その目的に沿ってどれだけプログラミングしていける(システムを作っていける)のか。
これが良いプログラマーとお話してきました。
次のステップとしてシステムエンジニアとなった際には、更に全体を理解する力が求められます。
プログラミングを始めた最初のうちは、まだ目の前のプログラミングを実装するだけでいっぱいになります。
それをいくつか乗り越えて、慣れてきた頃には、視野を拡げて、そのプログラムが何の為に作られて、どのような機能を担っているかを、システム全体の視点からみれるようになれば良いかと思います。
以上です。
コメント