カスタマーサービスの前田です。

テックポエム

はじめまして、カスタマーサービスの前田です。

技術者として知識も経験も浅い私ですが、今回初めてポエムを書いてみることにしました。

しかし、ポエムを書くにあたって、なぜ技術者にポエムが必要なのか、ポエムが何の役に立つのか、まだよく分かっていません。

なので、今後の自身と我々のポエムを更に有意義なものにするために、今回はまず、ポエムについて調べて公開してみることにしました。

簡単にまとめると以下の効果があるようです。

ポエムを書く目的は、それぞれの技術者の想いを「ポエム」として公開することによって、開発を駆動させること。

これによって開発が進行することを「ポエム駆動開発」という。

ポエム駆動開発(poem-driven development;PDD)とは

ポエムにより開発を進めるプログラム開発手法のひとつ。初めにポエムを高らか(tkrk)に宣言(ポエムファースト)することで、非機能要求までを広くカバーできるとされ、ビヘイビア駆動開発を補完する手法として注目され始めている。タスク完了後のレトロスペクティブ(振り返り)としてのポエムラストを行い、次の開発サイクルへとフィードバックするアジャイル的側面もある。

引用:tnnnomizuki「小さなごちそう―プロダクトマネジメントや日々の徒然について―」

http://tannomizuki.hatenablog.com/entry/2016/05/01/161024

以上となります。

ポエム駆動開発の特徴は他にも、考えや意見を共有し、反応を切っ掛けに更に考えが深まる。

また、自分の思いをポエムとして表明し、サービスに対する感覚や価値観が近い人がそのポエムに共感することで、新しい開発が始まることがある、といった効果も見込めるそうです。

私は「ポエム起動開発」どころか「駆動開発」という言葉もポエムを書き始めるまで知りませんでした。

この記事を調べて「ビヘイビア駆動開発」とは何なのか、そして駆動開発にはどんな種類があるのかと少し気になったので、以下に軽くまとめてみることにしました。

ビヘイビア駆動開発 (Behavior Driven Development; BDD)

システムに期待されている「動作」や「制約」を上位レベルからテストするという開発手法。

テスト駆動開発から派生した開発プロセスである。

先にシステムの仕様コードから書いていき、それを満たすように製品コードを書いていくことで仕様としての可読性が上がる。

テスト駆動開発 (Test Driven Development; TDD)

テストファーストに基づく設計手法、軽快なフィードバック、きれいで動くコードを作ろうという開発プロセス。

ユニットテストを使ったテスト技法といった程度に見られているが、システムテストも含んだ開発全般を含んでいる。

品質特性駆動型設計 (Attribute Driven Design; ADD)

品質特性を基にモジュール分割を再帰的に行う開発プロセス。

品質要求もシナリオとして記述し、機能要求や制約と一緒にアーキテクチャーに落とし込む。

ユーザー機能駆動開発 (Feature-Driven Development; FDD)

ユーザーに価値を提供することを重視した開発プロセス。

概念モデルからユーザーに提供する価値を抽出し、それに必要な機能を追加していく開発を行う。

モデル駆動開発 (Model Driven Development; MDD)

設計とアーキテクチャーがそれぞれ独立して変更するための開発手法。

ドメイン固有言語を使ってシステムに依存しない設計を行い、プラットフォームに特化したモデルに変換する。

ユースケース駆動開発 (use case driven Development; UCDD)

システムに関わるアクターを識別し、アクターの振舞をユースケースとして定義します。

ユースケースを実現するためにロバストネス図で分析して、システム設計に落とし込む。

引用:kenji-yokoi「Qiita―いろいろな駆動開発―」

https://qiita.com/kenji-yokoi/items/6b07a62415b56a959caf

これが全てというわけではありませんが、多くの種類の駆動開発があって、それぞれに違ったメリットがあるということが、ポエムを書き始めることが調べるきっかけとなって、知ることができました。

どの駆動開発が自分にとって適しているのかはまだ分かりませんが、今後のポエム駆動開発によって反応を頂戴することがあれば、それを真摯に受け止めて、適切な駆動開発を選択していきたいです。