これ、必読。
業界の重鎮とやらに惑わされるヒマがあったら、一歩でも前に進むために何をするかを考えたい。
山ほどあるサブセットから, どうやって適切な妥協点を選べばいいのだろう. 絡まりあったプラクティスをときほぐして本質に迫る根気と,サブセットの善し悪しを判断するクライテリアを K は持っていた.
http://www.dodgson.org/omo/t/?date=20071103
誤解を恐れずに言えば、業務システムの開発において一番面白いのは実はここだ。
プログラミングとは、忠実に正確にまじめにシステムを動かすためのコードを書く作業ではない。
本当のプログラミングとは、コードの力を駆使して問題自体を解消してしまうような仕組みを創造するプロセスだ。その対象が身内なこともあれば、顧客なこともあるだろう。その意味で、「業務システム開発はクリエイティビティを発揮できない」なんていうのは、「私は無能です」と宣言しているようなものだ。
SIer を雇い入れてシステムを開発するときの根本的な誤りは、大人数のまじめで正確な作業をするコード書きを導入すれば問題の解決に結び付くと考えていることである。その場合の最もよい結果は、問題を自動的に処理し続ける大きなシステムができあがるというものだ。問題は残り、問題の処理を手伝うようなシステムが残る。問題のパターンに変化が生じるとシステムも変化を強いられ、根本的な解決は図られないままメンテナンスを続けるはめになる。しかも、大抵の場合、その構造に問題があることは誰一人として気付かない。
コードが世界を変えるのは何もあちらの業界だけではない。業務システムだって、アプローチが正しければコードの力で世界を(ビジネスを)変えることは可能だ。ただ、そのためには従来とは正反対のアプローチが必要になる。少人数の怠惰で優秀なプログラマを投入して問題自体を解決するような仕組みを作り上げる。問題は解消し、次に作るシステムは別の課題へ注力できる。
ここでも DRY の原則は有効だ。繰り返し同じ問題を扱うのは止めよう。あなたが(あるいはあなたの顧客が)年間で同じ作業を繰り返しているとしたら、それはきっと何かが間違っている。作業が発生する要因自体を叩いて、新しい問題に取り組もう。そのためにコードの力を使おう。
そして、そのために必要になるスキルセットは問題解決のための基礎的な分析力と解決策を考えるときの引き出しの数であり、人を巻き込んで味方を作っていく力であり、その仕組みを現実化するためのコードを書く力であると思う。
最後に、同じ文脈で過去におもしろいと思った文章を引用しておく。
で、自動化ができるかどうかにかかわらず、手順の確立 っていうのは大切だよっていう話。確立された手順って いうのは、みんなで共有できる知識なわけ。
もちろん、その知識をコード化するのが、自分らプログラマ にとって一番いいんだけど。でも、そうできないことも ある。そんなときは文章にするしかないんだな。だから、 手順を確立するっていうのは、その確立された手順を 文章にすることが含まれてるわけ。くどいようだけど、 文章よりコードのほうがいいんだけどね。
http://www.jitu.org/~tko/cgi-bin/bakagaiku.rb?bakaid=20071029
やがてくる未来ではソフトウェアの生態系がかわると私は信じている。その生態系を、ここでは 馴染系ソフトウェア (Situated Software) と呼ぶことにしよう。特定の場面や文脈のために設計されたソフトウェアのことだ。馴染系ソフトウェアを作る方法は、いわゆるウェブ学派(かつて私がプログラミングを勉強した場所)のやりかたとは対照的だ。ウェブ学派はスケーラビリティや汎用性、完全性を美徳としてきた。
私の生徒達はウェブ学派の流儀をあっけらかんと無視し、それでいて面白いものをつくっている。ここ一年ずっと、私はそれが気になって仕方がなかった。
馴染系ソフトウェア
K と働いてはじめて, ああ, 物事とはこう改善していくものなのかと知った. 何か問題を感じると K は試行錯誤を始める. 問題は私が諦めていたものもあるし, そもそも気付かないものもある. 試行錯誤の中には, はじめうまくいかないように見えたものもある.でも調整を重ね次第に様になっていく. 気がつくといつも何かがよくなっている. 目の前の問題が次々と片付いていく感覚. K の前で開発は加速し, コードの質は上がり, 技術的困難は片付き, チームは進化していった.
http://www.dodgson.org/omo/t/?date=20071103
最後、もう一つだけ追加。
SCMにしろBIにしろ、本質的には「経営」に直結するんですよ、ITってのは。
ITこそが、経営を変え、ビジネスを変えて、世の中を変えるんです。
それこそが「IT業界の面白さ」に他ならないと僕は思うんですけどねぇ。
http://d.hatena.ne.jp/codemaniax/20071031/1193837027