ベタープログラマ
書籍「 ベタープログラマ 」の14章を読んで、 「ソフトウェア開発とは何なのか」 という問いに直面しました。ベタープログラマがさまざまなメタファを用いて明らかにしようとするソフトウェア開発のあり方、一つ一つに私は共感しました。このうちどのくらい出来ているのか?を考えるのに良い機会となりました。
一方、ソフトウェア開発とは何かという問いの向こう側に、そもそも 「ソフトウェアとは何か」 という問いがあることに気づきました。ソフトウェアとは一体何でしょう?
煩わしさを減らす、嬉しさを増やす
先日、ベトナムのホーチミンに講演に行く機会がありました。そこで空港からの移動のためにUBerを使ったわけですが、やっぱりこれが便利なわけですね。少し詳しく考えてみると、もしUberが無かったら、私は右も左も分からない空港周辺で、タクシーを探すことになります。向こうのタクシーの売り込みは激しく、異国の地の不安からきっとその勧誘に乗ってしまうことでしょう。さて、ベトナムの方の英語を私は聞き取れるでしょうか。逆に私の不自由な英語は通じるでしょうか。行き先に無事辿り着けるでしょうか。メーターは読めるでしょうか。ベトナムの通貨ドンはインフレしています。20,000ドンが100円くらいです。慣れない通貨での支払いができるでしょうか。支払いのときに交渉が発生すると尚更面倒です。以上のように不安でいっぱいです。
一方、Uberなら行き先は事前に地図上で選び、支払い額も固定です。待ち合わせ場所に気をつければすぐにドライバーと出会うことができます。簡単に行き先をすり合わせれば、あとは乗っておくだけです。決済も自動です。明らかに、コミュニケーション上の 「煩わしさ(pain)」は減り 、異国の地でも安心して行き先に辿り着ける 「嬉しさ(gain)」 が得られました。Uberが無かった時の場合と、その差は雲泥です。
ソフトウェアとは何かの問いに、クラウド上の何らかのサービスであること、APIであること、業務支援を行なうツールであること、SNSな何か、あるいはフレームワークやライブラリ、さまざまな答え方がでてくると思います。そうした形態ではなく、効果に着目すると、先にあげた「煩わしさを減らす」「嬉しさを増やす」の2つに帰結することが分かります。
ということは、これから作ろうとしているソフトウェアを思い浮かべたときに「煩わしさを減らす」「嬉しさを増やす」、両方とも思いつかないようですと、 そのソフトウェアは本当に必要なのか という疑問が湧いてきます。
また、「煩わしさを減らす」「嬉しさを増やす」の効果にも度合いがあります。そもそもそのソフトウェアが無かったときに必要となる代替活動の煩わしさの大きさ、それで得られる嬉しさの大きさ、が大したものでなければ新たなソフトウェアをつくっても、大きな効果は得られ無さそうです。
それは、ユーザーの価値への反応の強さに繋がります。これからつくるソフトウェアがユーザーにどの程度受け入れられるのか、その想像の助けになるでしょう。
正しいものを正しくつくりたいか?
ベタープログラマの14章にはもう一つ問いがあります。それは、 正しいものをつくりたいか? という問いです。私がいまソフトウェア開発に関わっているのは、まさに正しいものを正しくつくるに向かい続けたいためです。
正しいものとは、そのソフトウェアを利用する人の目的に適していて、「煩わしさを減らす」「嬉しさを増やす」をもたらすものだと言えます。そうした正しさが最初から分かっていて、どうすればいいか分かっているということはなかなか無いことだと思います。ゆえに、ソフトウェア開発は、何があれば良いのかという探索的な活動となります。そして、ユーザーとの関わりの中で、目的に適したものは何なのか気づくことになります。
そのためにはソフトウェアの作り方として変更容易性を高めておくことが望ましく、正しくつくるとは、ソフトウェアを変え続けることができる作り方といえます。
こういう作り方をすれば必ず正しいものが正しくできるという方法はありません。ギルドワークスが、 正しいものを正しくつくる を旗印として掲げているのは、そのようなソフトウェア開発であろうとする意思の表明であり、われわれとわれわれに関係する方にとっての行き先を明確にすることであり、そのための技を磨き続けるというコミットメントを意味しています。
そこに一緒に向かう人達には、作り手はもちろん、「煩わしさを減らす」「嬉しさを増やす」ソフトウェアを必要とする人たちも含まれます。ソフトウェア開発を探索から発見をする活動と捉えると、この両者が直接的、間接的に一体となってつくっていくことが求められます。共創が正しいものを正しくつくるへと歩みを進められるのだと私は感じています。
この記事もどうですか?
-
なかなか身につけるのが難しい開発の習慣
世の中には色々な開発に関するプラクティスがあります。特にアジャイル開発の文脈では、テスト駆動開発やペアプログラミングなど、多くのプラクティスが知られています。 ただ、実際にこれらのプラクティスを行おうとしても、「時間がない」「細かい部分のや…
-
ユーザー視点に立つとは、その人にとっての「違い」を分かること
ギルドワークスの佐々木です。 ユーザー視点に立つということ 「ユーザー視点に立つ」と言った際に、何が大事なのかについては、様々なことが紹介されています。 私の解釈では、「ユーザー視点に立つ」ということは、そのユーザーが使う「言葉」を知ること…
-
if文の条件式の書き方
ギルドワークスの増田です。 (前回書いた リファクタリングのエッセンス の続編です) if文のちょっとしたの書き方の違いは、ソフトウェアの変更のやりやすさに大きく影響します。前回のサンプルコードから、if文の条件式部分だけ抜き出してみます。…