Feature flags, technical writing and how much should we trust AI?
I had another busy week this week and another day in London, which as I’ve mentioned before, seems to speed up time by a factor of five or so. I had a good week, but I’m quite tired now, so I’m looking forward to a weekend of rest and relaxation. Let’s get on with this week’s post
🚩 How did I forget about feature flags?
I am currently working on a feature that needs to go live pretty urgently. We’ve been scoping it out as we go, as is often the case when things are under time pressure. I sprung into action pretty quickly with it, scoping things out, asking questions, starting coding. What I didn’t do was create a feature flag and start building behind it. It had become second nature to me to do this in my last job and yet in all the hustle and bustle, I didn’t think to do it. I hadn’t seen many folks do this in my current role so it sort of… slipped my mind. So I was building up this massive branch on my laptop, adding more features as we were thinking of them. I feel like the thought process there was that because the feature wasn’t fully scoped out, I’d just work away at it on my laptop and push it up once it was “ready”. The reality being that it could take a while and landing a huge PR on my colleagues at the end of that process would be a bit of a dick move. So this morning I thought to myself “why haven’t I created a feature flag and started pushing PRs up?” and that is exactly what I did. Feature flags are an incredibly useful tool in a developer’s toolbox - they allow you to push code up to Production that can’t be seen by users until the flag is enabled. So in my case, it meant being able to push up some code for this new feature I’d been building in secret and getting invaluable feedback from my colleagues, who immediately spotted things I could do better and asked really important questions. Next time, I’ll be starting the development of all features I’m building this way. No more forgetting about feature flags!
✍️ Why I love technical writing
It probably comes as no surprise to you, given you’re reading my blog, but I really enjoy writing. I used to love nothing better as a Staff Engineer than being given a vague brief with lots of unknowns, going away and investigating all those unknowns and writing up my findings. I hadn’t had the chance to do that in the six months since I moved jobs, that is, until the last few weeks. I got a brief and I had no idea what I was doing. I wrote up a skeleton of a document and started filling it out with everything I knew about the topic (it was to do with CSS which is a topic I also happen to enjoy!). Once I reached the boundaries of what I knew, I dove into the codebase and started figuring stuff out. I noticed how much having an AI agent available to do the legwork for me helped with this. Rather than manually trying to find things, I was able to prompt it to help me and as I was looking at Panda CSS (a framework I hadn’t used before), it was able to help me understand the syntax and how we should be migrating to it too. It took me a while because I had a few other things on my plate but I delivered a document I was proud of and I’m hoping it’ll come in handy when we plan the work that comes out of it. It has made me think though: why do I love technical writing so much? I think it’s the fact that I get given such a fuzzy ball of unknowns and I get to detangle it and put it in order, but I also just like the process of writing itself. I don’t think I could ever let AI do that for me. I like to structure a document just so, so that my colleagues have all the context and get taken on a journey from start to finish. It’s a craft, just like anything else, I suppose, and it’s one (for better or worse) I really enjoy.
🤔 I’m starting to trust AI too much
I feel like I’m starting to trust Claude too much. I asked it to set up some personal rules files just for me, which it did - they’re meant to help it write code that’s more aligned with your personal style. My colleague told me about this feature in Cursor so I asked Claude whether it could do something similar. It said “yeah, sure!” and created some rules in a file called .claude-personal.md. I’ve been happily using it the last few days, but I’ve come to write about it now and I can’t find any record of any such thing! There are some articles suggesting you can create rules in a .claude/rules directory, but these are global rules for the whole repo when I wanted some things that were a bit more personal to me that I could put in a global .gitignore so that I can add them to any repo and they won’t get committed. A good lesson to double check whatever agents tell you, because they still hallucinate quite a lot! I’ve come to expect this with code and always carefully check whatever generated code I commit, but I guess I figured the agent must know its own capabilities. Turns out I was wrong…
EDIT: I ended up asking Claude whether it had hallucinated when it suggested this filename and it told me that actually, it had not, this was just its suggestion for creating a personal rules file because Claude Code doesn’t natively support this feature. This method works, you just have to make sure you add it to the context using
@.claude-personal.mdevery time you tell it to do something. I was hoping for something that wouldn’t require an explicit mention, but I suppose this will have to do for now!
