I really don't understand the hate directed at Design Patterns (both the book and the practice). Design patterns are DISCOVERED, not invented. Gamma et al just cataloged patterns that they disovered by reading lots of code written by people who didn't know one another. 1/
They didn't invent those patterns. They just said: we looked at a lot of well-written code, and when we focused on certain problems, patterns started to emerge in the solutions. 2.
Criticising the GoF is really criticising the code of many hundreds of talented programmers working independently. Sure, the patterns aren't appropriate everywhere, and it's often best to start simple & refactor into a pattern, but they say that pretty clearly in the book. 3/3
I'll add that it's a testiment to the strength of the thinking that many of the patterns are now built into our languages. A lambda is just Command and/or Strategy. Without patterns thinking, those features would probably never have made it into the languages.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
I don't believe that "bugs just happen." They are written by people. Sure, people make mistakes, so if you really want to reduce bug counts, work in a way that catches those mistakes early, 1/6
and also create a deployment system that recovers quickly and gracefully if any slip through. E.g., with mob/ensemble programming, you have multiple pairs of eyes reviewing the code as it's written (a 1-on-1 code review performed after the code is done doesn't do that). 2/6
A no-known-bugs-on-release policy helps people focus on quality. TDD introduces tests so early that bugs tend not to be in the code to begin with, and running those tests every few minutes or so makes them easy to fix when a test fails. 3/6
Some thoughts on retros (and a much longer thread than is my wont—sorry). A poll over on LinkedIn asked, "How long does it take you to prepare and create a retro?" There's an entire thread talking about the destructive implications of that question, so let's do that! 1/15
IMO, a retro is a conversation focused on improvement, maybe triggered by something not working or going wrong in the recent past. You don't plan how to converse; you converse. The conversation happens continuously as you work. It is not a meeting. 2/15
The process of continuous improvement is just that—continuous. It is not an event. 3/15
There are two approaches to making projections for business purposes. The one to avoid is estimation based on specification analysis. Unfortunately, that's what most ppl use, and it pretty much always fails because an up-front specification is invariably wong. 1/5
You need to deliver something and get feedback to validate the spec. Constant reestimation as you learn is both wasteful, and equally futile. More to the point they're useless for business projections given that they constantly change. 2/5
So, instead of making projections based on specification analysis, make projections based on flow metrics like throughput (stories completed per unit time) or lead time (time from initial idea to delivery). 3/5
People talk about mob/ensemble programming being intense and exhausting, but when I hear that, I think there may be something wrong with your process. Personally, I find mobbing relaxing. So, here are a few must-dos 👇 1/6
(1) You can't mob without psychological safety—if you feel like you can't speak up, even if nobody else has your opinion, you don't have any. Speaking up should be a stress-free activity. Mobbing should be like a relaxed dinner with friends, not a cage fight. 2/6
(2) People flow in and out of the mob constantly. If you're feeling overwhelmed, take a walk. Ofc, to do this, you can't be the only person in the mob with an essential skill, so teach others your skills! 3/6
I occasionally hear people diss mob/ensemble work on the grounds that they're "introverted." I'm a hard-core introvert. I love mobbing, as do many ppl I talk to. So maybe, the problem is in understanding what an introvert is. 1/5
I like Susan Cain's take on introversion (her book "Quiet" is worth reading). It's all about the need (or not) for stimulus. I hate large, noisy parties & restaurants. I'd rather relax over dinner with a few friends. 2/5
I don't need much stimulus, so I can focus well for long periods of time. I have no desire to bungee jump 😄. I speak in front of large groups of people all the time (I am not shy), but I recover in a quiet place, ideally with a few friends, but on my own if necessary. 3/5