コピペ志向、コンフィグ志向、コラボレート志向

3つのCということでこんなことを考えついてみた。
「コピペ志向、コンフィグ志向、コラボレート志向」

コピペ志向
2つ思うことがあって、一つは「優れた開発フレームワークはコピペで作業がさくさく進む」ということ。
ソースコードをコピーしていって、差分だけちょろちょろと直せばシステムが出来上がるといいますか。
「3行以上同じコードが出てきたら共通化せよ」なんて言葉もあったりして、まぁ眉をしかめられそうな部分も含んではいるのだけども、場合によっては構造が複雑化になるのを避ける為にあえて冗長なモジュール構成のまま残してみるよ、っていう考え方もあるじゃないですか。
そのような冗長化へのアプローチがとられた場合はやはりコピペで「あまり考えずに」作れるのがいいのではないかと。
また、コピペで作れるってことはソースコード生成を自動化することが可能な線も見えてきて、更なる作業効率が図れるかもしれませんしね。
で、もう1つは、ネットで検索すれば今は大概のサンプルコードが見つかるので、それをコピペして利用すれば開発効率上がるよね、って話。
考える力じゃなくて探す力でしょ、今時の開発で必要なのは。

コンフィグ志向
昔出合ったAさんという人は、自分でベタなプログラムを書くより先にその機能を実現する為のフレームワークっぽいところを先に作ってしまい、細かな部分はコンフィグ(設定)ファイルのカスタマイズで済ませてしまう、というアプローチをとっていた。
ユーザから仕様変更がきてもコンフィグの調整で吸収してしまうので、それはそれで一つの賢い方法だな、とは思う。
また、一方で今時の開発って(オープンソースを含めて)何らかのパッケージやフレームワークを利用することが殆どなのだが、わざわざ作りこまなくても設定で吸収できちゃうことって多いでしょう。
っていうか、パフォーマンスの問題とかになると、そのモジュールが稼動するAPサーバとかOSはたまたハードの調整をしようよ、って話になり、アルゴリズムへの知識よりかは設定に対しどこまで知見を持っているか?というのが重要視されたりします。
コピペ志向とも通じるところがあるのですが、無から有を生み出すのではなく、有を有’にする考え方が大事であり、その「’」を考えるにはやはりコンフィグというものが欠かせないのではないかと。
PerlとかPHPなどスクリプト系言語だと、拡大解釈すれば、もしかしてソースコードそのものがコンフィグファイルとも言えるのかな。
とにかく簡単に挙動を変更したり機能を追加できればいいのですよ。

でもって、こういったコピペとかコンフィグ的発想に当てはまらない、トリッキーなプログラミングが要求される場合、仕様がヘンって視点も持つべきじゃないのかなぁ。
(大抵その予感は当たる)

システムの流用で生産性を上げる
コピペ志向、コンフィグ志向が大事だなぁ、と思ったのは、システム流用というアプローチで劇的な生産性向上が見込める為。
これって至極当然な前の話なのだけども、実はそれ程重要視されていない気がします。
毎回100万貰って100万の人件費がかかるよりかは80万で作るけど50万で作ってしまったほうがいいでしょう?
都度スクラッチでやってしまうよりかは、2度目以降はコピペ、コンフィグどちらでもいいので、流用対応してしまえば、利益率上がるのでないかと。
ってなると大事なのは「システム流用が本当に行えるか否か」という話ですよね。
ライセンス絡むとメンドウだったりするし。
知識を自分(自社)に落とし込むのが如何に重要か?というのはそういうこと。

コラボレート志向
コラボレートというか分からないことはその分野の達人と協力しあうようにして、協力できそうにない状況であれば友達を増やすなりなんなりして日頃から協力体制を作れるように行動しておきましょう。
他人の力を自分の力に変えてしまうことが重要。
必要とされる技術を(どこに配置されていても構わないので)どうやって引き出し可能な状態にしておくか、ということ。
あと自分もやはり「与えるもの」がなければダメですよね。
(とりあえず立場的にダメ)
ってことでお互いに協力し合う、コラボレートなのかなぁ、と。

IPMessenger便利、MSNMessengerさらに便利
コラボレート志向を考える上で大事だなぁと思うのは、ちょろっとしたソースコードの受け渡しをどのように行うか?ということだ。
そりゃあ(コードの場所、URLなど)ポインタを示してくれれば自分でも探せますけど、「知っている人間が」IPMessengerとかに貼り付けて渡してくれたら早いじゃないですか。
もっと広げて考えれば、MSNMessengerとか使えば、全然違う職場で作業中の友達と教えあうことが出来てすごく便利ですよね、と。

プログラマーに対して要求される能力も変わってきている。
昔はアルゴリズムに詳しいやつがエラかったわけだ。
ちょっと昔はAPIに詳しい奴がエラかったわけだ。
今時はライブラリ(とかフレームワーク)に詳しい奴がエラかったりする。
多分、ネットワークが発達すれば、「そのライブラリに精通している人間」を知っている人間がエラくなったりすると思う。
(でも理解する為には当然基本的知識は必要だよ、とエクスキューズ)