プログラマーの素質とは!?
わしはなぜ、プログラマーになったのだろうか?
スポーツ選手でも歌手でも、お笑い芸人でもなく、普通のサラリーマンだ
その中でも、プログラマー!?
なぜだろう?
■プログラマーとは?
当然だが、アプリやシステムをコンピュータ言語を使って開発する仕事をするのが、プログラマーなのだが・・
コンピュータ言語?プログラミング言語、と言われるものは、たくさんある
- C、C++
- VB、VC、C#
- java、jQuery
- Ruby
- PHP
- Python
- SWIFT、Objective-C
- HTML、CSS
本来プログラマーたるや、どんな言語でも開発できるべきだと思う!
しかしながら、特定の言語に特化したプログラマーが増えているのが現実で、それでも彼らはわしと同じプログラマーと呼ばれる
ま、そういうわしもRubyやPythonについては、ほぼソースを見たことがある、程度なのだが
それでもその言語でプログラムを書けと言われれば、かける自信がある!
それでこそ、プログラマーだろ!?と思っている
・上流と下流
システム開発の仕事は、以下のような工程が主な流れになる
- 要件定義
- 設計
- 開発
- テスト
要件定義や設計は、SE(システムエンジニア)が行う上流フェーズ、開発やテストは、PG(プログラマー)が行う下流フェーズと分けられる
そしてこれらの工程を統括し、スケジュールの管理等を行うのが、PM(プロジェクトマネージャー)ですね
そして、社会にでれば、一般的な流れとしては、PG→SE→PMという流れでキャリアアップしていくのですが・・
オフショアやニアショアが多くなるご時世で、PGの価値がかなり低く見積もられてしまうのが現実です!
・システム開発工程
工程についてもう少し詳しく見ていきます
先ほどは、4つだけ挙げましたが、本来のシステム開発の工程というのはたくさんあります
一般的なのは、ウォーターフォールモデルといって、これくらいの工程かな?
- 要件定義
- 外部設計
- 内部設計
- プログラミング
- 単体テスト
- 結合テスト
- システムテスト
- 運用テスト
- システム移行
- 運用・保守
結構ありますよね?
これを順番に行っていった結果、9番、10番でシステムが稼働します
・役割分担
システム開発は沢山の工程があり、それを複数人で作成していくために、各工程は役割分担されています
上記の工程の場合、PGが担当するのは、4番と5番(本当は4番)だけなのです!
5番の単体テストは、3番の内部設計の内容をテストするので、テスト項目(何をどのようにテストするかを示す資料)は、SEが担当するのですが・・
開発スケジュールがタイトになってくると、この3番よりも4番のプログラミングが先行し、設計書が後追いで作成されることが多くなります(あってはならないはずですが・・)
結果として、5番を行うためにPGが3番をほとんど作ることになるのです!
4番のプログラミングの結果として、3番の内部設計通り作成できているかを5番の単体テストで行うのです
なのに、3番と5番をプログラミングを行ったPGがやってしまったら、プログラミングによる結果が正解で、そのためのテストを実施することになってしまいます
システムの不具合が発生したなんて言葉を耳にします
この不具合の大きな原因は、PGのプログラムミスと思われがちです
でも実際には、SEが設計書を書かず、設計通りに動いていることを確認できていないから起きています
それを結局、SEが自分の身を守るために、PGのプログラミングとテストミス(設計理解不足)とされてしまっているのです
※個人の感想です
キャリアアップの流れを見ても、PGよりSEの方がより上なのだと思われるのは仕方ないことだが・・
PGの価値を甘く見ていないですか!?
昨今、上で書いた通り、仕事のできないSEがはびこっている!w
設計書もなく、画面デザインは作ったから、あとは、こんな風に動かして欲しいとか、口頭で説明してくるSEもいる
どんなに優れたPGがプログラミングを行っても設計書がプアなシステムがまともに動くわけがない!
自分たちの責任逃れのために、PGに全ての責任を押し付けるブラックSEどもめ!www
どんなに優れたPMが仕切っていても、優れたSEが設計していても、出来上がるシステムが不具合だらけではそのシステムは使い物にならないんです!
そのために必要なのは、ブラックSEではなく、「品質の高い開発ができるPGの存在」だと、わしは思うのです!
まぁ、どれだけ品質の高い開発をしていても、たった一度の不具合で、いつまでもネチネチと言ってくるブラックSEがいる!
○○ハラスメントだろ!?とも思うが・・
なぜ、こんなSEより、PGが下に扱われるのか、この世の中がわしには理解できんw
どんなにキャリアアップしようが、仕事のできないブラックSEなど下の下だぜぇー!w
この業界は、本当にくだらない仕組みが蔓延っていやがる
■素質とは
これも個人の感想でしかないのだけれど、人が生まれ持ったものを素質と言うのかもしれないが
プログラマーに必要なものは、そんな持ち合わせたものだけではないと思う
「探求心」と「向上心」
これをどれだけ持ち続けられるかだ!
と、わしは思う
■最後に
そんな世界でも、なぜプログラマーをやっているのだろうか?
それは、モノづくりをすることが好きだから
ただそれだけしかない
自分の手で入力したソースコードが、自分の思い描いた通りに、動いてくれること
これが凄く楽しいのですw
ではでは