2008年08月17日

「プログラミングでメシが食えるか!?」小俣 光之 秀和システム

programingmesi.jpg

私自身はプログラマーでもないし、そちらでメシを食っていく気もないのだが、立ち読みしたら、従来ではあまり見かけないタイプの本だったし、個々のプログラム言語に固執することなく(Cばっかりだけど)、より俯瞰的な視点で、且つ具体的な経験も織り交ぜながら、実務的な話題が書かれていたので興味を持ち、購入してみた。

ちなみにamazonのレビューではかなり辛口のものが多いが、私の水準では技術的なことはよく分からないというのが正直な感想である。cobolでコーディングしたことはあるが、数ヶ月だったし、その後も発注者としてデータベースやオフコンのシステムを依頼したことはあるが、自分でやったのは、それらの検収作業と出来上がったものを一部修正するぐらいだし、現在はエンドユーザーレベルでVBAを組んだりしてる程度などで私のスキルが低い為、それは止むを得ないだろう。

そのレベルの読者(私)が読んだレビューなので参考にする場合は、ご注意を。

全般的な感想。
プログラミングで食えるかどうかは、どうでもいいのだが、プログラミングを実際にする際に、意識することで大きく成果が変わると思うようなヒントが幾つもあった。それらは、ちょっとしたVBAレベルでのプログラムを書くにも十分に役立つし、プログラムを作らなくても発注者として、これらを意識した作りをしているか、検収時(あるいは進捗状況の確認時に)、チェックするだけでも大いに役立つと思う。

見た目は、仕様書通りに動いても裏での処理の仕方がずいぶんと異なるはずだし、目に見えない部分でどれだけ異常時の想定をし、それらに対する対応を考えて作りこんでいるかでプログラムの品質は大きく左右されるだろう・・・。

もっとも、そこまで作り込んでもそれを理解し、評価できる相手でなければ、単なる労力&コストの浪費とされてしまうのでかえって手を抜いて速度重視になってしまうかもしれない。その程度の水準でしかない相手に最高の品質を提供することは有り得ない。

これはビジネスの世界では、不変の原則でしょう。プロの世界では無知は怠慢と無能力の証に他ならない! 本書を読んでいて、痛切に感じた。

まあ、どんな仕事でも手を抜こうと思えばいくらでもできるが、そんなことをしていたら、自分の価値を貶めるだけだし・・・自分のスキル向上にもつながらないだろうけどね。

本書の良い所は、具体的な経験に基づきながらもそこそこ汎用性のきく方法論が紹介されており、それをアレンジすることでいろいろな場面で使えるモノが多いと思う。

部分として正常に動くのを確認して、部分を組み合わせて全体に向かうのは私もバグが少なくなる手法だと思う。実際問題として、最小限の動作確認で済むし、出来上がってから全体をテストなんて考えただけでも死ぬ~(苦笑)。部分なら、想定されるケースも網羅できるが、全体になると単体のケースと複合的なケースが想定されて、とてもじゃないが網羅できないって! まあ、東証のシステムや銀行のATMがしょちゅうトラブル起こしているのを見ただけで納得してしまう。

そうそう、サンプルソースの蓄積。ライブラリまでは及びませんが、サンプルソースは非常に有用でしょう。少し変数をいじり、処理を追加・削除すれば、すぐに類似のものは出来上がります。

先週依頼されたツールを2時間で作成して、ずいぶん早いですねと驚かれたけど、同じパターンで良ければ、これは可能でしょう。全然違う処理だと1週間かかってもなかなか進まないけど・・・ね。

本書ではサンプルソースの蓄積と合わせて流用を推奨しています。そりゃ、もっともですね。正常に動くことが確認できているし、手間がかからないのだから、それを元にして付加価値を追加していく方がより良いものが早く確実にできるのも道理です。

そうそう、あと行き詰った時の対応方法なんかも読んでいて面白かった。出来上がったものを見ると、たいしたことではないのだが、自分で作成しているとどうしてもうまく処理させる方法が見つからないときがある。ほんのちょっとしたことに気付くと簡単に、しかも素早く処理できるのだが、どうしても見つからない時は見つからないのである。

私の場合は、通勤電車の中で寝ていて、夢の中でふと思いついたり、仕事以外のときに、アイデアが浮かぶ時が多い。先月も、特定の条件に合致するデータを検出し削除するツールで、多数の関数が埋め込まれていて一つ削除するごとにシート全体で再計算するので全ての削除をするのに2時間かかっても完了せず、頭を抱えていた。しかし、ふと気付いた処理で、削除する前にシートの再計算をオフにして、処理後にまた再計算をオンにするだけで解決した。すると、たった数十秒で完了。

気付かない私がアホかもしれないが、どちらのプログラムも正常に動作はしているのだが、少し手を加えるだけで成果が全く異なるのが面白いです。関数をいくら知っていても、気付くか気付かないかで品質が変わってくるわけで、そういうのは、実に楽しかったりする♪

だから、もっと良い方法はないかと努力する気にもなるのですが・・・ここんとこうまくいかなくて困っているのがまたあったりする。さあ~て、どうやって処理したものやら??? 仕様が決まらず、作業がなかなか開始できなかったのも痛いが、まあ、愚痴を言ってもしょうがないです。雑用で中断されるしのもしかたないか。明日からも頑張ろうっと!!

自分が作ったものが動き、みんなが使って便利なのは、率直に嬉しいもんね。ただ、決まった作業を効率化するツールの作成もいいが、私的にはそもそもの効率的な業務の枠組み自体を作る方が、得意なんだけどねぇ~。

新規事業部の立ち上げとかって、好きだし、得意なんだけどなあ・・・。頑張って自分でチャンスを生み出していくっきゃないネ!

広い意味で有用で、面白い本だと思います。決して奇抜な話ではないが、プログラマーとしての喜びや遣り甲斐、他より一歩抜きん出る為のやり方など個々の話だけではなく、SEとプログラマーの比較や業界内的な情報も多く、業界に対する勉強にもなります。

類書があまり無いと思われるだけに、読んでおいて悪くない本です。
【目次】
第1部 プログラマーのスキル編
00 一流プログラマーのプログラムの作り方

プログラミングの技
01 動くプログラムを素早く作るには
02 プロトタイプは先に作るべきか
03 トップダウンかボトムアップか?
04 仕様書が先かプログラムが先か?
05 構造化プログラミングを正しく理解する
06 [構造化プログラミング]メイン関数から作る
07 [構造化プログラミング]メイン関数で行う処理を記述する
08 [構造化プログラミング]サブ関数を作り呼び出す
09 [構造化プログラミング]動作確認はいつすべきか
10 構造化プログラミングをまとめる
11 プログラムをうまく連携させる
12 コーディング量はできるだけ減らす
13 自分の得意なパターンを見つける

プログラミングの心
14 高品質なプログラムを作るには
15 チェックリストを作れば万全か
16 古いコードを使う方が安全か
17 ソースにコメントは必要か
18 関数名・変数名はどう名付けるか
19 ライブラリとソースの蓄積はどっちが有効か
20 オブジェクト指向は必要か
21 開発手法は何を身に付けるべきか

プログラミングの匠
22 高性能なプログラムを作るには
23 CPU消費量はどう減らすか
24 メモリー消費量はどう減らすか
25 繰り返し処理に潜む罠に気を付ける
26 マルチプロセス・マルチスレッドは積極的に使え?
27 性能測定はいつ行うのがいいか
28 高性能化のためのポイントはほかにもある

プログラミングの穴
29 他人のプログラムのバグを見つけるには
30 デバッガーを使いこなす
31 ログ出力を追加する
32 通信タイプのプログラムがうまく動かないときは
33 不具合がいつも起きるわけではないときは
34 修正がもはや不可能なときは

プログラミングの壁
35 プログラミングで行き詰ったらどうする
36 なぜ行き詰るのか突き止める
37 時間をかければ解決できるのか

プログラミングの道
38 どうやってプログラミングの力をつけるのか
39 まずは真似からで十分
40 これからプログラミングを勉強したい人は
41 ある程度プログラミングに自信のある人は
42 一流の自負がある人へ

第2部 プログラマーの仕事編
43 一流プログラマーの仕事の仕方

プログラマーの仕事
44 プログラマーの仕事とは何だろう?
45 何でもできた方がいいか
46 プログラマーはSEより下ですか
47 望む仕事を持ってくるにはどうするか
49 売らない製品を作ることに意味はあるか
50 本を書きませんかと聞かれたら
51 一流のプログラマーの時間の使い方

プログラマーのやりがい
52 プログラマーのタイプ別やりがいとは?
53 製品開発に楽しみはあるか
54 受託開発に楽しみはあるか
55 障害解決に楽しみはあるか

プログラマーの稼ぎ
56 プログラマーはどうやって儲けるのか
57 常駐は避けるべきか
58 得意分野を持つか何でも屋か
59 流用は手抜きか、それとも?
60 仕事の条件を有利にするには
61 一流のプログラマーに仕事を依頼するコツ

プログラマーのキャリア
62 開発言語にはこだわるべきか?
63 資格は必要か
64 後輩はこうすればよく育つ
65 プログラマーが就職するとき
66 会社との賢い付き合い方
67 オフショア開発はプログラマーを駆逐するか
68 プログラマー定年説は今でも生きているのか
プログラミングでメシが食えるか!?―成功するプログラマーの技術と仕事術(amazonリンク)

なお、本書のサポートページというのがありました。以下の通り。
「プログラミングでメシが食えるか!?」サポートページ
posted by alice-room at 22:47| Comment(0) | TrackBack(1) | 【書評 実用・ビジネスA】 | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック

【技術】 『プログラミングでメシが食えるか!?』
Excerpt: 長時間労働、精神的・体力的にキツく、その割に大手の下請で儲からない。 プログラマーって本当にそんなもの?  『プログラミングでメシ...
Weblog: 神様はその辺をウロウロしていません
Tracked: 2009-12-10 22:17