ソフトウェア

プログラマーの努力とコードの行数が比例しない7つの理由


プログラムにたった1~2行コードを追加するだけでも数日かかってしまうことがあるのはソフトウェア開発の現場でよくあることです。変更された内容だけを見ると単純そうに見える修正がなぜ何日もかかってしまうのか、コードの裏に隠された努力をプログラマーのマット・レイシー氏が自身の体験から解説しています。

You've only added two lines - why did that take two days! Matt Lacey: Creating Better Apps
https://www.mrlacey.com/2020/07/youve-only-added-two-lines-why-did-that.html

◆1:バグの再現に時間がかかったから
バグの報告が漠然としていると、実際にバグを再現するために多くの時間を費やすことになります。バグを報告した人に連絡をとって詳しい情報を要求することもできますが、応答がなかったり、相手の説明が下手だったりするとさらに時間が掛かってしまいます。また、発見したバグを開発者に報告するにあたって「バグについて十分な情報がない」と言うのは、「助けるそぶりを見せているだけで何もしていないのと一緒」とレイシー氏は指摘しています。

なお、レイシー氏はバグを報告する側にも苦労があることに理解を示しており、バグを報告してくれたこと自体には感謝すべきとも述べています。レイシー氏は「相手に詳細を尋ねる前に、確実にバグの再現方法を見つけ出すために提供された情報をできる限り活用することで、バグ報告に対する感謝の気持ちを示したいと思っています」とコメントしました。


◆2:社内に詳しい人がいなかったから
報告されたバグがソフトウェアの中でも使用頻度が低い機能に関するもので、長期にわたって変更されていないコードだった場合、その機能に関して社内に詳しい開発者がいなくなっている可能性があります。まず、バグが発生している機能そのものを詳しく知り、開発中のソフトウェアとの相互作用を調査するのに時間を取られるため、たった数行のコード修正にも時間がかかってしまいます。


◆3:バグの原因がすぐに見つからなかったから
バグの症状を確認するだけではなく、コードに潜むバグの真の原因を調査することがプログラマーの仕事です。発生原因がはっきりと分からないバグは、疑わしいコードを1カ所ずつチェックしながら原因を探していく必要があります。

レイシー氏は「私にとっては『バグを外側から見えなくすること』と『バグを修正すること』は同じではありません。バグをもみ消すことで、予期せぬ副作用により他のバグが発生しやすくなります。将来的に副作用で発生したバグに対処しなければならない時が来るのは嫌なんです」とコメントしており、確実にバグを解決することの重要性を主張しました。


◆4:関連するバグを調査していたから
バグの原因を特定するためには、報告されたバグの再現手順だけを確認するのではなく、異なるアプローチでも同じバグが発生するかどうか確認することも重要です。1種類だけの再現手順では「バグは1カ所だけ」という勘違いを生み、コードの根深いところにあるかもしれない問題を見逃してしまう危険があるとレイシー氏は指摘。あらゆる手順でバグの再現を試みることで、「バグの根本となる原因を見つけ、間違いがあるコードにたどり着くための貴重な洞察を得ることができる」とレイシー氏は述べています。


◆5:修正による影響範囲を調査していたから
バグは「問題のあるコードを修正すれば終わり」というわけではなく、修正にともなうコードの変更によってソフトウェアの他の動作に影響が出ないかどうかを確認しておく必要があります。修正したコードがソフトウェアのさまざまな機能に関わる部分であった場合、影響範囲は大きくなり「影響範囲内に異なるバグが発生していないか?」を確認するのに時間がかかってしまいます。


◆6:最も最適な修正方法を探っていたから
バグの中には、複数の修正パターンがあるバグもあります。その中で、いかに簡潔なコードで、影響範囲を少なく、リスクを最小限に抑えられる最適な修正パターンを見つけ出すためには時間が必要です。バグを解決する上で重要なのは「短時間で解決すること」ではなく、時間をかけてでも「将来的に他のバグを引き起こすことのない修正パターンを見つけること」だとレイシー氏は主張しました。


◆7:徹底的にデバッグしていたから
修正したソフトウェアを徹底的にテストし、すべての影響範囲で正しく動作しているかをチェックすることは時間がかかります。中でも「自分が修正したコードが問題ないどうかを他人にチェックさせたくない」「誰にもバグを発見されたくない」と考えているプログラマーほど時間をかけてテストを行っています。

レイシー氏は、「バグを修正しなければならないこと」よりも悪いことは「同じバグを何度も修正しなければならないこと」だと述べ、「私はバグに遭遇したとき、同じバグを何度も発生させたり修正したりする必要がないように、いつでも完全に修正されたことを確認するために時間をかけています」と語りました。

この記事のタイトルとURLをコピーする

・関連記事
プログラミング言語別に見るプログラマーの給与や人気ランキングなど世界のプログラマーを対象にした調査結果が公開中 - GIGAZINE

プログラマーを30年間やってきた経験から学んだことまとめ - GIGAZINE

超一流プログラマーはどういう働き方をしているのか? - GIGAZINE

仕事を全自動化して6年間も働かず年収1000万円を得ていたプログラマーが最終的にクビに - GIGAZINE

怠け者で愚かな人間ほど優秀なプログラマーに向いている理由 - GIGAZINE

in ソフトウェア, Posted by log1m_mn

You can read the machine translated English article here.