I often find myself in the slightly uncomfortable position of playing gatekeeper.
Someone comes along with some good idea, and I have to be the asshole who pulls their idea apart, or ultimately winds up saying "no".
I’m acutely aware that this often leaves the impression of me being resistant to new ideas, or change, or whatever, but people who know me well know this isn’t the case.
So let’s think about why gate-keeping is necessary, and what it means to do it well.
Let me begin by saying that good ideas are cheap.
On an average week I have one or two good ideas about how to improve Hibernate, or Jakarta Persistence, or Jakarta Data, and when I’m in one of those periods where I’m really focussed on this stuff — which means I’m thinking about persistence 24 hours a day, including when I’m eating and sleeping, work/life balance a la mierda — it’s more like ten good ideas a day.
Naturally, upon reflection, it turns out that nine out of ten of my "good" ideas are actually rubbish.
Generously, one in ten of the remaining tenth ultimately get implemented in Hibernate.
And of these survivors, I propose many fewer than a tenth for inclusion in the Persistence or Data specifications.
Some of those proposals get knocked down by the rest of the group, or are transformed into something almost unrecognizable.
That is to say, I need to generate thousands of ideas to get one new feature into the platform, and the process from "idea" to specification change typically takes years, or in extreme cases even decades (looking at you, StatelessSession
).