見出し画像

良いコードってなんだろう

組織が拡大するに伴い、「良いコードってなんだろう」と考えるようになった。

企業に勤めて、プロダクトを開発しているのであれば、良いコードとは「企業のビジョンを成し遂げること」が可能なコードだと思う。客観的にみて、どれだけ良くないコードが山積されていたとしても、それで誰かが幸せになってるならそれはそれで正解だと思っている。

しかしながら、技術の進歩や変化が著しい昨今では、機能的価値はコモディティ化している。このnoteというサービスでさえも、「記事を書いて、公開することができる」という点では、他にもサービスは腐る程ある。では、なぜ人々はnoteを使うのか。それには様々な要因があるので、ここでは述べないが、一つはnoteが好きだからだ。

他のサービスとの差別化を図り生き残っていくためには、時代の変化に迅速に対応することが可能な持続的な開発が必須である。良いデザインも本質的には不偏的であると思うが、表面上は日々変化している。数年前に良かったプロダクトが今見ればダサいプロダクトになっていることもある。つまり、プロダクト開発においては、スピーディー且つ持続的に開発されていかなければ、そのプロダクトは自然淘汰させる運命にある。変化に強いプロダクト開発こそ現代を生き残っていく術だと思う。

プロダクト開発を日々行なっているのは、他ならない僕らだ。変化の激しいインターネットの世界では、人員は常に流動している。これは個人的な考えだけれど、どれだけ金銭的なインセンティブを積まれたとしても、良くないコードをメンテナンスし、莫大なバグと戦っていくのは御免だ。時間は返ってこない。世の中に新しい価値を届けていきたいと心から思っている。僕らエンジニアはどこで働いたとしても、行なっていることはほとんど同じで、コードを書いている。どうせやるなら良いコードを書きたいし、そのような文化が強い会社で働きたいと思っている。つまり、良いコードを書くことは採用という観点において、企業の優位性にも成りうるパワーを持っている。

僕らエンジニアにおいて、良いコードとはなんだろうか。当たり前かも知れないが、以下の三項目だと思っている。

・読みやすい
・理解しやすい
・変更が容易である

これらの項目をクリアしていれば、それは良いコードなんだと思う。そして、良いコードはその組織における最適化された解であり、組織の変化に伴って常に変化し続けると思っている。これはどういうことかというと、スタートアップにおいて、各領域をほぼ一人で担当していることは珍しくない。一人の場合、数ヶ月後の自分が読みやすく、理解しやすく、変更が容易であれば、他の人にどれだけ批判したとされても、それは良いコードなんだと思っている。

しかしながら、組織はスケールしていく。新しい人が組織に入って来たとき、今まで一生懸命書いてきたコードたちは良いコードではなくなる可能性があるということだ。良いコードだと思われていたものたちは一晩にして、技術的な負債と成りうる。しかしながら悲観することはない。またその組織にいる人たちで「良いコードとは何か」というのを模索していけばよいと思っている。

「良いコード」とされるものは、常に変化している。恒久的な正解はない。今までビジネス的な価値を生み出してきたコードに罪はなく、これからより良いものに変えていけば良い。そのため、今まで良いとされたきたコードを本当に良いコードに生まれ変わらせるリファクタリングはとても重要なことだと考えている。この考え方は、新しく組織に入っていく人と既存のメンバーが持っておくべきだと思っている。

この文脈において、多くの人がコミットしているOSSのコードを読むのは非常に有益なことだと思う。それらは、多くの人たちが良いコードとしているからだ。そこから学べることは一冊の本を読破するよりも価値があるのではと思っている。

極論、使われないコードが最も良くないコードだと思っている。ビジネス的な価値を生み出すために、スピードとコードの質はトレードオフの関係にあると考えることもある。しかしながら、それらはどちらも追究することができると思っている。そのために僕らは考えることを止めてはいけない。常に、「このコードは他の人、あるいは数ヶ月後の自分でも最も理解しやすいコードになっているか」と自分に問いかけ続けるべきだと思っている。

この記事が気に入ったらサポートをしてみませんか?