誰にでもわかるような仕事
この仕事を長い間続けていると、たまに思う疑問があります。私達が作るソースコードは、他人が見ても理解しやすい、いわゆる保守性の高いコードを書くことが求められています。それは自分以外の他人が行うにしても、同じように改修などが行えるようにするためです。しかし、それは本当に私達 IT 業界に身を置くものとして、正しい行いなのでしょうか。
これは別に、自分だけがわかればいいコードを書こう、と言っているのではなく、「誰にでも理解できる」コードである必要はないのではないか、というところです。業務として開発を行い続けていますので、理解しやすいコードを書く必要性というのは十分に理解しています。ですが、今の IT 業界では、その「誰にでも」というラインが非常に低く設定されている、またはそういう層をターゲットにして開発を行えと言われている気がしてならないのです。
前回のコラムも似たような話題でしたが、私の中では「低いレベルを基準とする」のを良しとしていません。そこに関わる人達が、少しずつでもレベルを上げていくことができるような基準が理想だと考えています。私の中では、誰にでも理解できるソースコードである必要は何も感じられなく、むしろ相手によっては理解できないコードであっても構わない、とまで考える程です。
極端な言い方をしてしまえば、そこで理解できないようであれば一緒に仕事をするスキルがない、と言い切ってしまう事もできるはずです。ですが、有スキル者の数が少ない、または自分たちのプロジェクトには配属されないなど、違う理由でそのようなスキルが必要最低限に満たない人材でも、協力せざるを得ない状況が殆どなのではないでしょうか。
理想では、一定以上のスキルを有しているメンバーだけで、プロジェクトに関わるチームを構成することは、物事を良い方向に進ませるためにも絶対的に必要です。それは、コーディングの能力だったり、人と接するコミュニケーション能力だったり、状況を分析する能力だったりします。全てにおいて高いスキルを求めたくもなりますが、一定以上のレベルのメンバーで統一することさえ難しい状況です、そこまで望むのは贅沢と言われても仕方ありません。
改めて考えてみたいのですが、私たちの仕事というのは、そういった一定レベルに達していない人たちが対応できなくてはならない、誰にでもできる仕事でなくてはならないのでしょうか。
誰にでもできるようにする、ということは言い方を変えると、誰にでもできるようなことしかしていない、とも言うことができます。私たちの行っている開発作業が、誰にでもできるものではない、というのは実際に業務に関わっている方であればそれほど異論のないところでしょう。ですが、その作業に対して、誰にでもできるように考えて物を作れ、という要求が付いて回ることが非常に多いです。そしてそこには、低いレベルの人材があてがわれるようになっていってしまうのです。
違う見方をすれば、難しい事を簡単にできるように落とし込むことを求められている、ということなのかも知れません。ですがそれは、システム開発における本筋ではないと思えるのです。難しい事を簡単にするのは、開発のさなかに行うのではなく、開発が終わってから考える事なのではないでしょうか。
最初から読みやすいわかりやすいコードで書けばいいのでは、そういう方もいるとは思います。ですが、あるコードを読みやすいかどうかというのも、相手の能力に依存するところが非常に大きく、単純に短ければよい、というものでもありません。短いコードを読みやすいと思う人もいれば、文章的に記載しているやや冗長なコードを読みやすいと思う人も、それぞれ同じくらいに存在しているのです。そうなると、読みやすい・わかりやすいコード、というのは非常に基準としては不明瞭、となります。
誰にとって理解しやすくするか、という点を決めなければ、理解しやすいプログラムを書くことは不可能です。それぐらい、プログラムという物は多種多様に見てくれを変えることが可能です。そのようなものを相手に、理解しやすいもの、を最初から作ろうとすることはどれだけ上手く行うことができるというのでしょうか。私には、考えるだけ無駄、とまで思えます。
そう考えると、私たちの仕事を、成果物を、誰にでもわかるように作ることは、目標としてあってよいかも知れませんが、開発の最中においては反対に、考えてはいけないことなのかも知れない、そのように私は考えています。
誰が保守するかわからないから理解しやすいコードを書こう、長い事この業界にいる方であればあるほど、このような思想に染まっているとは思いますが、本当にそれは必要な事なのか、今いるメンバーを基準にしていれば十分なのではないか、そのあたりを考え直してみることも、今の私達に求められている事なのかも知れません。
個人的には開発業務というのを、誰にでもできる作業と考えてほしくないと常に思っています。可能かどうかは別として、集まったメンバーそれぞれが知恵を出し合い、その時点で最高レベルのものを提供する、そのためにも一定以上のスキルを持っているメンバーに限定するのが、最終的にも良い結果を生み出せそうに思えます。
誰にでも対応できるプログラムコードに、果たしてどこまでの価値があるのか、私には疑問です。ただそれは、自分達の仕事は誰にでもできるものではない、というちょっとした誇りを感じていたいから、かも知れません。そのちょっとした誇りが良いのか悪いのか、そこは私は分かりかねるところですが、間違っていないと信じていたいものです。
コメント
あべっかん
だれにでもよめるようなぶんしょうをかけ、といわれたら、たとえばかんじをつかわないぶんしょうになってしまいます。にほんじんにはとてもよみにくい。
それとおなじようなことかもしれませんね。
いっち
当たり前と思っていたことを、再考するいいきっかけとなりました。
確かに誰をターゲットとして、わかりやすいコードを書くかは決めるのが難しいですね。(設計書類も似たところがあるかもしれません。)
ただ少なくとも未来の自分が読んでわかりやすいようにはしたいなぁと思っている次第です。
ぽーる
ロジック的なところでわかりやすい必要は無いと思うんです。
開発者ならある程度コードは読めるでしょうから、追えば大抵は分かる。
けど、そもそも業務的になんのためにこの処理をしているのか分からないというロジックにまま出くわします。
そしてそういうのに限ってドキュメントが無いか、保守されておらず、当時の担当者も変わってしまって不明とか。
そうなったときでも保守できるプログラムというのが大切だと思っています。
なのでコメントもソースだと思ってるし適切に書くようにレビューのときに指摘したりしますねぇ。
なかなか理想通りにはいきませんが。。
tavi
概ね同意です。
確かに、「分かりやすく」が、「必要以上に簡単に」という意味になってしまってる開発はよく見ます。そのレビューに一体何時間かけるんだというようなことが。
ただし、別の考え方として、
没頭していると、ともすれば複雑なものを作りがちになるので、
自分のやり方を見つめ直す意味として、
これは他の人が見たときに理解しやすいものなのかという問いかけはするようにします。
そういうところからもっと簡潔なやり方が見つかることもありますし。
他人の目を上手く利用するといったところでしょうか。
Ahf
みなさんコメントありがとうございます!
自分以外の意見というのは、本当にありがたいもので、どういう方向を目指していくのが最大多数的に良い方向なのか、と考えるきっかけになると感じています。私は少しばかり鹿技術力を身に着けることができていないのですが、それでも日々の業務の中では「?」と感じる場面は多いです。
どこまでを目指すべきか、についてはこれからもずっと注意していきたいと思いました。