I’ve had a busy career year and am constantly reeling off new learnings and experiences with little time to pause. So I have made some time to pause and reflect, and share my biggest takeaways for longevity sake.
Weekly reflect
In the Summer I started a weekly reflection doc which I sometimes edit throughout the week, sometimes type some ramblings late on a Friday, but most importantly is becoming my sanctuary for chronological state captures of my brain. Thinking back becomes increasingly a memory of a memory and you lose touch with the context and constraints you made decisions under, and this doc is here to help remind you what was actually a decision versus an inevitability. If nothing more I love reading back on a random month and enjoying reliving dramatically typed events that now seem insignificant in the grand scheme of things.
Opinionated languages do work, typing a necessity
We’ve been using Go and it’s opinionated, what is nice about this is that the code across our services is uniform and naturally idiomatic and expressive. This results in predictable code structure, so the focus can be on the subtleties in both the writing and review. Typing saves us from runtime blow ups, and is a natural coverage improver (as you can see what you’re dealing with). We also use Typescript on our frontend apps, so typing is definitely the default - so much so I find it hard to go back to non-typed languages out of work.
AI has a (limited) place in my workflow
As someone who believes in most cases of software engineering deciding and designing what to implement takes (and should take) longer than the implementation - tools that advertise X factor return on coding speed have sat with little power. But convincing teams of this I guess is my real fight, not one against harnessing AI tools to help us be more productive when it comes to the actual coding. Personally I have successfully used ChatGPT to help me understand or name a language concept that Googling (or doc searching) just wouldn’t get me. I also have utilised it in personal projects to create me some boilerplate HTML/CSS - and I think to this end it can help project start paralysis.
I encourage my team to experiment with AI tooling - I want a culture of no taboo around it. That said, if you’ve built a whole feature in a language/library you’re not familiar with using Co-Pilot, chuck a mention of this in your pull request - we’re used to reviewing someone familiar with the repository writing new functionality, not an AI prompted to write code based on examples it’s previously seen - they tend to throw up very different issues.
Digital whiteboarding is a gamechanger
We use Whimsical, but Figma works too, and Excalidraw I’ve used a bit as well. I cannot understate how well an unlimited, editable, whiteboard does for my ability to refine and describe work. I’ve always been visual and liked to draw out representations of systems, but the digital nature just makes it so much simpler. My favourite thing to do is literally screenshot code and scribble over it. I can spend 40 mins drawing out the problem space and potential solutions for an unrefined ticket, and hand it over to a junior engineer to action - the return on investment in refining done in this way is astronomical.
Top ^