概要
開発言語にくわしい。
さまざまなアルゴリズムを理解している。
開発環境を使いこなせる。
ミドルウェアなどの情報を知っている。
OSやネットワークなどの知識がある。
そんな「技術力がある人」なのに,なぜ仕事では通用しないのか?
数々の現場を経験し,いまも現役プログラマー社長として活躍する著者が,「技術を生かして食べていく」ためにはあたりまえのようでいて意外と見すごされている「技術以外」の話を教えます。
こんな方におすすめ
著者から一言
「プログラマに必要な力」というと,技術的な面が思い浮かぶと思います。たとえば,次のような感じではないでしょうか。
「開発言語にくわしい」
「さまざまなアルゴリズムを理解している」
「開発環境を使いこなせる」
「ミドルウェアなどの情報を知っている」
「OSやネットワークなどの知識がある」
では,そのような「技術力がある人」が実際にプログラマとして活躍できているのでしょうか?
私が仕事としてプログラミングを頼んだ経験で振り返ってみると,
「頼んだものと違う動きのものが出来上がってきた」
「いつまでたっても出来上がらない」
「安定して動かない」
「性能が出ない」
「仕様変更などの応用が効かない」
「ソースコードをほかの人が理解できない」
など,「技術的な力はあっても,仕事として使い物になるものができてこない」ということはたくさんありました。
「仕様書を元にコーディングを行う」場合でも,「依頼者からの要求を実現する」場合でも,「そもそも,どんなものを作りたいのか?」が理解できないと始まりません。つまり「理解力」が重要です。
また,仕様や要求は,書類を読んだだけで理解できるものではありませんので,理解できるまで「やりとりする力」も必要です。プログラマの仕事以前に,普通のビジネスマンとしての能力もとても大事なのです。
さらに,仕事としてプログラミングを行う場合,「期間」「費用」の制限もありますし,「保守性」「拡張性」も大切です。もちろん「品質」も。趣味のプログラミングならいくらでも自分のこだわりを貫いたり,自分が好きなところだけ凝って作ることも許されますが,仕事では「仕上げる速さ」「シンプルさ」なども求められるのです。
そういった,「技術力」以外の「プログラマとしての仕事力」こそが,プログラマとして活躍できるとともに,自分自身もやりがいをもって楽しめる状態を実現するための原動力となります。
本書では「私が見たこと・経験したこと」「私が考えたこと・やっていること」をもとに,そうした力を身につけるためのヒントをまとめました。私以外の方の本や記事も目にしていますので,影響をまったく受けていないということはありませんが,それらをそのまま引用したりするのではなく,あくまでも私自身の考えとして書きました。私自身が,「こうすべき・こうあるべき」という一般論はあまり好きでなく,「実際にやった人の経験談が一番ためになる」と感じているからです。
本書が,プログラマとして活躍するための参考になれば幸いです。