If you’re thinking about these things too, we should chat. I’d love to hear your feedback, suggestions for posts, or talk about appearing on your podcast. Get in touch!
Howdy! These are the sort of things I’m thinking about in my spare time, while walking/showering, and (inexplicably) when I wake up with a real dinger of an idea.
Like everyone (it seems), I’m exploring how large language model copilots/assistants might change how I work. A few of the things that have stuck with me:
- Use LLMs to reduce the cost of doing things, there by increasing ambition. That is, reducing cost increases demand.
- Using LLM prompting to think through/design a new bit of program functionality. If one can manage to write a generic prompt, without proprietary information, you have given many programmers a much wiser pair than they might normally have.
- Use LLM flexible tool for thinking through problems or solving them outright. GPT4 is like rolling a REPL, a junior developer, and a conversational partner into one very flexible toolkit.
My take right now: GitHub Copilot is the real deal and helpful, today. On the low-end, it’s the most useful autocomplete I’ve used. On the high-end, it’s like having a pair who has memorized countless APIs (with a somewhat fallible memory) but can also type in boilerplate bits of code quickly, so I can edit, verify, and correct them.
I don’t expect the next few products I try to hit that mark. But, I suspect I will have a few LLM-based tools in my weekly rotation by the end of the year.
The practice of building software/technology is going through a phase shift. We’ve worked from abundance the past few years. Now we have to figure out which developments are worth keeping and make a dividend of that exploration. It’s not clear what job roles, kinds of software, practices, and benefits1 will persevere.
We’re going to have to ask “what would you say it is you do around here?” of software development assumptions from the past few years. It’s unsettling2, but some good corrections will come of it.
I’m betting that using writing as a lever will remain under-rated and under-used. Both for asynchronous/remote work and improving all kinds of thinking about building software.
Furthermore, Poker Face is excellent.
Working in small increments towards medium-to-large projects or outcomes is tricky. I too frequently find myself down a much deeper rabbit hole than I’d intended. And I’ve spent a lot of time thinking about it and practicing at it! Recommended reading: Simon Willison on productivity.
Read-only and write-only modes of accessing social media – there’s something good here. E.g., blogs and feed readers are distinct from most1 posting software. Currently, I’m reading Twitter once a day, as a digest, without the ability to scroll an infinite timeline. If I want to post, I open up an entirely different app that nudges me towards writing instead of dashing off hot-takes. Interestingly, Typefully and Mailbrew are what I’m using for this and are made by the same team. I wonder if that was intentional or a happy accident?
Billing/subscriptions/payment projects are absolutely crucial, “undifferentiated heavy lifting”, and difficult to pull off. I have a ton of unstructured ideas about this. The latest kernel of an idea: billing projects are very likely to involve weird interactions between business goals, customer psychology, and anecdata.
The nap hierarchy – naps are probably in my top 5 list of work-from-home benefits.
- Early versions of NetNewsWire and Userland Radio notwithstanding. ↩
How I work: what might “pairing” with a language model-based assistant (e.g. GPT-3) look like?
How I build: the tension between the web platform being more capable than ever versus the difficulty of standing up many kinds of “basic” applications. e.g. animation is better/more sophisticated than ever, but skipping ahead with building web/database applications requires expertise and a few hours to get something up and running.
How I collaborate: encouraging teams to work in issue threads, thereby improving the quality of thinking (via writing) and building ambient, asynchronous awareness amongst teammates.
Delegating: supporting teammates, delivering the right context, setting good outcomes/goals.
Not delegating: managing/mitigating risk, resolving unknowns. “Delegate downhill work, tackle uphill work.”
🤔 Compilers are at once magic and the closest thing to mechanical tools in a software developer’s experience.
✍🏻 Reflecting on using Shape Up for the past few years…
- Managing a backend engineering team at Pingboard.
- Managers can, and should, do deep work. What forms does that take?
- You can build anything from trust; how do you turn accountability into agency amongst teams?
- How can I get more writing/editing/publishing practice in?
- Meditating & reading