2011年4月11日月曜日

PHPer蔑視の株式会社ディノ社長

このエントリーをはてなブックマークに追加
Clip to Evernote
Pocket

株式会社ディノ代表取締役社長・高原芳浩氏の「より良いPHPerのプロマネになるための20Tips」が、以前に紹介した「典型的PHPerの13の悪癖」よりもPHPプログラマを蔑視した評価しているので、批判的に紹介したい。同社は大学生が在学中に作ったベンチャー企業で、PHPのフレームワークSymfonyを駆使したウェブ・アプリケーション開発で知られている。同社は社員数22名と小規模だが、PHPに関わるソフトハウスとしては、標準的な企業規模とも言える。

そこに書かれているのはPHP案件のプロジェクト・マネージングのノウハウで、開発体制を工夫しコーディング・ルール制定すると言うごく普通のやり方だが、PHPプログラマに対する低い評価を見てとれる以上に、PHPプログラマを管理するプロマネへの低い評価を見てとることができる。

1. 労働量では、プロマネ負担が大きい

高原氏のTipsでは、プロジェクト・マネージャー負担が大きいのが特色だ。スキルに劣るPHPプログラマの管理コストは高いと言うのが、氏の主張のようだ。

ブランチの管理、ユニット・テスト、コード・レビューと修正、バグ・トラッキング・システムへの起票、OJTなどがプロマネの業務として考えられている。毎日、「1メンバーあたり1時間程度」の業務になる想定のようだ。大抵の小規模案件では、要件定義や仕様書の作成、顧客との折衝もプロマネ(兼アーキテクチャ)が行う事が多いと思うので、5人もメンバーがいたらプロマネは多忙を極める。

2. ソフトウェア技術の極端な限定

労働量だけ見ると、プロマネへの期待が大きいように思えるが、実際にプロマネに要求する専門性は低くなっている。

高原氏はプロマネがPHPプログラマを厳しく管理するために、プロマネが理解できない可能性がある技術的要素を徹底的に排除することを推奨している。それには現代的ではない部分も多く、生産性が向上するのかは疑問なことも多い。幾つか抜粋してみよう。

注意: 流行っているからと言ってgitやMarcurial等の分散レポジトリを使わせてはいけません。これらは扱いが複雑な上コミットしたがpushを忘れて帰られるという自体が頻発します。

GitやMarcurialの扱いが複雑だと思ったことは一度も無い。原理上、commit後にpushを忘れるプログラマもいると思うが、pushを忘れるならcommitも忘れそうだし、Subversionをロックしたのを忘れて帰宅するプログラマもいなくもない。なお、Bazaarはcommit時に自動pushの運用もできる。

14.ブランチのマージ
メンバーには極力trunkへのコミットを避け、開発者毎に一日分もしくはトピック毎にブランチを作りそこで作業をしてもらいましょう。ブランチをチェックしてマージは管理者がメンバーが帰った後に行いましょう。

GitやMercurial、Bazaarと比較して、mergeが苦手なSubversionで、PHPプログラマごとにブランチを運用するのは大変だ。そんなにプロマネに苦行をさせたいのであろうか。

PHPは5.3になって複雑な文法が導入されました。PHP5.2で動くフレームワークやライブラリならこれら複雑な文法が使われていなので大丈夫ですが、PHP5.3専用フレームワークと謳っているものはこれら複雑な文法を駆使して作られているため危険です。

PHP 5.3で導入された複雑な文法については、浅学なためかどれが問題なのかが想像がつかない(PHP 5.2.x から PHP 5.3.x への移行)。PHPは組み込み関数の仕様が変化する事は多々あり、バージョンとともに標準の動作も変化してきているが、それは『複雑』とは言えない。

エレガントなコードを書いて喜んでいる開発者には「もう少し丁寧に・・・」といって基本的な文法で書いてもらうようにしましょう。特にcall_user_func()・SPL・リフレクションあたりは危険なのでなるべく使わせないようにしましょう。

コールバック関数が問題ならば、JavaScript、つまりAjax等は一切使えなくなる。JavaScript無しのPHPは想像もつかない昨今なのだが、コールバック関数が問題になるのであろうか?

どの言語でもそうですがfloatの扱いは本来難しいのでなるべく使わせないようにしましょう。

浮動小数点は必要なときは使う、必要でないときは使わない。floatが必要なときに、それを使わないと、難易度はとみに高くなる。高原氏が、どういう状況を想定しているのかは不明だ。

8.switchを使わせない
break忘れるのでなるべく使わせないようにしましょう。

} else if(...) { が並んでいるほうが、可読性が良いと言う主張であろうか?

一般的に、switchは可読性をあげるための文法だ。Pythonなど文法に加えていないプログラミング言語もあるが、多くの手続き型言語で採用されている。

9.正規表現を書かせない
正規表現のチェックは非常に難しいため、面倒でもifを利用して仕様通りに分かりやすく一つ一つ書いてもらいましょう。

近年、正規表現をサポートしない言語を見たことが無い。これは、テキスト処理を簡潔かつ容易に記述できるためだ。そして最もユニット・テストが応用しやすい部分でもある。

12.無理にコメントを要求しない
phpdoc形式などの形式的なコメントは役に立たない事が多いのでやめましょう。

変数に明示的な型をつけれない言語で、引数に関する情報が無いと、ソースコードを参照するときに苦しむ事になる。

3. 株式会社ディノにおけるPHPプログラマ像

高原氏は、PHPプログラマにはスキル差があり、上述の対策は低スキルのPHPプログラマを前提にしていると前置きをしているが、低スキルPHPプログラマが全体の1%だと考えていれば対策を取る必要も無いであろう。

ゆえに、高原氏は、PHP、JavaScript、SQL、正規表現などを十分に理解しておらず、コメントも満足に書く事ができず、開発ツールに振り回されるプログラマを、標準的なPHPerだとしているようだ。さらに、スキルの向上は全く考慮に入れていない。残念ながら、高原氏はPHPerを蔑視しているようだ。

4. PHPプログラマの話?プロマネの話?

しかし、低スキルなプログラマを雇用した最悪のケースの話としているが、「~できない」わけではなく、「~をさせない」話になっている。「難しいコードを書かせない」「浮動小数を使わせない」「switchを使わせない」「正規表現を書かせない」「SQLを書かせない」。出来る事をさせないノウハウ集だ。

本当に低スキルなプログラマは、理解不能なコードも書けない。つまり、想定されているのは、一定以上のスキルを持つプログラマとなる。高原氏は、実はPHPプログラマに対してよりも、プロマネ像が辛辣なのでは無いであろうか。つまり、高原氏は、低スキルのPHPプログラマが書いたコードも理解できない、低スキルのプロマネを想定している。長時間勤務を前提としているのは、能力不足を時間で補えと言う事なのかも知れない。

5. 株式会社ディノで起きたと予想されること

高原氏のTipsは、汚いコードを書くプログラマを、低スキルのプロマネが如何にマネジメントするかのノウハウになっている。株式会社ディノでの経験を元にしているとすると、同社では経験の浅いプロマネが、ある程度の経験があるPHPプログラマを必死に管理する状況が発生したことがあるのだと予想される。学生ベンチャーだけに、色々と苦労があったことは想像に難しくない。

もっとも「w」を生やしているところを見ると、今日ではそれは過去の事で、高原氏はTipsを冗談のつもりで書いているようにも思える。

頑張ってくださいww

PHPプログラマが見たときに面白いと思えない内容を、PHPプログラマを雇用している会社の社長が冗談めかして書くのは議論を呼ぶかも知れない。株式会社ディノの社長は、ちょっと性格が悪いようだ。

0 コメント:

コメントを投稿