プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

優秀なプログラマとは会話が上手な人


プログラミングに一番大切なこと。それは会話

ユーザとプログラマの会話


こんな経験はありませんか?


「こんな機能を実現して欲しい」
そう言われてプログラムを作ってみたら:
「いや、実はこんなことをしたかったんだよね」
正しく実装できたら:
「これできるんだ。じゃこんなことも出来る!?」
一段落したのち:
「これさあ。こんなふうにならないかな!?」
いいかげんにしてくれ。‐‐メ

プログラマと要求


プログラムを作る側と利用者との間には元々大きな隔たりがあります。ソフトウェア設計の最初の段階では、まずお互いのイメージを合わせることが大事なのですよね。疑問点はいろいろ聞いておくといいでしょう。可能であればプロトタイプを作ってみるのもいいと思います。


よく言われるのは「最初にきっちり設計して後は変えない」のか「開発中に評価しながら変更していく」かということ。開発内容によっても変わりますが、最近は評価しながら変更していくことが多いようです。


次々と要求が出てくること自体は、私は悪いこととは思っていません。それはソフトウェアをよくしようとする心から出ているものですから。ただ、あまりにも要求が多いとしたら、そこには何か問題があるかもしれません。


プログラマなら、次にどんな機能要求が来るか、ある程度予想が出来るはずなのです。利用者から要求がある前に提案するのも一案。ただ、要求が互いに際限なく出てしまうのはよくない結果になるので、ある程度要求が集まった時点で開発と利用者が話し合うという形がベストですね。

そのソフトウェアは誰のもの?


もちろん論理を正しく実装するための技術力は必要です。どんなに仕様を正しく理解できたとしても、それを実現するための技術を持っていなければ話になりませんから。


とはいえ、ソフトウェアは使う人のためにあります。使う人がよいと思えるプログラムとはどのようなものでしょう。言うまでもなくそれは利用者の求めているものを知っているプログラムですよね。


そのようなソフトウェアを作るためには、ユーザの求めているものを知らなければなりません。そのためには利用者との会話が欠かせない、ということになります。


残念なことに世の中にはユーザがおざなりになっているようなシステムが多くあります。おそらく作ったプログラマはとても優秀なのですが、優秀さゆえに難解なソフトウェアになってしまっているのです。プログラマの技術を発揮する「実装」は、あくまでよりよいソフトウェアを提供するための「手段」であるはずなのに、いつの間にかそれが「目的」になってしまっているんですね。


だからこそプログラマは技術の前に会話が大切だと思うのです。本当に優秀なプログラマとはユーザの求めていることを引き出すのが上手で、さらにそれを実現するための技術力を持っている人なのだと思います。私は特に会話が苦手なのですけど、常々そうなりたいと願っています。