見出し画像

プログラミングシンキング:00 プログラマーじゃない人がプログラマーと付き合うために

第四次産業革命では、人間のすべての営みがデジタルを経由すると言われています。すでに、デジタルと関りを一切持たない産業を探す方が難しいのかもしれません。

デジタル化とはなんでしょう。毎朝、体重を計ってスマホのメモ帳に書き留めておくこともデジタル化です。紙の手帳に書いておくより、人に見られる心配も少ないし、わかりやすくグラフ化して傾向を見たり、クラウドと連携しておけば、めったに紛失することもないでしょう。ここで、もうすでにソフトウェアが利用されています。私たちは普通、これらのソフトウェアを作ったプログラマーと面識はありません。ですが、というよりむしろだからこそ、わかりにくい、使いにくい、と不満を感じてしまうことも多いと思います。

もし、いま使っているソフトウェアを開発したプログラマーは、よく知っている人だとすればどうでしょう。ああ、あの人の性格だからこうしたのね、とか、あの人のことだからこの設定はできるはず、などと、ソフトウェアに対する見方が変わるかもしれません。

最近は、いろいろ便利なソフトウェアが開発されてきて、新たに作らなくてもやりたいことができることも多くなってきました。それでも日々たくさんのソフトウェアが開発され続けています。それは、人々が新しいアイデアを思いつき、それをソフトウェアとして表現し、アイデアを具現化したいという欲求が尽きないからだと思います。みなさんの仕事や生活のなかでも、こうなってたらいいのに、というアイデアがあって、それをソフトウェアで実現するにはどうしたらいいだろう、と考えたことはないでしょうか。考えたことがある人の中には、自分でプログラミングしたり、プログラマーに頼んだりしたいと思ったかもしれません。考えたことがない人でも、身近にプログラマーがいれば、新しいアイデアを発想できるかもしれません。

新しいアイデアがあっても、どうプログラマーに頼めばいいのか。プログラマーとうまくコミュニケーションできなければ、思ったものができません。非プログラマーとプログラマーの間には大きな溝があるのです。プログラマーの生態を知り、彼らの思考パターン〈プログラミングシンキング〉を理解・習得することで、この溝を簡単に埋めることができます。

そんなに難しいことではありません。プログラマーは、日本語や英語などの自然言語を通じて要望を聞いて理解し、プログラミング言語に翻訳してソフトウェアを開発します。この翻訳作業はプログラマー固有のスキルですが、要望を聞いて理解する部分は、非プログラマーとプログラマーの共同作業です。非プログラマーの視点では、要望を伝えて理解してもらう、ということになります。

両者の溝の最も深刻な理由は、プログラマーの思考パターンを理解しないまま、要望を伝えようとしている点です。そして、その「要望」が往々にしてあいまいなまま言語化されていないという悲劇が繰り返されています。プログラミング言語には形容詞や副詞がありません。その代わりに、条件文などを使います。自然言語をプログラミング言語に直訳するのは難しいですが、プログラミング言語は簡単に自然言語に翻訳できます。

〈プログラミングシンキング〉とは、プログラミング言語っぽい考え方で自然言語を使う方法です。プログラミング言語そのものを習得する必要はありません。たとえば、プログラマーが実際にプログラミングする前に、要望を機能に分解して「機能ブロック図」を書きます。また、時間を追ってソフトウエアの流れを描く「フローチャート」も作成します。また、操作する人の気持ちを考えながら画面構成や処理の推移を考えて「UI/UX」を設計します。非プログラマーが、この三つだけでも理解しながら要望を言語化すれば、プログラマーとの関係が飛躍的にスムーズになるでしょう。

では、それぞれについて、考えていきましょう。

画像1


いいなと思ったら応援しよう!