SEという職業は適正を問われる職業です。わたしは10年以上SEをやってきていますが、ちょいちょいSEの適正がないなぁ向いてないなぁと思うことがあります。
どんなときにSE向いてないと思うのか?その1つに自分が作り込んだソフトウェアにバグが発生したときというのがあります。
バグの原因を調査してみると…本当にくだらないミスだったりします。

後悔ばかりする日々です。

チェックが甘い人はSEに向いていない
最終的なチェックが甘い、確認が甘いという人はSEには向いていないと言えます。
チェック・確認とはいったいどんな作業を指すのか?
- 設計書ならレビュー前の確認
- 書いたソースコードの確認
- テスト
ソフトウェア開発の現場にはかならずミスがつきまといます。0と1しかない世界なのでほんの少ししか間違っていないつもりでも会社の信頼を失墜させるほどの致命的なバグになることもあります。
ミスがつきまとう現場だからこそチェック・確認を怠らないことが大切です。


SEに必要なチェックという作業
具体的にチェック・確認作業とはどのようなことをすれば良いのか?どのようにすればミスを減らせるのか?
10年SEの経験を踏まえて書いてみます。
2回、3回と繰り返し確認する。二重チェック。
確認作業においてやるべきことは、『二重チェック』です。2回、3回と繰り返して同じことを確認します。

と思われるかもしれませんが、ミスが少ない人ほど二重チェックをやっているはずです。
- ミスが起こることを前提として仕事をする
- 時には声に出しながら確認する
SEをやっている方ならばもしかしたら感じているかもしれません。SEは独り言が多いということ。
SEの独り言には意味があって、自分の考えを声に出すことで不思議と理解が深まったりするものなのです。
ソースコードを書いた時も、第三者に話をするだけで不思議と自分自身が埋め込んだバグも見つけられることがあります。穴が空くほどソースコードを見ただけでは気づかなかったというのに、です。
確認作業においても声を出しながらすることで確認作業自体のミスを減らせることができます。はっきりとした声にしたくてもいい、口パク程度でも良いので声にしながら確認作業を進めると良いです。
『絶対大丈夫!』『きっと大丈夫』と思いこんでいるだけで『だいたいダメ』
確認作業を怠る人は、

と思っている人です。
SEにとって、『絶対大丈夫』というのはどれだけ論理的に説明ができたとしても想定を大きく外すことがあります。
論理的に物事を考えるSEにとって全く反対な行動かもしれませんが、やっぱり最後は動かして確認してみなければわからないのです。

確認作業とは、
- 問題があることを確認する。
- 問題がないことを確認する。
この2つです。もっとつきつめて言うならば、『問題がないことを確認したという証拠(エビデンス)を集める作業』だと思っておいたほうが良いです。
要は、あとでなにかバグが発生したときに、いつ、何を確認したか?どこまで動いたか?ということがわかっていると調査も効率が良いです。
さらに言うと、バグが出ると犯人探しが始まるわけですが、

と思わせるために事前の証拠集めが大切なんです。やっぱり大切なのは自分を守ること。
時間がないから確認作業を怠る
チェックが甘い、確認作業がぬるい。これらの意味には確認作業を怠っているというケースもあります。
- 時間がない
- 納期を優先するためには品質を捨てざるを得ない
そんな理由からテストがゆるくなってしまうこともあります。それだけSEに取って納期というのは死守しなければならない存在ということです。
納期を守るために品質を妥協していくこともあるのですが、何かしら言い訳を考えます。テストしなくてもいい理由をこじつけていくのです。
- きっと大丈夫
- たぶん大丈夫
こういうパターンはたいていダメです。あとでバグとして報告されます。
…とはいえ、納期を守るためにはすべてのテストを網羅することができないこともあります。
大切なのは計画です。テストを網羅できないというのは計画した時点で破綻しているということ。自分ができない量の仕事は引き受けないようにしましょう。
それでもどうしても間に合わないというのであれば、テストをしないのではなく、機能を落とす方向で考えてください。
確認しすぎるぐらいがちょうどいい
わたしは仕事をしている時、常に二重チェックをするようにはしています。
- メールを送る時
- 会議室を予約する時
- 作成したソフトウェアをサーバに置く時
などなど。メールの文面が間違った状態で送ると自分自身の信頼失墜につながりますし、会議室の予約が間違っていたたら参加者の時間を無駄にしてしまうかもしれません。
作成したソフトウェアをサーバに正しく置いたつもりでいても、実は古いものだった!なんていうことはよくあることです。
二重チェックを行うことによって仕事のスピードは少し遅くなります。ですが、間違いを起こすよりずっとマシです。

仕事を早く進めようと思って雑になりミスばかりする…。ミスばかりしていると信用も失うし、仕事もやり直しになってしまいます。
断言しますが、SEは仕事が遅くていいんです。仕事が遅くてもいい、その分正確であれば。
もちろん、人はミスをせずにはいられない生き物ですので、ある程度は仕方ありません。ミスを極力減らすことが大切なんです。
1個間違えると10個間違えると思っておいて良いでしょう。最初の1個を間違えると、その結果から進める次の作業も間違える。負のスパイラルです。
一見時間の無駄のようにも思えるのですが、同じことを何度も確認するというのは大切な作業、仕事を進める上で必要なステップなんです。
ループはしないように注意
ただし、不安になりすぎて確認作業ばかりしないようにしましょう。
SEという職業をやっている人でうつ病になる人は多いです。その理由はなんといってもミスが発生しやすいからと言えるでしょう。
1文字程度の誤字脱字が会社を傾けるほどのバグになることがあります。そんな重圧を背負いながら1文字1文字、プログラムを書いていきます。
プレッシャーに押しつぶされてしまう人がいても不思議ではありません。逆に言えば真面目すぎる人だとSEには向いていないと思います。
完璧主義な人ほど、自分が望んだ・期待した通りの仕事ができずに落ち込む機会が多いです。理想の自分とのギャップに精神を病んでしまいます。
ミス・バグが発生するのが嫌なので確認作業をする。

そんなこともあります。
…これはわたしの実体験でもあります。ミス・バグというのは一回発生すると立て続けにポロポロと出てくるものなんですよね。
そうなると自分に自信を無くすし、いくら確認作業をしても不安なんです。
確認作業を繰り返すということは大切ですが、あまりにも心配になりすぎて抜け出せなくなるといったことがないようにしましょう。かならず『2回確認する』と決めて進めてください。

まとめ
- 確認作業を怠る人はSEには向いていない
- 絶対大丈夫、きっと大丈夫はだいたいダメ
- 確認作業は問題がないことを確認したという証拠集めの作業である
- 確認作業の時間がないからといって怠るのは悪手、機能を落としたほうがマシ
- 仕事が遅くてもいい、正確であることのほうが大切
今回のお話についてはSEのお仕事、ソフトウェア開発に限った話ではありません。きっとこれはどこの業界においても同じでしょう。
ただし、ソフトウェア開発の場合は他の業種と比較しても圧倒的にミス・バグが発生しやすい現場だと思っています。ソフトウェアというのはまだまだ未成熟ですからね。

なぜかそんなことがよく起こります。(…本当はなにかやらかしているんですけど)
すぐに動作を変更できる、ネットワーク越しにアップデートをかけられるというメリットがあるのがソフトウェアです。ミス・バグが発生しやすいものであってもメリットが大きいから使うんです。
使う側にとっては辛いときがありますけどね…。最終的に言えることは、SEはミス・バグによって会社を潰してしまうかもしれないというプレッシャーに負けないようにしましょうってことです。