■開発研究記
TOP >  開発研究記一覧 > 自称上級プログラマの見分け方
2016/10/24 自称上級プログラマの見分け方

 自称上級プログラマほど厄介なものはない。いや、ワイシャツについたカレーうどんのシミであるとかフライパンにこびりついたコゲであるとか、世の中には厄介なものは山程ある。しかし、それらとは質が違う厄介な存在なのが自称上級プログラマである。ふむ。本当に上級であれば良いのだ。大いにプロジェクトの助けになるだろう。しかしながら、それほど上級でもないから厄介なのである。なので「自称」と言わざるを得ないのである。

 よくある話に「有能な怠け者は司令官、有能な働き者は参謀、無能な怠け者は兵士にすべきだ。無能な働き者は……」というものがある。何が言いたいのかというと、自称上級プログラマは無能な働き者なのである。例えば、いちいち不要なコードを盛り込んだり、不要なフレームワークやライブラリを導入したりする。不要な物が導入されると後々メンテナンスが大変になるのだが、そんなことは知った事ではないようだ。何故ならば自称上級プログラマにとって、不要な物を導入する事がアイデンティティだからである。だから後々のメンテナンスが大変になろうが自身のアイデンティティを確立するためには不要な物を導入しなければならないのである。

 フレームワーク他、各種不要論関係についてはネタが色々あるので別の機会に譲るとして、自称上級プログラマの話である。自称上級プログラマのメンタリティは、「○○を知っているおれってスゲェ」なのである。「ここの連中は無知だから○○を教えてあげよう」である。「下の者は技術力が低いから○○を使わねば開発できないだろう」である。そして「プロジェクトの開発効率を高めてあげなければならない」である。「何故ならば、俺さまは『上級プログラマ』だから」なのである。
 随分と上から目線なのだが、わたしからすると「逆にあなたの知らない△△は山ほど知っているから、別にすごいと思わない」し、「今回のプロジェクトの要件にマッチしないから使わないだけ」だし、「マッチしないものを導入したところで、プロジェクトの開発効率が上がるどころか下がるだけ」だし、「○○を使わないと開発できないほど技術力が低い人間はそもそも要らない」なのである。

 自称上級プログラマがこうした勘違いをしてしまうのは、管理職や営業の人がちやほやするからだと思われる。開発要員の職務経歴書には「OS」、「プラットフォーム」、「プログラミング言語」、「フレームワーク」、「ミドルウェア」等といったことを書く欄がある。開発要員の募集に際しては、プロジェクトで使用するこれらの要素とどれだけマッチしているかを判断基準にすることが多い。そして、マッチしているものが多いほど「即戦力だ」と話が決まりやすい。
 プログラミング言語あたりは大体横並びになってしまうので決め手に欠けるが、フレームワークはわりとバラけてくるのでマッチしていると有利になる。なので派遣メインの会社の管理職は「フレームワークをいっぱい覚えろ」という指示をする。だから、知っているフレームワークが多い人間には「すごいねえ」と持て囃すのである。営業も自信満々で「彼は優秀ですよ」と売り込んでくる。受け入れる側の人間もそれを信じてしまう。「○○と△△と××が使いこなせるとは、きっと凄いプログラマに違いないっ!」みたいな思い込みをしてしまうのである。

 そういった思い込みをしてしまう人は、一時期のフレームワークブームの頃の感覚が抜けていないのだと思われる。2000年代の中頃だろうか、その頃は新しいフレームワークがどんどん現れて「これからの時代は〇〇だ。〇〇を知らなきゃ上級プログラマとは言えない」みたいな煽りで記事を書く雑誌等が溢れ返っていた。その頃に開発の経験があるが最近は開発から離れてしまったという人は、その後の顛末を知らなかったりするので、フレームワークをいっぱい知っている程優秀な人だと勘違いをしてしまいやすいように思う。
 そもそもフレームワークなんぞ、そこそこの技術者であればネットで調べて一応の使い方くらいはわかるものだ。書籍が出ているようなものであれば、もっとも深く知ることができる。情報が少なかったり、あまりにも難解で使う人を選ぶようなものであれば使う価値は無い。実際には各種フレームワークが使えることよりも素のプログラミング能力の方が重要である。プログラミングのセンスがあれば、フレームワークへの対応も早いし、フレームワークを使わない開発も可能である。柔軟に対応できるというものだ。

 しかしながら自称上級プログラマは、素のプログラミング能力が低いので、そういった柔軟性に欠けるのである。自分の知っているフレームワーク等を押し通そうとする。そもそも知っていると言っても、上っ面の部分だけだったりする。プログラミング能力が低いのは、ソースを見れば一目瞭然である。管理職や営業といった人達はソースを見ることが無いので、その上級者とやらが自称なのかそうでないのか知る由もない。周りの技術者達に評価を聞いたりするのだろうが、微妙な人間関係があったりするのでアテにならない。
 受け入れ側としては致し方がないところがある。契約前にその人の書いたソースを見ることはまず無いからである。しかしながら、契約を継続すべきか否かの判断にはなるだろうし、自称レベルの人を上級者として売り込んでくる会社のレベルを知ることもできるだろう。それをしないのは怠慢であると言わざるを得ないのである。

 でもって本題である。前置きが長過ぎてしまったが、上記の事はどうしても書きたかったので仕方が無い。いや、わたしは自分の事をすごい上級者というつもりなどないのだ。上には上がいることなど百も承知である。しかしながら、「この程度で上級者?」というのを目の当たりにしてしまうと書かざるを得なくなってしまうのである。下記の例は、それなりに技術がある人にとっては簡単に理解できると思う。基本的にJavaのコードを例にするが、恐らくC等のプログラミング言語の技術者でもわかるだろう。

 たとえばこんなのである。

	private String getHoge(boolean hogehoge) {
		String rtn = "";
		……
		if (hogehoge == true) {
			rtn = getHoge();
		}
		……
		return rtn;
	}

 さて、何が問題だかわかるだろうか? 一目でわからないとすると、まだ上級を名乗るのは恥ずかしいレベルだと思われる。答えは「if (hogehoge == true)」の部分である。if文の()の中に「== true」は不要である。

 あるいはこんなのもある。

	private boolean isHoge(String hoge) {
		if (getHoge(hoge) != null) {
			return true;
		} else {
			return false;
		}
	}

 これはわかるだろうか? 答えはそもそもこんなメソッドは要らないである。「getHoge(hoge) != null」で用は済んでいる。メソッド化するにしても「return getHoge(hoge);」とすれば十分だからである。return文でbooleanを返す場合、こんなコードが見つかる事が多い。上記は極端な例だが、それでもこのレベルのコードを見つけたことは二度や三度ではない。落ち着いて整理すれば、わざわざif文を書くまでもなかったり、メソッドにするまでもなかったりするコードを盛り込んでくる。結果コードが肥大化し、追いかけるのが面倒でメンテナンスしにくいソースが出来てしまうのである。

 無理矢理詰め込んだようなコードは却って読みにくいので、コンパクトであるほど良いというものではない。要はシンプルに書けるものはシンプルに書いて欲しいという程度のことである。まともな技術者がリファクタリングをしていけば、上記のようなコードは無くなるはずである。それなのにこういったコードが書かれてしまうのは、リファクタリングなんて一切していないか、そもそもコードの書き方をあまり知らないかとしか思えない。
 恐らくまともなソースレビューを受けた事が無いのだろう。もっと言うと、その現場にはまともにソースレビューを出来る人がいなかったのだろう。また、リファクタリングを指示される事も無かったのだろう。あまりレベルの高い現場だとは思えない。そういうところで仕事をしてきた人が上級プログラマを名乗られても……と思うところである。提出してきたソースに上記のようなコードが含まれていたら、まず上級プログラマというのは自称であろうという話である。

 ソースレビューをガチガチにやると「そんなの宗教的だ」とか「これが俺の書き方だ」とか「動けば良いじゃないか」とか反発を食らう事がある。確かに巷のコーディングルールには宗教的なところがあって、どうかなと思ってしまう事も多々ある。しかし、さすがに上記の例はあんまりだと思うのだ。今回は前置きが長過ぎた為、あまり例を挙げる事が出来なったのだが、ネタはまだまだある。いずれ紹介したいと思っているので、今回はこの辺で失礼する。

Pervious < じゅんび   Next >  じゅんび2

お問い合わせは右のボタンをクリック→

Copyright(C) 2016 miyacho.com