Engineering leadership · Book notes
The Clean Coder and when saying no isn't enough
The Clean Coder is right about saying no, but it puts all of professionalism on you and never tells you when to walk away.
I do fear if you read this book really early in your career, you could take it as gospel, and that if you take this advice without nuance, you may not understand and appreciate where he came from.
The Clean Coder by Robert C. Martin (2011) is a code of conduct for professional programmers. It talks about what to do when you have tough deadlines and your manager is asking you to do something unreasonable. It has a very loud chapter about knowing when to say no and how to phrase it.
Your manager wants you to build a feature by tomorrow, but it’s impossible. “I’ll try” sounds helpful, but it’s a promise you know you’ll break. “No” is honest, but leaves your manager empty-handed. The book says: say no, but offer a smaller deliverable you can do by tomorrow. I like that.
You can’t just show up and have all the fun parts of being a professional and say no to your manager and push back on deadlines and redefine requirements and things like that without doing all the other things that make you a professional.
But there’s a catch, and it’s important to remember: that no needs to be earned. Martin’s later Programmer’s Oath says something similar from another angle: be honest with your estimates, don’t make promises you can’t be certain of keeping.
I consider a professional organization one that doesn’t throw someone under the bus or put too much pressure on the very bottom rungs, and there wasn’t an emphasis of that in this book. And I don’t think that’s what the purpose of this book was.
Blameless postmortems have a rationale: when something goes wrong, it’s useful to ask which systemic factor allowed it to happen. But this book, addressed to individual programmers, never really asks that question.
You should hold yourself to this high standard, and again, I agree with that. But putting all of that on you and saying that if the organization fails it’s because you’re the problem, that’s the part where I was like, I don’t know.
You can’t fix a workplace that punishes honest estimates with an individual code of conduct. You can tell them the real number, offer to deliver something smaller, and still be told to try harder. Then you get blamed anyway when the deadline slips.
I wish there was a section here that was elaborated more on when to walk away. There are some environments in which you can’t thrive.
This is something I still don’t know how to do. Some workplaces make it hard to say no, but you can get better at it with practice. Others will never accept it, no matter how honest your estimate. How can you tell the difference before spending years finding out the hard way?