私はプログラマなんですよ。プログラミング未経験で、IT会社に就職しました。
新入社員研修でプログラミングを学んで、実務を3年ぐらいやりました。プログラミング楽しいね!
新規PJでコードをボロッカス言われた
このたび、新規開発のPJに参加したんですよ。そこでごりごりコード書いて、そのPJの上司にコードレビューしてもらったんですよ。そしたら私のコードをボロッカス言うんですよ。
「全然わからん」
「動けばいいと思ってるでしょ?」
「プロでしょ?」
「全然わからん」
「マジックナンバー使うな」
「このメソッド名あってない」
「全然わからん」
「変数流用するな」
「レビューする人の気持ちも考えてよ、考えてないでしょ?」
「全然わからん」
「全然わからん」
「全然わからん」
「全然わからん」
「全然わからん」
「全然わからん」
とかいうんですよ。悲しかったんですよ。
前のチームでのプログラミングは、システムの保守が主だったので、元々あるコードを触ってた。そのコードは非常に難解だった。難しいのを修正するには難しいコードを書くので、難しくてもよかった(というかそうするしかなかった)。レビューもお互い(レビュアー・レビュイー)に努力して理解しながら進める感じだった。マジックナンバーも元からいっぱいあったから1つ2つ増えようが問題なかった。
しかし、新規プロジェクトはそうはいかない。元の感覚でプログラミングしてたらだめだね。ぼろくそだね。「動けばいい」と少なからず思ってたし、レビューする人の気持ちあんまり考えてなかったし、マジックナンバーも「使うな」って言われたけど、使う事を許すハードルがあまりに低すぎたよ。
ということで以下を購入(電子書籍化はまだみたいですね、電子書籍が待ちどうしいです)。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- Amazon.co.jpで詳細を見る
目からうろこでした!内容をかいつまんでまとめました。
コードは理解しやすくなければいけない。そんな当たり前の事つまづいて。
鍵となる考え
コードは理解しやすくなければいけない。(2頁)
そうだね!その通りだ!オナニーコーディングはいらねーんだ!研修でそんなこと習った気がしてたけど忘れてたよ。配属1年後にこの本読みたかったよ。研修中に言われてもピンとこないよ。
鍵となる考え
コードは他の人が最短時間で理解できるように書かなければいけない(3頁)
まったくその通りだ!そんな考えもうほとんどなかったよ!オナニーコーディングはいらねーんだ!前のチームではちょっとかっこよく書いてドヤ顔でレビュー受けてたよ!
「上司)これなに?」「僕)これはあれでこれであれなんですよ(どやぁ」「上司)へーすごいね、よく見つけたね」 とかいうくだりはいらねーんだよ!「上司)これなに?」とか言われる時点でだめなんだよ。「最短時間で理解できるように書かなければいけない」んだよ。
先輩の「if (Value=1){~~}」をみて「1」とかだせーな「if (Boolean(Value)){~~}」がかっこいいだろ(どやぁ とか思ってる場合じゃねーんだ!Booleanでキャストしてたら0と1のどっちがTrueか迷うだろうが!書いた俺自信も0と1のどっちがTrueか自信なくなって何回かググってるよ!
奇を衒ってはいけない。ただただシンプル。
「このコードを見てビックリすることは何だろう? どんなふうに間違えて使う可能性があるだろう? 」と自分に問いかけるといい。(65頁)
シンプルでいいんだよ。個性は要らないんだ。気づくのが遅かった。だれかにもう少し早く止めてほしかった。
鍵となる考え
「頭がいい」コードに気を付ける。あとで他の人がコードを読むときにわかりにくくなる。(103頁)
オナニーコーディングは要らないんだよ・・・
定期的にすべてのAPIを読んで、標準ライブラリに慣れ親しんでおく(175頁)
辞書は「引く」ものではない。「嘗めるように読む」ものだ。ところでAPIってなんだっけ?
どこで道を外してしまったのか
私、学生時代はプログラミング経験全くなくて、就職して研修してもらってプログラマが始まった。要するに素人なんですよ。応用情報は取ったけど「り りろんはしってる」状態。「コードは理解しやすくなければいけない」がなぜこんな蔑ろになってしまっていたんだ。当たり前だろこれ。ていうか最初の配属先が大きく影響してんだろうな。素人プログラマが何も分からず配属先で頑張ったら、そのチームの風土をもろに受けるよそりゃ。
そしてその風土に3年さらされた私は今、とんでもない所(新規PJ)に連れてこられてしまった。オナニーコーディングはもういらないんだ!新規なのに没個性だ。個性があって個性のないものを生み出すのだ。没個性だああああああ!あのコード書き直させてえええええええ!!!!そんな時間ないいいいいいい!!
高品質のコードを書くための書籍(218頁)
こいつらも近々読んでみたい。
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
と思ったけど高いか絶版かじゃねーか。なんで専門書はこんなに高いんだ。ターゲットが狭いからですね。
プログラミング経験0でプログラマなっちゃた人が実務経験1年後ぐらいに読むべき本
これです。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- Amazon.co.jpで詳細を見る
新人研修で初心者に勉強用に配布するとなおよい(独学で突き進んでいた人にも効くきます)。でも、研修中読んでもぴんとこないかもね。やはり実務1年ぐらいで読むべき(私はそのときに読みたかった)、プログラミングのコツがスムーズに頭に入る。
オナニーコーディングはやめよう。
続きの記事です!!↓↓