システム開発のバグ解決方法!あたりのつけ方の最短方法

システム開発を行っていると必須になってくる作業の一つでバグの修正があります。

様々な要因により、システムで不具合が発生するため大変な作業になることもあります。

 

システム開発を行っていると経験を重ねるごとに、バグ発生時に原因が何か、あたりのつけ方の精度が高くなっている気がします。
素早く問題やバグの原因を特定し修正するには、あたりを付けることは、素早く問題を解決することに必要なスキルとなります。

 
では、システム開発でバグ発生時に原因のあたりをつけるのに必要なことは何でしょうか。

私は以下の3つだと考えます。

・やっていることを理解する

・システムに関係することの知識を増加させる

・実際に問題が起きた際の動き

詳しく記載していきます。

 

やっていることを理解する

最も大事なことは、自分がやっていることを理解するということです。
理解しているのが普通と思いますが、理解していない方がいるのも事実です。

・プログラミング言語は何を使っている?
・開発統合環境を使っている?
・何人で作っている?
・何を作っている?
・うまくいってた頃からどのうような変更を行った?
・サーバは?DBは?ネットワークは?
・それらの設定は?
・誰が使ってる?
 
など
もし、今関わっているシステムがあれば全部を他人に説明できるでしょうか?
まだ経験が浅い頃は、難しいことだと思います。

何が原因で発生した問題やバグであるかを理解するには、環境を理解していることが、システム開発では重要なことになります。
最初から全てを理解はできないとは思いますが、参画してから徐々に担当するシステムに関係することを覚えていく必要があります。
 


技術力も必要ですが、技術力だけではなく全体を把握することが原因を追究するには必要な事です。

 

システムに関係することの知識を増加させる

優秀だと言われている人やそのシステムに長くかかわった人の方が、バグの原因を早く見つけれる要因として、1で把握しているシステムに関わることの理解度が高く持っている知識が多いということがあげられます。

・技術の知識が豊富
・システムが動いている環境の知識が豊富
・過去に起きた事象のノウハウがある
・関係する人との人間関係があり情報交換が円滑にできる


などが考えられます。

問題やバグの原因にあたりを付けるためには、色々な可能性を考慮できる知識が必要になってきます。
たくさんのことを覚えておいた方が、原因のあたりをつけるのは格段に速く精度も高くなります。
全てを完璧なレベルで理解できないのであれば、その分野を聞ける人間関係の強化でもよいと思います。

自分の得意な知識の取得方法は何でしょう。

実際に問題が起きた際の動き

1と2で記載してきましたが、私がバグに遭遇した際の思考や行動順を簡略化して記載します。
長く業界におり、様々な事をやってきたノウハウがあるのでバグの究明は早い方だとは思います。

 

①.誰に影響がでているか。その影響はどれくらい問題か。
②.状況を知るために問題の詳細を聞こう、把握しよう。
③.関係するところで最近、何か変更は行われたか。
④.②と③から大体のあたりを付ける。
⑤.ログなどから情報を集めよう。(最近のAWS不具合ではTwitterで検索して状況を理解しました)
⑥.問題となる原因について推測を報告する。
⑥.原因を調査、追及し、報告する。
⑦.修正までの時間を教える。


簡単に書いてみると上記のような思考により原因を見つけています。

やり方は人それぞれで優先としていることも異なると思いますが、PLなどを経験している人は、まず影響がでるところを先に考えるのではないかと思います。

私の場合も優先は影響範囲を予測し緊急度の高さを考察し、その後、ただのミスではないのかなどを考慮し状況などを聞いていきます。
そこからある程度、問題が起こりそうな部分をあたりをつけてポイントで見ていきます。
報告や共有は都度行うようにしています。 

 


また、問題やバグの発生した際に内心は、自チームの責任か他チームの責任かと思っている確率は、『自責:60% 他責:40%』くらいでいつも取り掛かります。
こっちが悪いかもって思うのが多い方が、ヤバいかもという思考になるので早く解決する気がします。

自分事で動きましょう。 

 

 

まとめ

私自身、若い頃のインフラやらネットワークの知識が少なかったころに比べると、今は、それなりに様々な知識もあるため、可能性をたくさん思いつけるようになりました。
思考内で取捨選択しながら、原因を特定していけるため解決までは早くなりました。


自分の経験や知見から、必要なことは、システムの周りの様々なことを理解し、知識を増やして覚えていくことや、人間関係の構築が重要だと思っています。

問題やバグ発生時にあたりつける早くなりたい!
と思っている方は、システムに関係することを全て理解する『つもり』で取り組むのがよいと思います。

プログラマーだから、インフラだから、デザインだから、という区切りで責任を押し付けるのを見たことありますが何も生みません。

協力体制を築いて問題解決できるエンジニアになりましょう!

 


 

 

 


読んで頂き、ありがとうございます。
この記事が誰かにとって、一つの参考となれば幸いです。
私自身、これからも好奇心・感謝・努力を忘れずに精進していきます。

 

 

 

コメント