Week 42, 2024 - Various Quittings
Random thought: If you have multiple urgent and important tasks for the day, your priority somewhat counterintuitively is to put all of them away for a minute, and focus on prioritization. Working on the thing that you and your goals will benefit the most from half an hour later is better than spending two hours on a slightly less important or less urgent task. When you need to deprioritize still important things, try to avoid the ones that give you resilience, by maintaining your personal health (mental and physical): eating well, quality sleep, getting out and moving, having a clean desk and closed browser tabs.
📋 What I learned this week
I withdrew my application for a position after spending an hour assessing the need to solve a technical take-home test they require from managers of managers. It’s a weird feeling to give up without attempting, but the technical skills required to implement this task properly were beyond mine. When someone in my teams fail, and I definitely feel like I failed, I urge them to look for the learnings. People are wired to put the bad experience behind them and move on quickly because it can feel painful to analyze our shortcomings. But that means the experience was for nothing, and an opportunity to learn was missed! So, I spent some time thinking about this experience, and what could I learn from it. On a high level, this made my area of expertise clearer: I'm good at developing engineering leaders, and creating organizational structures & processes that enable high-performing teams, driving both individual growth and business results. But I’ll stop here, it already sounds like a job application, sorry. My point is: find the learning in every failure to gain something from it, and start focusing on the future. (More on this topic in an earlier article.)
Proxmox is awesome. I migrated OMV from one node to another (via a backup/restore), moving the external HDD with it (and replacing its enclosure with a faster USB3 one). All the server shares, storage setups, SMB to other clients at home, everything simply just worked. Even the network change to the new gigabit adapter was fairly straightforward. (The trick is to leave both USB dongles connected and make the change in the Proxmox GUI, replacing the old network name with the new one in the vmbr0 Linux Bridge.)
Our latest podcast episode is out, this time we talked about Quiet Quitting: how to recognize and what to do with it. Check it out on YouTube or in your favorite podcasting app!
🎯 What I want to try next week
It’s been a while since I posted something on Engineering Leadership, and as my sabbatical is nearing its end, I want to make a prioritized list of must-write-about topics that I want to publish my thoughts on before going back to a full-time commitment.
I miss tinkering, so maybe I’ll have some time to play with my microcontroller project. The goal is to ship something visible after so many experiments.
Finally, with the second season of The Retrospective going strong, we need to think about what direction we take the website behind the podcast.
🤔 Articles that made me think
Analysis of 1200 US Return to Office Policies
The average experience paints a sad picture: middle-aged CEO responds to poor business results by urging his teams to work from the office, causing a morale drop and exodus of tenured employees, but no improvements in financial performance. There’s an old saying in IT that “Nobody ever got fired for buying IBM,” and I feel this is the same with RTO. If you’re a CEO and you’re presenting another missed quarter to the board, making your team work from the office will be perceived as a return to a safe bet, something you don’t need to justify. On the other hand, running a distributed company can be perceived as a risk by board members (where lack of diversity is still widespread). In this context, CEOs are less likely to take risks, and when asked what they’re doing to increase business results, more and more will start looking at RTO as one of the solutions, regardless of the lack of overwhelming proof of efficacy. (83% of the CEOs sampled in this survey expect a full return to office in 3 years.)
I find the question of distributed / co-located culture more complex than often described. I believe anything on the spectrum can work, requiring more attention to organizational culture on the extremes. The ideal for me, where I think a lot of companies will eventually settle, is a hybrid setup somewhere in between: a hub with regular in-person interactions, allowing freedom and flexibility to choose a few days of remote work. This hub can either be physical, an office where people can meet 2-3 days a week; or in the case of fully distributed companies, regular all-company off-sites. Either way, real-life encounters provide a shortcut to building trust and communicating efficiently.
On Quitting
Ex-poker pro Annie Duke (with a dark past) about abandoning something we’ve put a lot of effort in; the benefits and when to do it; situations when sticking around, showing grit and perseverance is the bad choice; and the organizational context of this mindset. The idea that made me think was this: when you consider quitting, you’re already beyond the point of when you should’ve done it. And there’s a study behind it, claiming that taking action versus not taking it makes us happier in the long run. Another argument for being action-biased, even if the action means changing course from your earlier decision.
ThoughtWorks Technology Radar #31 Preview Webinar
Just like 6 months ago, I watched the preview webinar of the latest Technology Radar. It’s interesting to see what the “Cambrian explosion of genAI tools” brings: as the industry quickly moves from proof of concepts to products in production, new roles like MLOps or GenAIOps are popping up to help the deployment, maintenance, observability, etc. of these AI-related systems.
Still on AI (40% of the blips are related, slightly more than 6 months ago), two coding assistant antipatterns they detected:
- Replacing pair programming with AI-assisted coding: this behavior hints at the misunderstanding of the value of pair programming. It’s not about writing better or faster code; it’s about improving the team, by a shared learning and shaping of the code, by improving communication, by practicing mentorship, etc. It increases collective code ownership. Contrary to this, working with an AI code assistant is a very operational, individual practice.
- Interesting biases observed while working with LLMs: automation bias (”A huge, complex engine gave this result, they must be right”); sunk cost fallacy (”I spent half a day with prompting to have this piece of code, I’m not going to abandon it now”). Recognize and avoid these.
Some tools, platforms, and techniques I haven’t heard much of yet:
- Mockoon: a robust API mocking framework to help your testing strategy. Also a nice open-source monetization example: besides their free product, you can pay for their hosted version and support. Just like Ghost, the engine that runs my blog.
- LLMs as Judges: a friend of mine told me that as an extra income stream, he’s working for a big tech company to judge the results of their genAI product. This approach of using human evaluators is slow and expensive, so some of Thoughtworks’ clients are using LLMs to judge another LLMs output. There are obvious ways this could go wrong, but the approach used seems to be aware of those. More on how in an overview paper to be published next week, with the Radar.
- AI Team Assistants: still in the Assess category like 6 months ago, but the technique is maturing with products like Atlassian’s Rovo and ThoughtWork’s own open-sourced tool Haiven.
- Using GenAI to understand legacy codebases: Interesting concept of creating an intermediate layer of a Knowledge Graph between the old code and the eventual new one, to help understand the current system in operation. Martin Fowler explains the idea, and there’s a promise that ThoughtWorks will open-source their tool CodeConcise once it’s mature enough.
- Difftastic: a smarter diff tool, that understands the programming language of the files compared, and highlights differences in the terminal in a side-by-side style. Try it by checking the recent changes in your git repo after installing Difftastic with
git -c diff.external=difft log -p --ext-diff
. - LLMLingua: a prompt compression tool by Microsoft. The idea is to take the original human-written prompt and compress it by a smaller, cheaper language model to use fewer tokens. This results in cost savings and potentially better results. There’s a demo to play with. The presenters used the analogy of MP3 or JPEG compression: leaving out parts that don't deteriorate the result recognizably to save significant size.
🎤 Something cool: Culture surveillance
I wanted to post about Bob Spotter two weeks ago, but it was down - now it's back up! This is an awesome weekend project in the cross-section of pop culture and geekery. A solar-powered Android phone with a microphone pointed at an undisclosed San Francisco street, Shazaming everything it hears 24/7 and pushing to a site with the original soundbite to listen at.
That’s it for today, cook something new this weekend,
Péter