何気ない記録

なんとなく自分の意見を書き記すときにつかいます。つまり不定期更新です。

志が高ければ問題ないというのは日本の悪しき風習

 

デプロイ王子 Kazumi Hirose @ COVID19Radar on Twitter: "納期の事もあって、バタバタと、やむなくOSSとしてボランティアだったのだけど、ボランティアすら殴られるのか・・・何もできなくなる"

問題点を事実に基づいて具体的に指摘されたら暴言吐かれたと思うなら技術者はやめた方がいい。基本的にコードで語れ事実を受け入れろというのは原則で、そこに自分の不手際があったらまずは事実を受け入れる事が大事

 

これはちょまど氏のコメントも含め私は日本の昔からの精神論を中心とする悪しき風習であって、兎に角日本の技術者はこういった悪しき風習を辞めるべき。

 

具体的には「OSSだから」とか「無償だったから」とか「納期に無理があったから」というのであれば、最初から受けるべきではないし、一定の品質が担保できない仕事を受けて、後から「いや、実はさ、こういった事があったからね、仕方ないのよ」というのは理由にもならない。

 

私たちが書くコードは大抵のものは多くの方に使われる前提であり、そしてその挙動を使う側は中身を信じて使うしかない。

 

つまり、そこには信用や信頼という一つの暗黙の了解があるわけで、我々が世の中に何かを出すときは、それがOSSであろうがなかろうが、もっと言えば営利目的であろうが非営利目的であろうが、そういった事は関係なく、利用者の利益に沿うもので、その利益には信頼や信用を裏切らないという一定の品質が担保される必要がある。

 

そして、その品質が担保できない条件であれば、それは技術者として明確に断るべきだし、仮に断れないのであればどのような条件でなければならないかを明らかにし、その条件でのみ行うべきであって、それ以上でもそれ以下でもない。

 

この議論はOSSや無償云々は関係ない、プロダクトやサービスを使う人間に届けるという事に自分がどのようにかかわるのかという責任の問題であって、その自己のプライドをどの程度の位置に置くのかという事に過ぎない。

 

日本でブラック企業がIT界隈に多い原因の一つもこれで、やるべきでない仕事、品質が担保できない仕事を明確に断るという決断ができないエンジニアが多すぎる。

 

私はいくら儲かるプロジェクトであっても、自分が必要とする最低限の品質や機能の提供が担保できないのであれば絶対にやらないし、自分が参画しない場合であっても、会社としてそのようなプロジェクトを進める場合には、直接利害関係者に対して苦言を呈し、やる場合のリスク、特に私はそのような事を進める組織を信用しないし、場合によってはこの組織との関係を清算するがそれでもいいなら進めればよい、という意思表示を行う。

 

海外で言えば、GoogleのエンジニアやAppleFacebookといった企業に属するエンジニアもこういった行動や発言は普通に行っており、私が特殊なのではなく、日本社会がどちらかというと組織や集団という価値、そしてそれを生み出す自分の行動や発言、無責任な権限の委譲や黙認といった行為に無自覚すぎるだけで、世界的にはごくごく普通の事に過ぎない。

 

当然、ただのいちエンジニアが会社にそのような発言をしたところで体制に影響などないと思うだろうが、それでよい。

それは自分がなぜ開発をするのか、このコードはなぜ書いているのかというプライドであって、それは誰の為でもない、単純に自己顕示欲であったり自己の利益に過ぎないわけだから。

その上で、そういった価値観を明確にし、そういった価値観を理解してくれる組織に実際に移ればいいし、そういった選択ができる自分になるように努める事が、成長であり価値の向上というものだと私は思う。

 

納期や工数、課題、様々な理由で求められる品質が担保できない、又は、期待される品質まで到達できない、行うべき工程が消化できない場合やそれが予想される状況であれば、それはエンジニアのプライドと責任において止めるべきで、それができないのであればむしろOSSに関わるべきではないと思う。

 

カン違いしないでほしいのだが、世界中のどこにもOSSだからこの程度でいいよね、などという考えでサービスやアプリを作るエンジニアはいない。

もしいるのであればそれは日本ぐらいだと思うが。

 

OSSである事と、品質を担保する責任がない事は関係ないし、品質を担保するのはそのコードを管理する関係者とそのコードを利用するすべての技術者の共同責任であって、リードエンジニアである人間が「これはOSSだから仕方がない」的な雰囲気で語るべきでも言い訳にする事も恥以外の何物でもない。

 

そしてそれを内輪の人間が「だよね、仕方ないよね」とか「社会的に意義のある事だから気にしなくていい」というような発言でごまかすのもよくないし、同じエンジニアだからこそ、その一点では「こうすべきだったね」とか「僕も協力するから改善しようか」とか、正しいリアクションができるべきで、どこかの政党のような「仕方ないよね」という仲間内だけの反省会をすることは本当にやめるべき。

 

これがやめられないと日本のエンジニアはいつまでたっても世界のエンジニアと同じレベルでは働けないよ。

 

<参考>

 

 

 

 

 

 

 

こういったコメントに対しては、志が高ければそれが全てというのは明らかな間違い。

志が高い事、正しい事を行った事は正しく評価されるべきで、それは私も同じ。

でも、それとは完全に切り離して、コードや設計、プロダクト/サービスに関わる問題は個別の議論として取り扱うべきで、混在させてはならない。

それができないのも日本の悪しき風習だと私は思う。

 

コードの問題は人格を否定するものではないし、同様に取り組みの正しさはコードの正しさを担保する事もない。

 

それが真実でありそれが全てだと私は思う。

 

 <追記2>

 

なお、過去にも発言しているように、私は常に「最初から満点を求めるな」という主義ではあるので、別に問題や課題が内包されていること自体には問題があるとは考えていない。

 

ただ、今回の件は未テストの事項がアプリ/サービスの比較的重要な部分であるととらえると、エンジニア的視点でいえば「なぜソコを放置できたのか」という疑問が沸き、その視点で見直すと「これは少なくともこのような性質のアプリが持つべき品質に達していない」という事は明らかに指摘にいたるとは思うので、高木氏の発言自体は何も間違っていない(言い方/受け取り方は個人の感性によるのであえて言及しませんが)と思う。

 

ではその上でどうすべきだったかといえば、単純に「おっと、確かに、これはまずいですね、コメントありがとう御座います」これだけでよい。

 

マサカリなんてものは「事実かどうか」と「受け入れるのか受け入れないのか」でしかなく、事実であれば「サンキュー」で終わる話。

 

なお、受け入れたくないのであれば「その修正は僕の主義じゃないよ」でもいいし、「OK、好きに修正していいよ?」なんていうリアクションも海外では普通にあるし、それがOSSの強みのはずで、意義とか社会性なんて誰も議論しないよ。

 

その話を精神論やOSS論、社会的意義等、何ら関係のない話題に持ち込むこと自体が私からするとエンジニアの議論でもないし、解決に至らないわけで、一番無意味で無責任な議論だと私は思う。