BLOG

ブログ

カウボーイコーディングと聞いて、どのようなイメージを浮かべるだろうか?
私がカウボーイコーディングという言葉を最初に知ったとき、こんなイメージが浮かんだ。

・集団の中でひときわ際立つプログラミングのセンスを持った人の我流のコーディング手法
・型にとらわれず、湧き出る発想を自由に組み立て、属人的ではあるが生産性の高い開発手法
・難解でトリッキーなそのプログラムは当人しか理解できない芸術の域に達している。

そんな、すこし皮肉めいたニュアンスだけど、ポジティブで少し格好いい言葉だと感じた。
しかし、調べてみたらぜんぜん違っていた。
もっとマイナスイメージな言葉のようだ。
カウボーイコーディングとは明確な手法が欠如している無統制で雑なプログラミングのことを言うという。自然発生的にこの言葉を生んだ集団では、「チームのメンバのそれぞれが一番良いという方法で実装すること」と定義している。
その意味を知って、なぜか少しガッカリしてしまった。
私の経験上、実際の開発現場ではウォーターフォールモデルでの開発が多かった。
要件定義、基本設計、詳細設計、製造、テスト・・・・
企業によっては、外部設計、内部設計などといっているみたいだが、外部設計までにエンドユーザとの仕様を固めておくなど、とにかく上流工程から下流工程への流れに手戻りがないようにきっちり仕様を固めていく、、、、それを由とする開発手法である。
私はシステム開発において何でもかんでもこの開発手法をあてはめるのは間違っていると思っている。
方法論というものも適材適所で適用する必要があるはずである。
システムが大きければ大きいほど計画性重視のこのプロセスは効果的だと思うが、たとえば、以下の場合は逆に向いていないのではないかと思っている。

・システムの規模が小さい場合
・技術検証が付きまとう研究開発の場合
・汎用性を求めるパッケージ開発の場合
・プログラマが企画から開発まですべてのプロセスを行う場合

システム規模が小さい場合は、設計書を書いても設計書を見るのは設計書を書いた本人だけであったり、コーディングのための設計書ではなく単なるお作法で書いているだけということになってしまう。実際、設計書などを書いている時間でプログラムが出来てしまったり、プログラムで初めて気がついたことを設計書に反映させるなど本末転倒であり、規模の小さいシステムの設計書などはシステムが完成したとはまず見ることがなかったり、仮に見たとしてもプログラムと整合性が取れてなく、結局プログラムを見ないと不安であったり、メンテなどは始めからプログラムを見たほうが早かったりする。
この場合、スパイラルモデルでの開発のほうが向いているのである。
研究開発などは、技術実装が可能か不可能かによって、システム仕様やビジネスプランさえ変わることがある。
ボトムアップのアプローチである。
汎用性を求めるパッケージの場合は、設計でその仕組みを厳密に定義するのは非常に難しい。ユーザカスタマイズがUIによる設定で行えるように、あらゆるフラグを設ける必要があり、実際のコーディングで初めてデータベースのあるべき構造が明らかになってくる。
詳細設計の通りにしか作りません!という仕事割り切りのワーカープログラマは話が別だが、創作意欲とノウハウのあるプログラマはある意味職人であり、こんなものをどんな方法でどのように作りますといちいち日本語に書いたりするよりは、頭のイメージをいきなりプログラミング言語で表現するほうが適している。プログラム自体がドキュメントであり成果物でもあるのだ。
このようなケースでは私が最初にイメージしたカウボーイコーディングの手法が最も効果的なのではないかと思うのである。
アジャイル開発やエクストリーム・プログラミングなどという方法論もあり、いわゆるドキュメントよりもソースコードに重きを置いたものであるという。
言われたとおりに動くのは日本人の国民性だからやっぱりウォーターフォールが向いているのだよ、と言ってしまっては、ワーカープログラマしか育たない土壌にしかならないのではないかと思うのである。

関連記事一覧

  1. Alexandr

    He Makes Money Online WITHOUT Traffic!

    Most people believe that you need traffic to profit online…
    And for the most part, they’re right!
    Fact is.. 99.99% of methods require you to have traffic.
    And that in itself is the problem..
    Because frankly, getting traffic is a pain in the rear!
    Don’t you agree?
    That’s why I was excited when a good friend told me that he was profiting, but with ZERO traffic.
    I didn’t believe him at first…
    But after he showed me the proof, it’s certainly the real deal!
    I’m curious what your thoughts are.
    Click here to take a look >> https://bit.ly/3mOAfVp
    Please view it before it’s taken down.