プログラマyasuhoの隠れ家

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

優秀なプログラマとは使う人の気持ちが分かる人

このように、本来の目的が見失われてしまうと、無駄な労力を使うことになったり、無用な危険を招くこともある。特に、技術者が注意したいのは、どうしても技術寄りの視点にとらわれてしまいがちなことだ。目の前の技術的な問題に取り組んでいると、ついつい視野が狭くなってしまう。自分がやっていることの本来の目的は何かということを、時々、意識的に思い出すようにしたいものである。

本来の目的を思い出そう|悪態のプログラマ


ソフトウェアの設計と開発をしていると、日々このようなことを感じます。本来プログラムはそれを使う人のために作られるはずなのですが、いつの間にか作る人のためになってしまうのですよね。


ソフトウェアを使う時、使い方が分からなくて困ったことはないでしょうか。プログラマなら各種APIやライブラリの使い方が分からないといったことはありますか?これらは目的がすり変わってしまった例の一つです。


もちろんそれらには前提とする知識が必要なものもあるでしょう。しかし私はよいソフトウェアというものは感覚的に使えるものであると思います。目的のものが意図した場所にある。その機能がなぜそこにあるのか直感的に理解できる。そういったことが必要なのだと考えています。


前提知識があるのなら、それを持たない利用者のために情報へのリンクが張られているべきです。機能についても、最初は基本的な使い方だけが見えていて、それを理解したら次のレベルが見えるようにすればユーザは迷ったりしないでしょう。


よくソフトウェア技術者は職人に例えられます。これはある一面においてはプログラマの側面を表していますが、私の考える優れた技術者は使う人の気持ちが分かるプログラマです。


プログラマというと自分の仕事を黙々とこなす人のようなイメージがあるかもしれませんが、それだけでは優秀なプログラマにはなれません。相手が何を必要としているか、そのためにはどのようなものを用意すればいいのか。そういったことを理解してプログラムを書くことができる人なのだと思います。それを実現するために技術力があると考えるべきでしょう。


どんなに優れた技術力があっても、使う人の気持ちが理解できないと、使い方が分からなかったり、勘違いの機能を実装してしまって「そんなのはいらない」ってことになったりしがちです。


でもね、これ難しい。本当に難しい。私は優秀ではないので、一人よがりな仕様になってしまったり、ムダな作業をしてしまったりと、日々反省しています。せめて相手の話はよく聞いて、効率よく作業をしたいなあ、なんて思っています。:)