新卒1年目の終わりに「達人プログラマー」を読んでみた

f:id:umekazu:20210224224559j:plain

はじめに

こんにちは、スタメンでエンジニアをしている梅村です。20卒として昨年の4月から正式に入社し、もうすぐ1年が経とうとしています。そんな自分が「達人プログラマー」を読んでみた感想と、自分にどの部分が活用できるかを紹介していこうと思います。

なぜ読んだか

プログラマーとしての心得を学び、自分自身を1段レベルアップさせたいと思ったからです。 上記にも書きましたが、スタメンに入社して1年弱が経ちました。業務では主に Ruby on Rails でFANTSの開発を行っており、ある程度の知識は身についてきました。ただ、技術は身についてきたものの、その他のことに関してはまだまだ未熟です。そこで、社内の推薦図書にも上がっていた「達人プログラマー」を読み、実践することで成長したいと考えました。

達人プログラマーとはどんな本か

ざっくりと説明すると、「より良いプログラマーになるため・より良い仕事を行えるようお手伝いをする本」です。短いセクションを集めたかたちで構成されており、各セクションで特定の話題を扱っています。技術だけでなく、プログラマーとしての仕事の進め方なども話題にし、効率的・生産的に行動するにはどうしたらいいかが記述されている本です。

ここで、いくつかのセクションを抜粋して、内容や感想・自分に活かすにはどうしたらいいかを紹介していきます。

第1章:達人の哲学 ~ソフトウェアのエントロピー~

エントロピーとは物理学の用語で、無秩序な度合いを表す指標のことです。このセクションでは全宇宙のエントロピーが増加していくのと同様に、ソフトウェアも時間とともに無秩序になっていくと説明しています。 無秩序になる理由として「割れ窓理論」を上げており、悪い設計や質の悪いコードを残しておくと、「自分も適当に作業するだけだ」という考え方が忍び込みやすくなる、と記載されています。 自分自身も、進捗によっては深く考えずにコードを書いてしまったことがあり、それが結果として悪いコードとなり、その後の作業に悪影響を及ぼす、という経験をしたことがあります。 まずは自分の手をつける部分から、割れた窓ではない(適切なメソッド名を記述・責任を明確にした設計)コードを記述し、エントロピーを抑えていきたいと思います。

第2章:達人のアプローチ ~二重化の過ち~

このセクションでは二重化が起きる原因、二重化による問題を説明しています。 これを読んでいる皆さんも、二重化に悩まされた経験があるのではないでしょうか。コード上で同じ知識を2箇所以上に記述しているせいで、複数箇所を修正しなければいけなかったり、仕様が複数箇所にまとまっていることで、どれを正としたらいいかわからない、などはやりがちな問題だと思います。様々な二重化の解決方法が示されていますが、中でも「再利用しやすいようにしておくこと」は一つの解決方法です。コード上の話では、DRYを心がけどこからでも利用できるメソッドにしておく、仕様上の話では、仕様をまとめる一つのドキュメントを作成し逐一履歴を追えるようにして更新していく、などをして、二重化から開放されましょう。

第6章:コーディング段階 ~リファクタリング~

このセクションはリファクタリングとは何か、どうやってリファクタリングをするかを説明しています。 この本では「コードの記述のやり直し、再作業、再設計」を総称して「リファクタリング」と呼んでいます。また、リファクタリングを行うタイミングは、コードがなじんでいないと感じたり、まとめるべき2つの事柄を見つけた場合、としています。まさにコードを書いている際に、上記のことを感じる場面は多いですよね。リリースや納期のことを考えると、安易にリファクタリングに着手できないですが、放置していると、将来問題が発生した場合、余計に修正のために大量の時間が必要になります。なので、気づいたタイミングでリファクタリング・こまめなリファクタリングを行い、将来の問題に対処していきたいですね。

第8章:達人のプロジェクト ~どこでも自動化~

このセクションはビルドやリリース手続き、テストなどの作業の自動化について説明しています。 人間はコンピュータほど繰り返し作業が得意ではないので、ヒューマンエラーによる問題や手作業により工数も多くなります。そこで作業を自動化することで、ヒューマンエラーが無くなり、手作業をなくして他の作業を行い生産性を上げることができます。また、この概念はプログラマー以外でも重要な考えですね。日々の業務を振り返り、繰り返し作業があるなら、それを自動化してみる、ということを実践していこうと思いました。

おわりに

今回は「達人プログラマー」を読み、本の内容・感想・自分に活かすには、ということを中心に紹介しました。本の中で紹介されているツールなどは少し古いので、利用は難しいかもしれませんが、概念としてはとても重要なこと記述されていました。ただ、自分は2016年に発売されたものを読みましたが、去年の11月に第2版として新しいバージョンが発売されているようなので、こちらでは今に即したツールが紹介されているのではないかと思います。

各セクションで完結しているとはいえ、分厚い本なので、自分自身まだまだ理解できていない部分もあります。プログラマーとして迷ったときに読み返すなどして、理解を深めていきたいです。

株式会社スタメンでは一緒に働くエンジニアを募集しています。ご興味のある方はぜひエンジニア採用サイトをご覧ください。