デキる開発者は「酷いコード」とどう付き合っているのか?
【PR】 スキル
予想もしない形の障害をシミュレートすることで、Netflixのインフラは回復力を得ている。上手く行っているパターンではなく、ダメなパターンを想定することでだ。
その結果、我々は障害に悩まされることなく、ネットTVを観ることができている。
最高のプログラマーによるテストとは
以上はインフラの向上のために良い手段だが、コードの方はどうだろうか?
ある有名なプログラマー、ジェフ・アトウッドが述べていることは上記とさほど変わることではない。「Do terrible things to your code」で彼は次のように書いている。
私はあらゆる職業プログラマーにとっての重要なターニングポイントとは、最大の敵は自分自身だという考え、そしてそれを受けいれる事がこのリスクと向き合う唯一の方法だと気付けるかどうかだと考えている。あたかも自分自身が最悪の敵であるように、UIやコードを無茶苦茶にしてみたりすることだ。
このことはつまり、「プログラマーは少なくともよくあるミス、一般的なプログラマーが起こしがちなミスについて十分な知識を持っている必要がある」という意味になるだろう。
つまり、あなた神レベルのプログラマーであるためには、ソフトウエアに無茶苦茶なことをやらせて積極的にエラーを掘り起こせる、神レベルのテスターである必要もあるということだ。
これにアンドレ・メデイロスは、プログラマー自身だけでなくデバッグも同様の姿勢をとるべきだと付け加える。
バグを起こさないためにも、コードはプログラマー誰が見ても分かるように書かなければならない。バグの修正の際は自分のコードについてきちんと理解しなければならない。高い精度で自分のコードを理解するために、仮定を並べ上げて検証する。 必要であればデバッグ用のツールを作るべきだ
コードに積み上がっていくスラム
他から多くのコードを引き継いでいるというのも、我々が抱えている最大の問題の1つだ。特に社内ソフトなどは、レガシーコードの上に成り立っており、多大なマイナス要因となっている。
ゼネップ・トゥフェクシは以下のように述べている。
例えば家にさらにスペースが必要になったとする。そこで二階部分をつくろうと思うのだが、そもそも家が端からその様にできていない。設計からして無理であり、そもそも家の荷重を支えている壁がどれなのかを貴方自身分かっていない。出来る事といえば出来るだけの当て推量で二階を作り上げ、実際に上がってみて崩れないことを祈ることくらいだ。インフラの重要な部分を担っている多くの古いソフトウェアシステムはこんな事を繰り返している。その時は動くかも知れないがレイヤーを重ねる毎に脆弱性も追加される。まるで地震が多い所で無計画にスラムが作られていくようなものだ。
こういった過去の負債が撤去できるわけでもない限り、問題に対して我々ができることはあまりないのは明らかだ。
しかし、あくまで可能性だが、コードに対して無茶をしてやろうという取り組みが、過去の負債を取り除くことの重要性を明らかにすることはあり得るのではないだろうか。
RELATED関連記事
RANKING人気記事ランキング
NEW!
“最強PMO”が指摘する、会社で評価されない人が陥りがちな認識のズレ【連載Vol.9】
落合陽一「2026年にはほとんどの知的作業がAIに置き換わる」人間に残される仕事は“とげ作り”
AWS認定資格10種類を一覧で解説! 難易度や費用、おすすめの学習方法も
採用されない中高年の現実とは? 40代50代プログラマーが「年齢の壁」を突破する秘策
中島聡「未知の開発言語の勉強を、楽しめるかどうか」Windows 95の父が考える、エンジニア向きの資質とは
JOB BOARD編集部オススメ求人特集
タグ