中途半端なプログラマが…

中途半端に優秀なプログラマが「正しいプログラミングテクニック」だと妄信しがちな3つポイント

トレードオフって大事だよねという話として理解した。
(A)「変数のスコープは狭いほど良い」と妄信する
変数や関数がグローバルスコープにあると生じる問題は、(1)どこからでもアクセスできるので状態遷移が把握できない(2)グローバル名前空間が汚れる(階層化されてないからカテゴリや意味がわからない or 大量すぎて探せない)、というところだろうか。
逆にグローバルでもいいものって何だろうと考えると、例えばデバッグ出力や統計情報出力、普遍的な定数(円周率)とか。あとは同期処理クラスとか文字コード変換みたいな、汎用性が高いもの、あるいはシステム全体の挙動に関連性が薄いものはOKなんじゃないだろうか。

(B)「同じロジックのコードを2度以上書くな」と妄信する
クリティカルなところとかはきちんと抽象化・共通化しつつ、どうでもいいところは同じコードをコピー&ペーストでも別に問題なかろうという話かな。
画面のテストなんかだと、ほとんど同じコードだけど、別のファイルになっていた方がテスターの都合が良かったりする。また、ユーザーインターフェースなんかはプログラマが過度の抽象化を行うと本来の目的から外れていったりすることもありそう。例えば「SQL文の入力欄つければボタンいらないじゃん」とか。

(C)「プログラミング言語を極めるのが大切」と妄信する
何を持って極めたと言えるか、というのには三つあると思う。
一つ目は、その言語で言語処理系やOS、仮想マシンが書けること。二つ目は、その言語の特性や内部構造を理解していること。三つ目は、目的に合致した最適なライブラリを選択できて、最小のコストで最大のパフォーマンスを出せること。
業務系だとその業界の業務知識とか、あとは会計や契約の知識は持っておいたほうがいいとは思うけど、もし言語を極められるのであれば、それは非常に大きなアドバンテージだと思う。