Optimize for Sleep!
In a recent thread about quality ownership, I saw this comment from an agile coach that made me sad.
"So every time you walk in the door, quality is top of mind, and it’s completely part of the definition of done? I think not. Lack of quality and debt are very real.”
This person doesn't work with competent management. That outcome is caused by hiring low-cost coders who have no product and operational responsibility. "Quality" is extra work for them because there are no incentives to focus on it. Ops drives quality, not specs.
I responded, "This is top of mind for me every single time." Why? Trauma.
I talk frequently about continuous delivery and everything required to do it well, and I push back on destructive legacy practices that harm CD because, without CD, we are risking operations. I've had too many decades of sleepless nights supporting the systems I build. When I was first exposed to CD, it became an "ah ha!" moment for curing those sleepless nights. Now, I work backward from that goal and optimize for sleep.
Goal: When things break, be able to fix them quickly without workarounds and go back to sleep.
To meet this goal, everything is designed around operations.
Everything I do and talk about is optimizing for operations because if we do not optimize for that, we cannot respond effectively to security, functional, stability, or availability problems.
Work Smarter, Not Harder
Going back to the original comment that scoffed at the idea that developers would focus on something other than pumping out code, I had follow-up conversations that validated my assumptions about how incompetent the management was. They hired cheap, offshore coding mills to do development. Those developers, from my personal experience, are new to the industry and are trying to level up their resume to get a "real" job. They have no long-term relationship with the product they are building, no operational responsibility, and no incentives to do things correctly because the outcome is someone else's problem. Is this their fault? No! It's the executives' fault who are "saving money" on $35/hr developers. If you work for people that dumb, stop being frustrated and stop blaming the developers. No, you can't fix it by hiring more testers. You CAN fix it by quitting and working for someone competent.
Senior Distinguished Engineer at Walmart Global Tech
1y"Optimize for Sleep"... 1. Sleep is important for overall health 2. I am highly health conscious and make sure I get ample sleep 3. Make sure you avoid things that keep you up at night. There are plenty of ways to meet these goals. Being an overnight hero is not a good thing, being able to sleep more is. Nice one Bryan Finster.
Terraform Contributor|AWS|DigitalOcean
1yBe bold. Be brave. Be Joker.
Sales Engineering Leader | Strategic Consulting | Solutions Architect | Driving Secure Software Delivery and Operational Excellence | AI Enabled Pre-Sales | DevSecOps
1yI used to say, date night
Helping Engineers Understand Apps In Production. kill3pill.com
1yQuality is utterly vital to building software fast! Great post - thank you!
Helping to build software faster | Passionate Software Engineer with focus on Ai | Startup Enthusiast
1yLove this. another great article. On quality aspect I assume you are referring to enterprise applications? Continuous delivery and TDD are crucial for both startup and enterprise apps. I wouldn't want to start feature zero in either context without a pipe or develop something without TDD which both enable continouse experimentation. But what I have seen the "quality bar" can differ based on software lifespan. In startup world mantra is do things that don't scale while enterprise it's make things that scale. When addressing quality I question which box we are building. For short-lived apps in startups, some tech debt might be okay, but long-standing enterprise apps need best quality to avoid future pain. Knowing when to retire software clarifies those architecture decisions, making it easier to balance speed vs. long-term maintainability. When not clear we question when could we retire the piece of functionality we are building and if possible even get SLAs around that. This makes architecture decisions easier. I call it a boxing process.