プログラミングファースト開発ってどんなもの?

プログラミングファースト開発 - yvsu pron. yas
考え方がアジャイル開発に似ていて、日本のSI事業の現場を知っているであろう人が提示した考え方なので、なかなか興味深いと思ったので、気づいたこと、疑問点を列挙してみる。
ちなみに私はソフトウェア技術者を名乗っているけど、SI事業の現場では働いてなくて、SI事業者が使うことを想定したソフトウェアの企画・設計・開発みたいなことをしてます。なので、SIの現場を知らない、理想論や想像で語っているかもしれません。

  • どういうシステムを対象とした開発プロセスなんだろう
    • この手の開発方法論で気をつけたいのは、まずここ
    • 多分、従来の開発プロセスでも開発者が数名〜20名以内で、開発期間が半年以内といった規模の企業システムだと思う
      • 具体的には、事務処理みたいな間接業務の社内システムや、情報共有のためのポータル系の社内向け/顧客向けのシステム、ショッピングサイトやサポートサイトのような顧客向けシステムとか
    • 開発者が100名以上で、開発期間が年単位になるような、巨大で、厳密な品質が求められる企業システムは対象外なのかも
      • 具体的には、銀行や保険会社の基幹システムとか、鉄道会社の発券システムとか
  • 早い段階で、大まかなアーキテクチャや使用するフレームワークといった設計方針を固めないと、ユーザーにレビューしてもらう時の修正が、スパゲティコードになりそう
    • レビュー時の修正は速さ重視で、あくまでユーザーとのコミュニケーションのためだと思うので、レビュー後にリファクタリング、もしくは作り直しなのかな
  • ユーザーにレビューしてもらうときに、修正して欲しい事が、新たな要件(システムでやりたい事)の場合はどうするのだろう
    • プログラミングファースト開発に入った時には要件定義が済んでいることになっている
    • これは従来のシステム開発でもあることかな。でも、動くプログラムがあるだけに、ユーザーがやりたい事があいまいな場合ほど、あれもやりたい、これもやりたい、という要件がどんどん出てきそう
  • ユーザーにレビューしてもらうときには、すでに動くプログラムがあるので、ユーザーから納期短縮への圧力がかかりそう
    • 動いているものがあると、それが例え、決まった値しか出さないモックアップであっても、プログラムが完成しているように見えてしまう。「これだけ動いているんだから、1週間後にはもう完成しているよね」なんて言われたらどうするんだろう
    • プログラミングファースト開発の場合は、プログラムが先だから、あとはテストするだけなので、あまり困らないのかな。「これから、これこれこういうテストに2週間必要なので、1週間後は無理です」と答えるとか。
  • ユーザーがレビュー(プログラムを試す)を頻繁にするプロセスなので、ユーザーの意識が低いとうまく回らなそう。逆にユーザーの意識が高ければ、効果が高そう
    • ITはコストでしかないと考えていて、とにかく動くシステムを持ってこい、みたいな意識の低いユーザーだと、うまく行かなそう
    • ITをうまく業務に活用しようと考えていて、業務でやりたい事の一部としてシステムを作る、みたいな意識の高いユーザーだと、システムが業務でやりたい事と合っているかのレビューは意義のあることなので、ユーザーの協力が得られやすそう

印象としては、この方法論はプログラミング能力(設計・開発能力)の高い開発者にとっても、その能力を十分に生かせそうで、楽しそうな開発になりそうです。

「いきなり書いてそれなりのものが作れる経験値が必要」というのは、そのとおりですが、そういうスキルのある方にスポットを当てて活躍できるようにすることが大事だと思っています。

higayasuo氏のコメント

これには同意。活躍する人がいてこそ、その業界は盛り上がる(人的な面でも、技術的な面でも)と思う。