ホーム

代表ブログ

2018年5月29日

プログラムの本質は「時間」と「場所」を超えて人の行動を制御すること


今日は、入社して3ヶ月のプログラマーさんと話していました。
彼はプログラム経験は1年ちょっとと長くはないのですが、とても真面目な人柄で努力家でもあるので採用できてとても良かったと思っています。

入社以来、良いペースでプログラム作成をしていたのですが、3ヶ月が経ってみて、それまでに作ったプログラムから出る不具合やエラーが明らかになって精神的なダメージを受けていました。

そこで少し話をする機会があったので話したことをメモしておきます。

プログラムで重要なのは明確にすること
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
明確の反対の言葉はあいまい、ですが
プログラムをする上であいまいな部分は残してはいけません。

明確にしていない部分は
処理せずに残る

ということだからです。

処理していない部分は、制御できずにコントロール不能になります。
なので多くのエラーはあいまいにしたまま、残ったその部分から出てきます。

プログラムで重要なことは、すべて明確にしてあいまいな部分を残さないこと。
明確に出来ればできるほどエラーは少なくなります。
あいまいな部分を潰す能力がプログラムをする上で欠かせない能力となります。

MECE(ミーシー)というビジネスでよく使われる考え方がありますが、これは漏れなくダブりなく網羅する、という意味です。
あいまいな部分や漏れの部分をなくすMECE(ミーシー)の考え方が重要になります。

プログラムは時空を超えて他人が使う
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
プログラムはその場で使うものではありません
またほとんどは別の人が使う目的で作られます。

自分の目の届かない未来に他人が使うもの

なんですね。
その未来に他人が行動するパターンを漏れなくダブりなく想定してコードに落とし込むことが必要になります。

ただ単に「動く」コードを書くこととは次元が違うくらい、とても難しいことですが、人の役に立つプログラムを作るうえではこの人の行動をもれなく予想して、それに対応した処理をするということが必要になります。

経験が浅いプログラマーがよくやるのは
自分が、今、使う前提でコードを書いちゃうことです。

自分の行動パターンだけを想定して、コードを書いて自分でテストをして、「はい、出来ました!」というパターンです。

自分が想定している範囲しか処理できていないので他の人がテストをすると、モリモリとエラーが出てきます。

そんなとき、経験の浅いプログラマ―は「なんで、そんな使い方するんだ?」とテストをした人に腹を立てたりしちゃいます。でもそれは間違いです。

自分じゃない人が未来の違う場所で使うのが前提のものなので、基本的には自分の考えたパターンが少なかったと理解するべきです。

自分でするテストだけだと、必ず想定できていなかった部分が残るので第3者テストは必須です。

あいまいな部分を明確にするのには強さが必要です。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
処理せずに残していた、あいまいな部分には得てして、嫌な部分も含まれています。
その嫌な部分としっかりと向き合うためには、強くなる必要があります。

弱いままだとフタをして無かったことにしてしまいます。
少しでも、ヤバいかも、と思ったところはしっかりと明確にする癖をつけるようにしましょう。

それを繰り返すことで、嫌な部分と向き合う強さも出てきます。

経験が浅いうちにエラーが出た時は、サーバーやブラウザではなく、たいていはコードに問題があります。
あいまいな部分に責任を持っていこうとしてしまうので、そうではなく自分の書いた、または自分が担当するコードの原因を突きつめてもらえればと思います。

まずはあいまいな部分を残さない、理由を腹落ちするまで考えてもらえればと思います。

そのためには
「まぁ、そうですね」

「たぶん、大丈夫です」
といったあいまいな表現を意識して減らすことも有効な方法なので、良かったら試してみてください。
(20190811追記 言葉を明確にするのは、有効な方法ではなく絶対に必要な方法。)

ただ、エラーをゼロにするのは不可能。
だからこそ、、、
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
逆説的ではあるんですが、
未来の他人の別の場所での行動パターンなんて全部を把握するのは不可能です。
なので、エラーをゼロにすることは基本的には不可能だと思っています。

だからプログラマーは自分の想定していないところから出るエラーの存在を常に考えていますし、身構えてもいます。怖さも感じています。

だからこそ、自分の制御できるところの範囲内だけでも、見落としなく完璧に、という気概でプログラムは作るべきだと思います。

エラーを出したくて出すプログラマーはいないです。エラーが出ると誰もがイヤな気持ちになるものです。なので、会社全体で協力して嫌な気持ちになるエラーを一つでも多く減らしていきたいと思います。

タグ:

電子書籍にまとめてみました。

正社員が1年で働く時間は<br>たった22%ってご存じですか

「正社員が1年で働く時間は
たった22%ってご存じですか」

代表ブログでアクセスの多い記事をピックアップしております。

幸せに働くとは何か? その答えがここにある。
奥野 勝也 (著), シナジーデザイン株式会社 (著) 形式: Kindle版

Amazonで99で販売中

Kindle Unlimited会員なら0円

書籍の詳細はこちら
求人バナー

このページの上部へ戻る