2016年1月26日火曜日

コーディングの価値

突然ですが、コーディングという行為に価値はあるのでしょうか?!

当然、コーディングしないと動くものは出来ないのですが、
コードを書くだけでは動きません。

コードを書いた後にコンパイルなど、もろもろ環境を整えて、
やっとこ動くものになります。

しかもその動きは、単に動くものではなく、
動作する事で顧客に価値を与えるものである必要があります。


このように考えると
コーディングという行為はとても曖昧な行為ですよね。

コードを書いただけでは動作しないので
何も価値が無いとも言えます。
ですが、コードを書かないと動くものは完成しません。

価値あるものにするには動作させる必要があります。
動作しなければコーディングした時間も無駄ですし、
ゴミを創り出しただけになります。

価値あるものにするには、ゴミの生成を防ぐ必要があります。
つまり、必ず動くコードを書く必要があります。

ですが、これはちょっと難しいので、
ゴミをいかに少なくするか
という事になるかと思います。

その為の有効な手段の1つがテストファーストかと思います。
テストファーストは品質向上の1つの手段として捉えられていると思いますが、
それ以上の効果があります。

テストを先に作成して、確実に動作するコードを書く。
テストがあれば、それさえOKになれば良いのでゴミとなる確立はかなり少なくなりますし、
テストがOKとなれば、その時点で価値に繋がるものが創造された事になります。

で、思うのですが、
これってコーディングなのでしょうか?
コードは書いているかもしれませんが、やっている事は単体テストですよね?!

実はリボンモデルにはコーディングという工程はありません。
上記の通り、コーディングではなく単体テストだと思うからです。

コーディングという曖昧な行為ではなく、
確実に価値創造に繋がる単体テストとリファクタリングを繰り返す
これがリボンモデルの核となります。

価値創造に向けて無駄を無くす為、
動かないコード、無駄なコード、ゴミ生成を避ける為、
コーディングという工程を考え直したらリボンになりました。





2016年1月15日金曜日

決まれば早い!

最近、改めて実感しています。

ソフトウェア開発は、高額で時間が掛かるという印象を持つ人が多いとは思いますが、
それとは対照的にソフトウェア開発は早いと感じています。
特に昨今のソフトウェア開発は早いと実感しています。

但し、条件があり、何を造るかが決まれば早い 
という事です。

時間が掛かるのは、何を造るかが決まっていない場合で、
とにかくどんな事にも対応しようと機能を増やし、
機能が多い為に、誰も把握しきれず、方針も2転、3転する
更には、機能間の矛盾が把握しきれず、もぐら叩き状態の仕様変更も際限ない....

となると、それは時間が掛かりますよね。

仕様の追加、変更に対応する策として、
アジャイルがあります。

しかし、アジャイルも仕様のコンセプトがあって機能するものかと思います。

コンセプトが揺らいでいるようでは
アジャイルも機能しませんよね....


なので、ソフトウェア開発を早くするには、
いかに早く何を造るかを決めるか 

という事になるのですが、
これがなかなか難しいというか、浸透しないというか....


その要因の1つには、ソフトウェア開発の見積もりに時間が掛かり、
かつ高額となりがち
といった事もあるかと思います。

しかし、この見積もりも「何を造るか」が分からない為、時間がかかるのだと思っています。

となると、卵が先か鶏が先かといった議論になってしまいそうですが、
全ては、「何を造るか」だと思うのです。

「何」は機能では無くて、どんな思いで、どのような事を実現する、もしくは課題を解決する
ものなのかといった、いわゆる野中郁次郎さんのいう「熱」なのだと思います。
「アジャイル開発とスクラム」に「なぜ作るのか」といった熱の共有が必要!
 ってな事が紹介されています)


リボンモデルでも拝借させて頂いていますが、
「何を造るのか」より
「なぜ作るのか」の方がしっくりきますね。

ソフトウェア開発を早くする為にも
ソフトウェア開発技術者として「なぜ作るのか」を追究していく事が必要なのだと思っています。