著名なプログラマーでアンクル・ボブこと Robert C.Martin さんの名著「Clean Coder」を読みました。Clean Coder はエンジニアになったばかりの新人や若手の人たちは、必ず一度は読んでおいたほうが良い著作ですね。
この記事では Clean Coder を読んで個人的に思ったことや役に立ったこと、内容を受けて思ったことを綴っていきます。Clean Coder はプログラミングの技術に書かれた著作ではないので、技術的な部分について触れることはありません。ご容赦ください。
Clean Coder の感想
Clean Coder を読んでいて色々と考えることは多かったです。本書は「エンジニアとしての心構え」を中心的なテーマとして論じているため、今の自分の姿や将来的な目指すべき姿勢について思うところが多々出てきました。個人的に読んでみてClean Coder の中身は以下の三つの点が重要かなと思いましたが、それは本書を読む人の属性や経験、タイミングにもよると思います。
- エンジニアであること、プロであること
- 自己研鑽・自己投資のやり方
- 変更に強いコーディングへの心がけ
個人的な現状から本書を読んで得たのは上記の3つ。いま参画している案件もようやく落ち着いてきたタイミングなので「これから何をやっていくか」と「いまある自分を見直す」という点で思うところがあった、という感じです。
1.エンジニアであること、プロであること
何度も言ってますが本書はコーディングスキル的な部分が学べるわけではありません。どちらかというと、もっと根本的な部分のお話です。エンジニアとして、プログラマー、プロ、社会人として、どういう姿勢で開発業務に向き合うかという部分が大半です。
本書で再確認させられたのはエンジニア(プログラマー)は「プロ」であるということ。「我々は専門職なのでプロとしての責任が付きまとうよ。仕事に対する責任を持たないとね」という部分です。収めた成果物がユーザーに使われるという点で、エンジニアはプロとして責任をもって仕事に取り組むべきだということです。
実際、案件を通してエンジニアとして働くなかで「本当に大丈夫っすか?」と思わせるようなエンジニアもかなり見受けられるので、本書に書かれている内容(覚悟?)を少しでも実践するならば、長くエンジニアとして活躍できるんじゃないかと思います。
2.自己研鑽・自己投資のやり方
自己研鑽はとても重要ですね。案件が忙しいと疎かになりがちですが再認識させられました。普段使っている言語だけを学び続けるのは視野が狭くなりがちですし、新しい言語を学ぶことで得られるものあるよ、ということが本書で語られています。
新しいモノを学ぶとき、自分は Udemy を使うことが多いですね。動画教材なので手を動かしながら、自分でも作業できるのが利点。手だけ動かして理解を疎かにすることは注意が必要です。理解もせず手だけ動かすのはナンセンスなので。コードを書いたら調べたりして、理解をしたうえで先に進むようにしてます。
また、技術書は Kindle を利用して購入することが多く、普段から iPad mini を使って読書することが多いですね。Udemy は新規の知識・サンプルを学ぶことが多いですが、Kindle を使った技術書の読書では特定のトピックを深く理解するために使うことが多いです(例:テスト駆動開発、ドメイン駆動設計 etc)。
案件が忙しく残業が続くときは手がつかないこともありますが、千里の道も一歩から、ということでコツコツとやってこうという感じですね。これまでは C# ばっかりだったので、TypeScript とかやりたい。
3.変更に強いコーディングへの心がけ
Clean Coder では変更に強いコーディングとして TDD がオススメされてます。もっともな理由は TDD を用いることで品質保証がスピーディーになり、デリバリーするまでのスピードが上がるから。またリファクタリングもしやすく、改修による副作用が検知しやすいとのことです。
それに加えてユニットテストを記述しながらコーディングを進めるほうが、コードそれ自体がシンプルになり、可読性の高いソースコードを記述できる気がします。テストを書いてから実装するので、外部から呼び出しやすい構造にせざるを得ないというのが理由でしょう。
それに加えて TDD については個人的な懺悔な部分もあるというのが本音です。今の開発現場では TDD を実践できていませんでした。時間の制約が厳しいなかでの開発もあり、ユニットテストを行いながら開発を進めることができていないので大いに反省してるとこ。
本書に記載の通り、TDD は確かに有用であるため、この本を読んだらケントベックの「テスト駆動開発」も併せて読んでおくべきですね。TDD を知っているか知らないかで段違いなので。なによりも「テスト駆動開発」は名著です。
Clean Coder は読んでおこう
最終的に言っておくとしたら「Clean Coder は読んでおいて損のない一冊」だということ。技術書からは外れるため「学習したいトピックがどうの・・・」というよりは、エンジニアとしての根本的な部分を鍛えるために読んでおくべきです。
エンジニアとして働いていながら、エンジニアとしての心持が欠落している人がちらほらいます。そういう人は少なからず現場で信頼されないですし、現場で使い勝手が悪かったりパフォーマンスが微妙だったりします。稼ぐならプロになるしかない、という感じです。
「エンジニアってなんだっけ?」という当たり前で重要な部分を再確認させてくれるため、時折読み返すに値します。エンジニアって「プロ」なんですよね。当たり前だけど、忘れがちな事実。そういう点で重要な1冊だと思います。