こんにちは、あのぶるです。
恥ずかしながら、私は昔からケアレスミスが多いです。学生時代の笑い話レベルから思い出すだけで胃がキリキリ言うような仕事のミスまでいろいろとありますが、ありがたいことに今もどうにかプログラマとして仕事をしています。

今回は私がどのようなことをしているかをお伝えしながら、ケアレスミスだけではなく自分の苦手分野との付き合い方を考えるきっかけになったらいいなと思っています。

多分ケアレスミスを「治す」方法はない

正直なところ、いわゆる「頑張る」系統の、自分の心がけに直接働きかける方向でケアレスミスをなくすことはおそらく不可能なんじゃないかなと思っています。
幸い、プログラマの仕事環境は「頑張る」以外の方法でカバーする余地がたくさんありますし、一般にそれがチーム全体の生産性向上につながるため推奨される世界です。

私が十分にできているかは一端脇に置いておくとことにして、主な対策としては以下のようなことをしています。

ケアレスミスを補う仕組みを導入する

プログラミング分野の中でも「古典」と呼ばれるような本を読んだりすると、背景にある開発環境と比べて現在のプログラミング環境は本当に恵まれているんだなと実感することができます。(なので、この時代のプログラマとして生きられることを本当にありがたいと思っています)
一番簡単に導入できるところでIDEでの補完や文法チェック、チームで活用できるユニットテストやコーディング規約違反を見つける静的解析ツールなど、プログラムの間違いを検出するための様々なツールが存在しています。うまく活用することで、本当に些細なミスに起因するバグを防ぐことができます。正直私はもはやこれらのツールがなければまともに仕事が出来ないくらい頼りにしています。

コードレビューで頻出するようなチェックポイントも、ユニットテストや静的解析のルールとして定義しておき、それをパスしていることが確認出来れば人によるチェックの労力も削減することが出来ます。

忘れていても適切なタイミングで思い出させる仕組みを作る

せっかくきめ細かなユニットテストを書いていても、実行することを忘れていたら意味がないですよね。CIツールをはじめとしたフックや定期実行の仕組みを使うことで、指定した何らかのアクションをきっかけにして勝手にツールが起動するため「実行するのを忘れた」というケアレスミスを防ぐことが出来ます。

また、プログラミングと関係ないところであればカレンダーアプリやリマインダーなどのタスク管理ツールを活用するのも有効な手段です。スマートフォンアプリで指定日時にプッシュ通知が届くだけでも十分活用出来ます。MacやiPhoneを使っていればプリインストールアプリとして付属しているので、まずはそちらを試してみるのがおすすめです。

それ以外にチェックリストもよく挙げられるものですね。こちらはうまく考えて使わないと形骸化しがちで、意識して使いこなす必要があるのかなと感じています。個人的にはどちらかと言うと「すぐに手を出せるレベルにタスクを分解する」ための方法としておすすめしたいです。やることを書き出してどんどん消し込んでいくのはちょっとした爽快感を感じます。この辺の話もいずれ別の記事で出来るといいですね。
Markdownが使えるツールならチェックリストを作成するための記法がサポートされていることが多いです。もし使ったことがなければぜひ活用してみてください。

とにかく記録を残す

例えば、メンテナンスなど定期的に発生する手作業の記録を取っておくのは典型的なんじゃないかなと思います。実行したコマンドのリストのようになるべく細かいレベルで保管しておくと何かと役に立つことが多いです。手作業を自動化するときの足がかりにもなります。

個人的には、ケアレスミス対策としてのチェックリストの本領はむしろこちらで、「やったことの記録」としての意味合いが強いのかなと思っています。

つまり、そもそもケアしないといけない状況を作らないように働きかける

ケアレスミスが多いということは「多少なり誰もがしてしまう可能性がある誤りを高頻度で検出することができる」とも言えます。コミットのたびに実行されるユニットテストのように、致命的な状況になる前に危うい場所を見つけて改善していけば、いずれ「細かなミスの多い人」から「みんながつまづくポイントを真っ先に見つけて改善していく人」になれるはずです。……と半ば自分に言い聞かせながら仕事をしています。

「ケアが出来ていればミスしない」ということは裏を返せば「常にケアをしないといつかミスする」ということでもあります。人が一度に注意を払える範囲には限りがあります。せっかく楽をするための環境が整っているのですから、どんどん活用して本当に大事なことにチームの労力を使えるようにしたいですね。

それでは、ケアレスミスとうまく付き合って、自分もチームも負担なく仕事が出来ますように!


The following two tabs change content below.

あのぶる

Software Engineer
杜の都で育ち、赤べこの街でコンピュータのいろはを学んだソフトウェアエンジニア。今はスマホゲームのためのWebAPIを作るお仕事をしています。最近はすっかりガルパンおじさん化。

最新記事 by あのぶる (全て見る)