たくさんのご質問をありがとうございます。あまりにも盛りだくさんなので、すべてに答えていたら一冊の本が書けそうなほどです! なので、次の三点に絞ってお答えしようかと思います。
(1)エンジニアとしての視点と創作活動の関係について
(2)創作活動で直面した課題の解決について
(3)数学やプログラミングを教える際の心がけ
(1)エンジニアとしての視点と創作活動の関係について
まず最初にお伝えしたいこと。私は確かにプログラミングを行い、ソフトウェアを開発するエンジニアとして仕事をしていましたが、現在はだいぶ「現場」から離れてしまっていますし、日々の仕事としてプログラミングやソフトウェアの開発を請け負うこともやっていません。なので「エンジニアとして活躍」と書いてくださるのはうれしいのですが、それは現在は事実から離れていますね。
ただし、実際の職業面ではさておき「自分はプログラマである」という意識がなくなったわけではありません。現在の最新情報にできるだけキャッチアップはしていきたいと思っていますし、少なくともプログラマ的な視点は失いたくないと思っています。
と書いてはみたものの、じゃあ、そのプログラマ的な視点とは何だろうとなるとこれまた大きな話に広がってしまいそうです。私が最初に書いた本は『C言語プログラミングのエッセンス』というタイトルですが、そのまとめはいまでもよく覚えています。それはプログラミングというのは「はっきりさせること」だというメッセージです。「曖昧なものをはっきりさせよう」というメッセージを大切なものだと考えています。
「はっきりさせる」という態度は、プログラミングを行う上で、文章を書く上で、あるいはもっと広く自分の考えを整理する上で非常に役立っていると思いますね。曖昧なものを曖昧なまま考えることは難しく、また建設的な方向に進むことも難しく、さらには人に伝えることも難しいものです。ですから、何らかの意味で「はっきりさせる」ということが必要になります。
これは物語を書くときでもまったく同じです。ただし、「どのように書くことがはっきりさせることに相当するのか」や「何をはっきりさせることが大事なのか」については説明文と物語では若干異なりますけれど。
(2)創作活動で直面した課題の解決について
創作活動で直面した課題というのは、これまた無数にありますから、一つ一つ挙げていったらきりがありません。そこでたった一つだけ「どうして時間が掛かってしまうのか」についてお話しします。
創作活動(具体的には私の場合には本を書くこと)には時間が掛かります。それはある程度は仕方がないとしても、想定をはるかに超えて時間が掛かることがよくあります。〆切を過ぎてしまって関係者にご迷惑を掛けることも多々あるわけですし、書いている自分自身も「どうしてこんなに時間が掛かってしまうんだろう……さぼっているわけでもないのに」と首をひねることが多々あります。
見積もりが甘いとか、自分の能力を過信しているとか、さまざまな要因は考えられますけれど、私が考えるもっとも大きな要因は「《それ》を理解していないから」だと思います。
《それ》というのは、自分が書こうとしているテーマなり、題材のことです。書き始める前は《それ》のことを理解していると思っている。だから、甘い見積もりになってしまう。別に自分の能力を過信しているわけではなくて、単に理解していないから、結果的に時間が掛かってしまうのです。
自分としては執筆中にさぼっているわけではないのです。でも、書いていると「いや、違うな」と感じて書き直すことになります。そして「こんなふうに書くよりも、こう書いた方が適切じゃないか」と気が付いて書き直します。さらに「そうか。こういう理解をすればいいんだったら、先月書いたあそこはこう書き直した方がいいな」となります。これをやっているから時間が関わるのですね。
「最初からよくわかっていることを書けばいいのに」と思わないではないのですが、自分としてはよくわかっていると思って書き始めているのです。でも書いているうちに、自分の理解がいかに浅かったかを思い知らされることになる。それが現実です。
これは何十年本を書いていても変わらないので、これからも変わらないと思います。自分としては「わかっている」と思って書き始めるけれど、途中で「いや、違うな」と気付く。そして……という繰り返しになるでしょうね。
これはどのように解決すればいいのか。一つは「がんばって理解する」ことです。書くプロセスは自分が理解していることをただファイルに落とす作業ではなく、書くことによって自分が理解する作業なのだと意識し、ちゃんと理解することがベストの解法です。
ただしそこには「見切る」必要があります。どこかでは適切な落としどころを見つけて、適切な長さと適切な期間で一冊にまとめる必要があります。さもないといつまで経っても本ができませんから!
(3)数学やプログラミングを教える際の心がけ
数学やプログラミングを教える際の心がけ、といっても私は直接的に人に対して「教える」という仕事をやっているわけではありません。あくまで本などの文章を通じて間接的に「教える」立場になるでしょう。ちなみに、その立場を私はとても気に入っています。自分の心持ちや身の丈に合っているからです。私は現場で教えている先生に深い敬意を抱いているのです。
さて、教えるときの心がけはシンプルです。それは私がいつも書いている《相手のことを考える》という愛の原則に照らし合わせることができるからです。私が誰かに何かを教えるとき、伝えるときには、いつも《相手》のことを考えます。相手は誰か。私は誰に向かって教えようとしているのか、誰に向かって伝えようとしているのか。それをしっかり考えるのです。
数学であろうが、プログラミングであろうが、その《相手のことを考える》態度にはいささかも違いはありません。数学だから何か特別なことがあるわけではないのです。
といっても《愛の原則》だけでは具体性に欠けるのでもう少し書きます。数学でもプログラミングでも、相手がどのくらい理解しているのかを確かめることが非常に大切です。相手を目の前にしている場合には、さまざまな手がかりを通じて「相手はどのくらい自分の話を理解しているのか」を必死に探ります。相手が理解していれば、話を先に進めることができますし、相手が理解していなければ、今の話題をもう少していねいに深めた方がいいかもしれません。相手がなかなか理解できないならば、「とりあえずここはこういう理解で先に行く」という判断も必要になるでしょう。
相手の理解はさまざまでしょう。しかし、相手の理解がどうであれ教える側はそれをよく把握しておく必要があります。そしてその把握の方法は「こうすればOK」のようなマニュアル化がかなり難しいところですね。
ところで本を書く上での最大の問題の一つは、読者に直接「こう書いたらあなたは理解できますか」と尋ねられないところにあります。ですから私はレビューアさんをお願いして、自分が書いた文章がどのように受け入れられるか(どのように読まれるか)を少しでも把握しようとしています。
では、そういった「教える技術」や「教えるときの心がけ」を通じて私は何を伝えようとしているのでしょう。一言では難しいですけれど、少なくとも「学ぶ楽しさ」や「知る喜び」を伝えようとしているのは間違いありません。
* * *
以上、長々と書いてしまいました。あなたの質問への回答になっているでしょうか。ご質問ありがとうございました!
なお、以下は宣伝ですが、結城は毎週有料メールマガジンを配信しています。文章を書くこと、本を書くこと、仕事をするときの心がけ、心の健康などです。もしよろしければご購読くださいね。