ソフトウェアでバグを出さない最も良い方法は、どんなことか。
バグが起こりにくい開発を心がけること
バグ 
 ソフトウェアでバグを出さない最も良い方法は、そもそもバグが起こりにくい開発を心がけることだといえる。バグが起こりにくい環境では、その分工数に余裕が持てる上、ソフトウェア自体の性能も良好になりやすいという、正の相関性が見られる。正しい環境の追求は非常に重要な問題である。
プログラミング 
 可能な限り避けたいものではあるが、プログラムにはバグ (bug) の混入が避けられない。場合によっては仕様にバグがあることもある（もっとひどい場合には標準規格のようなものでもバグがある）。デバッグ (debug) とはバグを取る作業であり、プログラミングの過程に必要なものとして見積りなどでは含めておかなければならない。 プログラミング 
 続いて、全体のスタイルをおおまかに2つに分けると「トップダウン設計」と「ボトムアップ実装」になる。「なんとかの設計と実装」といったようなタイトルの本が多くあるように、どちらも重要だが、一般に対象についてよくわかっているものについてのプログラミングでは前者のスタイル、よくわかっていない場合は後者のスタイルとする。「設計された通りに実装することは不可能」といった場合に開発体勢の問題などから正しい対処がされないまま、設計と実装がちぐはぐになったプロダクトは悲惨である。また反復型開発では、あまりに大きなプログラムを一方通行のプロセスで書くことは最初から避けるものとされる。 プログラミング 
 コンピュータープログラミングとは、ある特定のコンピューティングの結果を得ることを目的として、実行可能なコンピュータープログラムを設計・構築するプロセスのことである。プログラミングが関係するタスクの例としては、アルゴリズムの生成、アルゴリズムの正確さとリソースの消費量のプロファイリング、選択したプログラミング言語でのアルゴリズムの実装（これは一般にコーディングと呼ばれる）などがある。プログラムのソースコードは、コンピューターのCPUで直接実行される機械語ではなく、プログラマーが理解できる1つ以上のプログラミング言語で書かれる。プログラミングの目的は、あるタスク（オペレーティングシステムのように複雑な場合もある）をコンピューター上で自動化する1連の命令を見つけることで、与えられた問題を解決することである。そのため、プログラミングのプロセスには、アプリケーションドメインに関する知識、特定のアルゴリズム、形式論理など、さまざまな主題に関する専門性が要求されることが多い。 プログラミング 
 Java、C#、PHP、Python といった言語にはそのような問題がほとんどないが、性能は低い。ただし、データベースアクセスやファイル入出力が性能を決定付けるような分野では、これらの言語の性能でも何ら問題ない。また、最近ではこれらの言語の処理系でも性能が向上してきている。 ハッブル宇宙望遠鏡 
 この問題を修正するために、焦点に入ってくる15%の光を最大限に活用するソフトウェアが開発された。これで性能は58%まで回復。これ以上の修復は直接宇宙へ行き、ハッブルを修理するしかなかった。 プログラミング 
 プログラムを書くことはアートなのか、クラフトなのか、工学なのかという議論がある。よいプログラミングには、それら3つの要素すべてが必要とされ、最終的に効率的で保守しやすいソフトウェアを生み出すことを目的とする（何が効率的で、何が保守しやすいかという判断も様々である）。「プログラムを書くことは設計をすること」という意見もある。 ボーイング747 
 経済性を考慮して、フェイルセーフ（fail safe）を全面的に採用している。これは少々の故障では墜落せず、最寄の飛行場まで安全に飛行を維持できるように配慮した設計を施し、一方で完全な飛行機（セーフライフ）を維持整備するための過大な点検と交換のコストを抑えるための方針であり、747の「信頼性整備方式」による経済性を支えた大きな力である。 プログラミング 
 プログラミング言語が異なれば、プログラミングのスタイル（プログラミングパラダイム）も異なる。どの言語を使うかの判断には、企業としてのポリシー、その用途への適合性、サードパーティのパッケージが使えるか、個人の好みなど様々な要素がある。理想的には、用途に最も適した言語を選ぶべきである。しかし、その言語を使えるプログラマが十分揃えられないとか、その言語の処理系に問題があるとか、実行時の効率が悪いといった問題から、最適な言語を選べないこともある。 プログラミング 
 プログラミング言語が使えるようになったことにより、機械語によるプログラミングを人間が直接する必要がなくなったのも一種の「プログラミングレス」だと言えばそれは大成功していると言えるだろうし（プログラミング言語の研究はその初期には「自動プログラミング」等と呼ばれていた）、結局「思想」というものが何を指すのか明確でないので、どうとでも言えることである。あるいは、現代においてはアプリケーションソフトウェアを使うだけでもコンピュータの利活用の幅がおおいにある、というのも一種の「プログラミングレス」であろう。理屈としては、ドメイン固有言語のうち、チューリング完全でないようなものは汎用の言語ではないから、それらを使ったコンピュータの利活用も「プログラミングレス」と言えなくもない。また、GUIによる設定やドラッグ＆ドロップでアプリケーションが開発できることなどを指して、プログラミングレス、あるいは、ノンプログラミングということもある。 閏秒 
 2012年7月1日のうるう秒では、Linux のカーネルのスレッド関係のバグにより、Java や MySQL など各種プログラムで、高負荷になったり異常な動作をしたりした。これにより、VPSなどの共有系のサーバーが過負荷になった。また、au、mixi、Gawker、StumbleUpon、Yelp、foursquare、LinkedInなど世界中の様々なインターネットサービスで障害が発生した。Linux カーネル 2.6.29 で修正したはずであったが、実際は、それよりも古いカーネルにバグ修正を加えたものではなく、それよりも新しいカーネルに未知のバグが存在しており、問題が発生した。