Konifar's WIP

親方!空からどらえもんが!

クソコードでも公開した方がいいんじゃないかって話

昨日のDroidKaigiの@operandoOSさんのセッション Android学ぶを君へ。生き抜くためのナレッジ共有の中で『ひたすらクソコードを書く』という話がありました。

f:id:konifar:20150427013729p:plain

もちろんこの話はほんの一部でしかないんですが、とても印象に残りました。

誰と話したか忘れてしまったんですが、懇親会で 「クソコードでも公開した方がいいんじゃないか」みたいな話が出て、なるほどなぁと思ったのでちょっと思考を整理しておきます。

書けば何がクソコードかわかってくる

何も書かないよりクソコードでもいいからまず書いてみる方がいいと思います。

そもそもクソコードっていうのはよいコードの基準があってこその価値観なんですよね。書かなくても何がよくて何がクソかわかるよって人もいると思うんですけど、自分はやっぱり頭で理解するより書いて理解する方が腹落ちしやすいです。

例えば、GoFデザインパターンはよくある問題を解決しているわけですが、一度同じ問題を孕んだクソコードを書いて悩んだ経験があると、すっと理解しやすいです。

また、よく昔書いたコードを見てクソだなぁと思うことがあるんですが、後でクソだと思うってことは成長しているからだと思うようにしてます。その実感を得る意味でもやはり書いた方がいいんじゃないかと思ったり。

公開への不安について

こんなの公開したらめちゃくちゃ叩かれるんじゃないかとか、すごいディスられるんじゃないかとか、不安になるかもしれません。気持ちはすごくわかるんですが、実はそんなに問題ない気がしています。

というのも、意外と皆そこまで見ていないんですよね。 GitHubスターが100とかつくとめちゃくちゃ焦ると思うんですが、それは逆に嬉しい悲鳴です。

もし注意するのであれば、Best~Great~といった誇張と捉えられる表現を入れなければそこまで叩かれることはないはずです。心配ならブログやGistで補足説明をしておけば、まず問題にはならないと思います。

また、自分の経験だと、すごいできる人ほどそういう成長過渡期の重要性を認識しているので、ただ批判したりするようなことはしません。 ダメな時は批判ではなく指摘から入り、どうすべきかアドバイスをくれます。

公開後の反応

GitHubでスターをもらえると、思っている以上に嬉しいです。 Issueでも注目してくれるのは嬉しかったりします。もしかしたらPullRequestを出してもらえるかもしれません。

自分の公開しているAndroidStudioプラグインもSwingのコードとしてはかなりクソなコードだと思うんですが、PullRequestももらって改善できたのですごくよかったです。

github.com

自分の感想としては、公開すると決めた方がよりよいコードを書く意識が高まるので色々勉強しようとします。 もちろんクソコードに甘んじていいわけではないんですが、今の自分の全力で書いたコードであれば臆せず公開してもいいんじゃないかなと思います。

悩んだ数だけ成長する

こんなこと言うと怒られるかもしれませんが、たぶん誰もがクソコードを書いた経験があるんじゃないかなぁと思います。

たしか社会人2年目くらいの時、当時(今でも)超すごいと思っていた先輩に「なんでそんなに色々詳しいんですか?」と聞いたことがあって、その時の返答がとても印象に残っています。

「よくそれ言われるんだけど、自分としてはそんなにすごいと思ってないんだよね。たぶん今konifarが悩んでることはすでに自分も前に悩んできたってだけで、要は先に経験したかどうかの違いだけだよ」

悩めば悩んだ数だけ成長します。もちろん本を読んだ方が効率的に勉強できることもありますが、実際に手を動かした方がいい場面も多いです。

クソコードだなぁと悩みながらも公開して、フィードバックをもらって頑張ることで、圧倒的成長できるんじゃないかと思いました。頑張ります。


最後に、クソコードという言葉が嫌いな人はごめんなさい。

個人的には、人のコードに対してはクソコードという言葉は使わない方がいいと思っていて、過去の自分のコードにのみ 「自分クソコード書いてんなぁ」って感じで使うようにしています。

今回はちょっと連呼しすぎた感あるので、もし気分悪くさせてしまったらすみません。