Digest: The Clean Coder Book

June 24, 2019
digest software engineering book
Estimated Reading Time: 21 minute(s)


The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin

Notes By Greg Hilston

I recently finished reading the book The Clean Coder, by Uncle Bob and decided to publicly share my notes. To be honest, I wasn’t stoked about this book, as I was told it was not technical. I was pretty skeptical that I’d take anything away and was dreading reading it. I couldn’t have been more wrong. Not only was the book very pleasant to read, but also chock full of great advise that I believe I’ll remember for the entirety of my career. If you have any questions or comments, please don’t hesitate to reach out to me.

Forward

Preface

Prerequisite Introduction

Chapter 1: Professionalism

Taking responsibility

Do No Harm

QA should find nothing

You must know it works

Automate QA

Do No Harm To Structure

Work Ethic

Know Your Field

Continuous Learning

Practice

Collaboration

Mentoring

Know Your Domain

Identify With Your Employer/Customer

Humility

Chapter 2: Saying No

Adversarial Roles

High-Stakes

Being A “Team Player”

Trying

Is Good Code Impossible?

Chapter 3: Saying Yes

A Language of Commitment

  1. You say you’ll do it.

  2. You mean it.

  3. You actually do it.

Recognizing Lack of Commitment

What Does Commitment Sound Like?

Learning How To Say “Yes”

Chapter 4: Coding

Preparedness

3 AM Code

Worry Code

The Flow Zone

Music

Interruptions

Writer’s Block

Debugging Time

Pacing Yourself

Know When To Walk Away

Being late

Help

Helping Others

Being Helped

Mentoring

Chapter 5: Test Driven Development

The Jury Is In

The Three Laws of TDD

The Litany of Benefits

Certainty

Defect Injection Rate

Courage

Documentation

Design

The Prossenional Option

What TDD Is Not

Chapter 6: Practicing

The Coding Dojo

Kata

Wasa

Randori

Broadening Your Experience

Open Source

Practice Ethics

Chapter 7: Acceptance Testing

Communicating Requirements

Premature Precision

The Uncertainty Principle

Estimation Anxiety

Late Ambiguity

Acceptance Tests

The Definition of “Done”

Communication

Automation

Extra Work

Who Writes Acceptance Tests, And When?

The Developer’s Role

Test Negotiation And Passive Aggression

Acceptance Tests and Unit Tests

GUIs and Other Complications

Testing Through The Right Interface

Continuous Integration

Stop The Presses

Conclusion

Testing Strategies

A lot of verbatim text will be here, as I want to be absolutely certain what Uncle Bob considers each test to be is very clear.

QA Should Find Nothing

QA Is Part Of The Team

QA As Specifiers

QA As Characterizers

The Test Automation Pyramid

Unit Tests

Component Tests

Integration Tests

System Tests

Chapter 9: Time Management

Meetings

Declining

Leaving

Have An Agenda And A Goal

Stand Up Meetings

Iteration Planning

Iteration Retrospective And DEMO

Arguments/Disagreements

Focus Manna

Sleep

Caffeine

Recharging

Muscle Focus

Input Versus Output

Time Boxing and Tomatoes

Avoidance

Priority Inversion

Blind Alleys

Marshes, Bogs, Swamps And Other Messes

Chapter 10: Estimation

What Is An Estimate?

A Commitment

An Estimate

Implied Commitments

PERT

Estimating Tasks

Wideband Delphi

Flying Fingers

Playing Poker

Affinity Estimation

The Law of Large Numbers

Chapter 11: Pressure

Avoiding Pressure

Commitments

Staying Clean

Crisis Discipline

Handling Pressure

Don’t Panic

Communicate

Rely On Your Disciplines

Get Help

Chapter 12: Collaboration

Programmers Versus People

Programmers Versus Employers

Programmers Versus Programmers

Owned Code
Collective Ownership
Pairing

Cerebellums

Chapter 13: Team and Projects

Does It Blend?

The Gelled Team

Fermentation

Which Came First, the Team or the Project?

But How Do You Manage That?

The One Project Owner Dilemma

Chapter 14: Mentoring, Apprenticeship, And Craftsmanship

Degrees of Failure

Mentoring

Digi-Comp I, My First Computer

The ECP-18 In High School

Unconventional Mentoring

Hard Knocks

Apprenticeship

Software Apprenticeship

Masters

Journeymen

Apprentices/Interns

The Reality

Craftsmanship

Convincing People

Tooling

This chapter was not taken notes on purposefully.

Simple Git Hooks

July 19, 2019
software engineering cicd git

Digest: A Few Useful Things to Know about Machine Learning

September 24, 2018
digest machine learning white paper
comments powered by Disqus