
ということで、今回話していくテーマは『プログラミングとは、バグとの戦いの連続である』ということについてです。
プログラミングをしていると必ずぶち当たるのがバグです。
バグとはつまり、ソースに欠陥があってシステムの動きに不備が出る、またはエラーで動かなくなる根本原因のことです。
エンジニアをしていて、今まで一度も経験がない人はいないといってもいいでしょう。
それだけシステム開発をする上では切っても切り離せない問題なのです。
今回はバグとの戦いについて、現役エンジニアの僕が感じることをつらつらと綴っていきます。
僕自身はエンジニア歴10年以上、フリーランス歴5年以上の中堅エンジニアです。
これまでの経験を振り返りつつ、
- わかる!!
- たしかに!!
- そうなんだ!!
と、それぞれ共感や驚きをしながら見ていただければと思います。
特に有益な情報というわけではないかもしれないので、興味のない方はよかったらほかの記事を覗いてみてください。。。
プログラミングに関するほかの記事
目次
プログラミングとは、バグとの戦いの連続である【SEあるある】
プログラミング・・・
つらすぎです・・・
再現性がないバグはめちゃくちゃ厄介
バグと一口にいってもいろんな発生の仕方があります。
「このデータを使ったら発生する」
「この操作をしたら発生する」
といったように、データや操作起因で起きるようなバグだったらまだいいんです。
原因が特定できているから、修正も比較的かんたんにできます。
厄介なのは再現性がないバグです・・・。
- 毎回発生するわけではない
- どの端末でも発生するわけではない
- 昨日までは発生していた
などなど、バグを再現する方法が特定できないとき、でもなんとか直したいとき、これはめちゃくちゃ苦労します。。。
だって仮に修正しても直っているかの確認ができないんですから。
一旦様子見してみましょうとなればまだいいのですが、様子見じゃ困るからなんとか修正してほしいなんて言われた日にゃどうしようもありませんよ。
システム開発に携わったことのある人なら一度や二度はこんな経験ありますよ、、、ね・・・??
スキルがどれだけ上がってもバグ0は無理
プログラミング初心者のころはスキルも経験も伴っていないので、開発中にバグとぶち当たりまくります。
書いても書いてもうまく動かず、原因の特定に時間がかかり、できてみるとかんたんなコードに何時間も何日もかかったりします。
しかしやり続けていくとスキルは上がっていき、バグの発生頻度は減って、発生したバグもスムーズに修正することができるようになります。
ここまでくるとシステムエンジニア、プログラマーとしてある程度の仕事なら受注できるレベルだと思います。
しかし一方で、どれだけスキルが上がったとしても、まったくバグを起こさずに開発することのできる人は存在しません。
https://twitter.com/sakaiHulaHoop/status/1348996418883645444?s=20
こちらのツイートでも書いたとおり、倒してもまた次、倒してもまた次、と延々とバグ対応は続いていきます。
安定稼働していたと思ったらあるとき突然不具合連発なんてこともしばしば・・・。
バグを減らしたいけどゼロだと品質に問題がある矛盾
日夜バグと戦っているSEなのですが、一方でまったくバグがないシステムというのも問題があるんです。
数千行、数万行のコードがあって、それを人間の手で作っているということは必ず隙が生じます。
いわゆる『潜在バグ』(まだ発生していないけど、今後表面化する可能性のあるバグ)ってやつですね。
システム開発時にテストをして、エラーがあるということはちゃんとテストができていてシステムの品質が上がったとみなされます。
しかし、まったくバグが起きずにテストを終えると、
「ほんとにテストちゃんとやったのか?」
「テスト観点漏れがあるんじゃないか?」
といった感じで別の問題が生じます。
つまり、
「バグやエラーを無くしたい、でもまったくゼロでも困る」
という矛盾した悩みを持っているんです。
大事なのは自分のソースを自分で疑うこと
基本的には自分のことは自分が一番信じている必要がありますよね。
それが自信になっていきますし、自信があるように見えたほうがどう考えたってお得です。
しかし、ことシステム開発となると話は変わってきます。
自分で作ったシステムやソースコードを自分で信じてはいけません。
「どこかに欠陥はあるんじゃないか?」「こういう操作をしたらうまくいかないんじゃないか?」と、ある種悲観的なくらいに疑ってかかることをオススメします。
この記事でも書いていますが、プログラミングは粗を探すのが仕事なんです。
完璧なシステムなんてものは存在しないので、重箱の隅をつつくようにエラーになりそうな場所を探しましょう。
バグとの戦いを減らせるようにシステム開発をがんばろう
バグとの戦いが終わることはありません。
システムエンジニア、プログラマーとしてシステム開発を現場でバリバリ続けていく限り、向き合い続けることになります。
戦いは無くなりませんが、戦う数を減らすことはできます。
スキルを上げたり、
丁寧にコードを書いたり、
細かくチェックしたり、
工夫次第でエラーともうまく付き合うことができるようになるでしょう。
僕自身もまだしばらくはシステム開発の現場にいますので、あなたと同じくバグとの戦いを続けていきます。
メンタルが病んでしまわないようにうまく仕事と付き合いながらやっていきましょう。
おわりに【これからも戦いは続く】
今回は『プログラミングとは、バグとの戦いの連続である【SEあるある】』というテーマでお話ししました。
エンジニアの方は首がもげるほど共感していただけたのではないでしょうか?
今後も有益な情報以外にこういった箸休め的な記事も書いていきますので、よかったら引き続きお付き合いいただけるとうれしいです。
以上となります。