こんにちは、rickyです。
仕事がうまくいかず困っている時に達人プログラマーを読むようにアドバイスをいただきました。
特にデバッグと偶発的プログラミングについての項目を読むことをおススメしていただいたので備忘録もかねて記事にしておきます。
なおデバッグの方は以下のnoteに記載しました。
対象読者
プログラミングのロジックを正確に説明するのが苦手な方
以前書いたのと同じコードをドキュメントを使っても書くことができない方
この記事で得られる知見
偶発的プログラミングについて説明ができるようになる。
偶発的プログラミングの原因を挙げることができる。
偶発的プログラミングと対極にある慎重なプログラミングを行うのに必要な考えを述べることができる。
偶発的プログラミングとは?
幸運と行き当たりばったりの成功に頼るようなプログラミング
しっかりとした事実に基づいていない仮定は、すべてのプロジェクトにとって有害なものとなる
慎重なプログラミングの方法
常に何をやっているのかを意識
新人プログラマーに対して、コードの詳細を説明できるか?できないのであれば、偶発的プログラミングに頼っているかも
完全に理解していないアプリケーションを作成しようとしたり、なじみのない技法を使おうとするのは、偶発的なプログラミングに通じる近道
うまく実行できている理由を説明できないのであれば、おかしな動作をする理由も説明できないはず
明確なプランが頭の中にあるか?
信頼のおける物事だけを前提としてください。偶然や家庭に依存してはいけません。
過程をドキュメント化してください。
単にコードをテストするのではなく、あなたのおいた仮定もテストしてください
作業に優先順位をつけてください。そして重要な部分に時間をかけてください
もし基礎やインフラが正しくないのであれば、本質的でない部分は何の意味ももちません
過去のしがらみにとらわれてはいけません。
達人プログラマーから引用
課題
偶発的プログラミングとは何か説明せよ
偶発的プログラミングに陥る原因を挙げよ
偶発的プログラミングを行わなくて済むようにはどういう考えが必要なのかを答えよ
解釈
偶発的プログラミングとはたまたまうまくいっただけのプログラミングのことを指す。
コードを把握しておらず、自分の都合のいい妄想を信じることで発生する。
表面上は動いているように見えるため見分けがつかないがそれによる被害や負債は後々発生する。
偶発的プログラミングに陥るのは
・単なる偶然に対してパターンと原因を見極めようとする
・事実に基づいていない仮定
が原因
防ぐためには?
・機能を呼び出すときはドキュメント化されている振る舞いのみを前提とする
・常に何をやっているのかを意識する
・本質的な部分に集中するため、作業に優先順位をつける
・陳腐化したコードは置き換える
感想
かなり耳の痛い内容だった。
とにかく早く作業を終わらせないと、別の作業をもっとやらないとと、焦るあまり1つ1つの作業が疎かになっていた面は否めない。
そのため本質を見失い、暴走しているような状態だった。
すぐにこれを修正するのは自分の癖を見直さないといけないためやや大変かもしれない。
だがそれをやるだけの価値は十分にあると感じる内容だった。
これが言葉だけで終わらないように日々の行動で意識するようにしないとと思わされた。
最後に
質のいい本なので本記事の内容だけで理解した気にならず、ぜひ一度手に取っていただければ幸いです。
市場に良い本が浸透することを願ってこの記事を終えます。
ここまで読んでいただきありがとうございました。
参考文献