※こちらの記事はリーダブルコードを読んだ感想ではありません
最近、新人さんに教育をする場面が多くなり、彼らのコードを見てコードの書き方、お作法的なことが足りてないなと感じました。(読みにくい・・・(^_^)
そこでリーダブルコードを読んでもらおうと思いました。
本は自宅にあるのでそれを持ってこようかとも思いましたが、上司に相談したところ会社のお金で買っていいという話になりました。
2冊買いました。
サンキュー!上司!経費だぜ!
ちなみにリーダブルコードはプログラミングの『可読性』について書かれた本で言語にかかわらず参考になると思います。
技術書の中でもトップレベルに売れている本です。
母校の大学図書館にもありました!
今回の機会に私も読み直しましたが、いい本だと改めて思いました。
読んでない方はぜひ読んでください。(布教活動するオタクの図)
#後輩たちの感想
何人かの後輩たちに読んでもらって感想を聞きました。
対象は1~2年目の社員です。
###感想
・悪い例といい例が載っていてわかりやすかった
・悪い例の書き方をしていたので今後は直していきたい
・使用言語の経験がないのでわからない部分があった
・最後の方(テストコードの話)は書いたことがないのでイメージが掴めなかった
また上司から他におすすめの本があったら買っていいよと言われていたので、2年目の社員を中心に他にどんな本があったらいいかと聞いてみました。
会社にある本は入門系か辞書的なものしかなく、このようなテクニックについて記載された本はなかったためです。
###要望
問題集のようなものがほしいという意見が多かったです。
上記にある通り、弊社に入門書はあります。
ただ入門書を一通り読んだあと何を書けばいいかわからないというようです。
##1つ目
感想の下2つにあるやったことが無いのでわからなかった系の感想
これは良くないなと思いました。
特に今回は読みやすさを題材にした本だったので処理の内容はともかく目的などは解説されていたと思います。
また目的まで理解できなかったのであればそれについて調べたり考えたりする必要はあるのかなと思います。
わからないことをわからないままにしない
実体験がなくても意味や目的を想像する
ということができていないように感じました
##2つ目
要望にある問題集がほしいという意見
これは多かったのですが良くないと思いました
例えば『1~10までの合計を出力しろ』という問題があり、ステップなど考えればほぼほぼ1つの正解のようなものは出来上がるかもしれません
ただそれに意味はあるのでしょうか?
その問題集にあった処理を業務でそのまま組み込むことはあるのでしょうか?
そもそも問題集的な本を見かけませんがそれはなぜでしょう?
paizaなどプログラミングの問題を出してくれるサイトは知っていますが、あれは力試しであって練習問題ではないと思っています
###20190406訂正
頂いたコメントから上記内容を訂正します
例えば『1~10までの合計を出力しろ』という問題があり
これらの問題を解くこと意味がないとは思いません
むしろエンジニアにとっては写経といって他人の書いたコードを写す(コピペはしない)でもそれなりに意味があります
さらにそのコードを上位者の人にレビューしてもらう環境があるのであればなお良いです
コードレビューはする側、される側にとてもいい効果を生むと思います
paizaやAtCoderなどで力試しをするのもいいと思います
ただこのようなマイクロ課題をたくさん解いてもある一定以上はコーディング力は上がらないと思います
スライムを10000体倒してもレベルが上がらなくなってしまう現象と同じです(違うかもしれない)
スライムを倒して効率よくレベルが上げられる時期は上記のような課題をこなせば良いと思います
でもその時期ってとても短いんですよね・・・
真面目にお勉強を頑張れば数ヶ月もせずそのレベルは脱してしまうと思いますし、弊社の後輩さんたちは1年近くの経験を積んでいるのでそこは超えていてほしいという思いが文章に出てしまったかもしれません
###じゃあプログラム練習はどうすればよいか?という話
これをいうと後輩たちには嫌な顔をされるのですが、なにか作ってみるのが一番いいと思います。
何を作ればいいかどうすればいいのかわからないと言われます。
言語を習得しようと思うたびに掲示板や電卓などを作っていました。
プログラミングスキルを向上させようという目的なのであれば設計は使い回しでいいと思っています。
なので毎回同じ設計、画面のHTMLとか同じでいいのあればそのまま使っていました
仮想サーバ用意して画面書いてDB作って・・・
自分がやりたいのはサーバーで処理してる言語の勉強なのになかなかたどり着かない・・・
と最初は思いますが経験になっていると思います。
ただモノを作るのに目的がないとモチベーションが続かないというのはわかります。
私は当時githubなどの存在を知らなかったので↑で作ったコードは当時使っていたPCとともに消えてなくなりました(笑)
転職のときのポートフォリオとして使えないと思うのでいいです!
今のようなIT系の仕事をしていたわけでもないので見てもらうような相手もいませんでした
みなさんはgithubに公開して世界中の人に見てもらってもいいし、会社の先輩に確認して貰えばいいのではないかと思います
私は見てって言われたら喜んでみます!
#まとめ
リーダブルコードに限らず技術書は常に書いてあるとおりすればいいというものではないと思います
そのため書いてある内容だけでなく目的やそれにかかるコストを考えていかないといけないと思います
技術書はプロジェクトで発生した問題の答えが載っている本ではないので、常にこの知識はどういう場面で役立つのか考えながら読んで貰えればいいなと思いました