本質はたぶんそんなに複雑な事じゃなくて

http://d.hatena.ne.jp/fromdusktildawn/20081026/p1
変数、クラスなどのスコープを最小限に絞る事や、DRY原則を守る事は、基本的には(ネタ元の記事にも書いてある)オープン・クローズド原則を満たすために必要となる考え方だと思ってます。私個人は特にこの原則を破る必要を感じないので、ふろむださんの話にはあんまり同意できないです(その事で低スキルプログラマー扱いされるかもしれませんが、しょうがないですね)。
http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/dp-ocp-2.html
http://msdn.microsoft.com/ja-jp/magazine/cc546578.aspx
http://ja.wikipedia.org/wiki/%E9%96%8B%E6%94%BE/%E9%96%89%E9%8E%96%E5%8E%9F%E5%89%87
この考え方では、要するに、その後の修正がスムーズに行えて、なおかつ、その修正に伴う外部への影響が最小限(というかゼロ)で行えるように設計する事が大切となります(そんな事知ってるよ、と言われそうですが続けます)。
例えば、「グローバル変数を使うな」と一般に言われるのは、グローバル変数に絡む修正が、モジュール内で閉じず、プログラム全範囲に影響を及ぼすために、オープン・クローズド原則を破ってしまうからです。それは、リグレッションテストの手間が増したり、それでも見つからないバグを埋め込んだりしてしまう可能性を高める事に繋がってしまいます。
これは、逆に考えると、上手にグローバル変数を使う設計になっており、修正に伴う問題の発生を局所化できているならば、実質「閉じている」ので問題ない、と見る事も一応出来ます。ただ、そういう設計が出来るような人はそうそう居ません。多くの開発現場でグローバル変数の使用を避けるようにする(Singletonパターンの使用を含めて)のは、このためです。私も、このルールを破っているために悲惨な状況になっているコードは、うんざりする程読みました。
そもそも、ふろむださんの話では、一般的なお約束を破らなければならないような状況、というのがどのような状況かについての、説明が不足しているように思います。少なくとも、Webアプリケーションとかビジネス向けアプリケーションで、そういった特殊なプログラミングが必要になるケースは、そうそう無いと思うんですが・・・。
一点補足すると、抽象化が過度になってしまう事(変数をバケツリレーするような設計をする事など)は、確かに良くないと思います。でもそれが良くないのは、抽象化のやりすぎによって、ソースコードの修正そのものが難しくなってしまうからです。以下の言葉は、オブジェクト指向プログラミングの参考書から拾ってきた言葉ですが、うまい事言っているなあ、と思いますね。

  • 早まった「抽象」をしないことも、「抽象」を使うのと同様に重要な事なのだ。 (「アジャイルソフトウェア開発の奥義」p.141)

オープン・クローズド原則をベースにして設計を行うべき、という考え方でいろいろ書いてみました。そこから外れる意見については違和感を持ちますし、そこに沿った意見には同意する、というところです。ふろむださんは、いろいろ見え過ぎていて、普通にソフトを実装するのはつまらないのかもしれません(皮肉ではないです)が、基本は基本として尊重すべきだと思います。