見出し画像

プログラミングで最重要なこと

プログラミングで何が最重要なのでしょうか?

いろんな意見があると思います。
・CPUの実行効率が高い
・メモリ使用効率が良い
・エラーの発生頻度が少ない
・バグが少ない
・分かり易い記述
・フェールセーフが確実に実装されている
・安定して稼働する(ダウンしない)
・・・・などなど

実際には対象とする問題(テーマ)によって、当然重要なことは変わります。

例えば、自動車や航空機のような乗り物の制御ソフトは、プログラミングが暴走してブレーキが効かなくなると人命に係わるので、何十にもフェールセーフを用意しないと使えない。

一方ATMのようなシステムでは、集中してアクセスしても(例えばGW明けとか)耐えられるようにしないといけない。

これらは非機能要件と言われるいわゆる「機能ではない」要件として、明確に定義する必要がありますが、どんな分野のプログラミングでも共通して最重要なこととしてはどうでしょうか?

私は、「保守性」すなわち、
・いつでも簡単に修正できる
・トラブルがあったときに原因をすぐに特定できる
が最重要だと思います。

作ったら作りっぱなしのプログラムって、そんなに数多くないと思うのですが、一度作ったシステムを運用していて、何か仕様変更が入ったとか外部要因の影響で変更しなくてはならない時に、どこをどう直したらいいのかわからないようでは、”手離れの悪い”プログラムになります。
このようなプログラミングが数多く存在すると、そのメンテナンスだけで仕事が溢れ、新しいプログラムが作れなくなってしまう。

では保守性を高くするためにはどうするの?
・人間が分かり易い言語を使う
・関数化、サブルーチン化、カプセル化などで抽象度を上げる(整理整頓)
言うのは簡単ですが実際には人間どおしのコミュニケーションの問題等で、そんなに簡単ではないです。
作った人がいなくなっちゃうなんてことは、日常茶飯事です。

なので、どちらかという技術の問題というより、プロセスとかコミュニケーションの問題だと感じています。

(次回に続く)

よろしければサポートをお願いします。また、何かコメントがあれば情報交換したいので是非お願いします。