Recommended Reading
Artificial Intelligence
Breunig,
Building Castles in the Air, but With Surprise Physics
Using an LLM in product engineering is inherently probabilistic. We need to start measuring systems
statistically, and which statistics will change from one system to another.
Planet Money,
AI Podcast 1.0: Rise of the machines
I cite this podcast in nearly every conversation I have about how to use LLMs at work. Specifically,
I like how they show that LLMs are great at handling tasks, but not projects. The human-AI collaboration
works best when the human is already an expert and has a structured workflow that they can lead the
AI through.
I find their middle-loop engineering a very natural fit:
This middle loop involves directing, evaluating and fixing the output of AI agents. It requires a different skill set than writing code. It demands the ability to decompose problems into agent-sized work packages, calibrate trust in agent output, recognize when agents are producing plausible-looking but incorrect results and maintain architectural coherence across many parallel streams of agent-generated work. The practitioners who are excelling at this new work tend to share certain characteristics:
- They think in terms of delegation and orchestration rather than direct implementation.
- They have strong mental models of system architecture.
- They can rapidly assess output quality without reading every line.
Recurse Center,
Developing Our Position on AI
They acknowledge the many different perspectives on using AI in software and are able to synthesize
them into a coherent position.
Weakly,
Stop Building AI Tools Backwards
Hazel proposes a set of principles and practices for building AI tools that align with
Retrieval Practice, an evidence-based learning technique.
OpenAI Harness Engineering,
Harness Engineering
"What capability is missing, and how do we make it both legible and enforceable for the agent?" Every
time an agent does a root-cause analysis or stumbles building a feature, it should try to identify
what wasn't legible or enforceable and raise that flag. Humans, other agents, or a cyborg hybrid
can prioritize and improve the system.
Techno-Economics & Philosophy
Jacob (17:20): It seems like coding is where agents are real. Where it's doing what a person does. Not perfectly, but certainly well enough to be profoundly useful.
Evan: Yes, there are multiple reasons. But one big reason is that the output is testable. When you have a program, you can test whether it works... But if you're doing something like brainstorming, what does it mean to come up with the right idea?
Le Code a ChangΓ©,
Le capitalisme est mort ! Vive le techno-fΓ©odalisme !
An exploration of how different economic models produce different software systems.
Career Development & Management
Fournier,
The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
How to manage an intern, a project, a team, a department, and more.
Fowler,
The Passionate Programmer: Creating a Remarkable Career in Software Development
How to approach your programming career with intent
Architecture & Complexity
Harford, Cautionary Tales Ep 3 - LaLa Land: Galileoβs Warning
Martin, System Design Primer
Mosely & Marks,
Out of the Tar Pit
An academic paper that categorizes accidental and essential complexity and catalogs some of the dangers
of allowing systems to grow too complex.
Perrow,
Normal Accidents: Living with High-Risk Technologies
Complex systems fail. Sometimes, the failures are related to the very safety measures we add to reduce
the likelihood of failure.
Performance & Scalability
Friedman, Front-End Performance Checklist 2019
Grigorik,
High-Performance Browser Networking
A deep-dive on all the things that happen when a user makes a request for a web page and techniques
you can do to improve performance.
Winand,
Use the Index, Luke
An extremely thorough resource on how SQL indices work and how to use them effectively.
Project Management & Situational Awareness
Cowling,
Stepping Stones not Milestones
Structure projects to deliver value early and offer management opportunities to reevaluate and change
course.
Parekh,
Inside Product: Introduction to Feature Priority Using ICE
AARRR metrics and how to prioritize projects to optimize them.
Taylor,
Designing and evaluating metrics
The criteria to use to select metrics
Design, UX, & Accessibility
Barry,
Designing Web Applications
The first web design book I recommend.
Pickering, Inclusive Design Patterns
Pamental, Responsive Typography
Languages, Frameworks, & Tools
Ball,
Deliberate Git
How to use git to communicate with your teammates and your future self.
Coyier, Practical SVG
Exercism.io
Practice exercises that you can do in whatever language you want.
Grimm, Graceful Dev
Klabnik & Nichols, The βBookβ Rust Programming Language
Metz,
Practical Object-Oriented Design in Ruby
Teaches rules like βless stable things should depend on more stable thingsβ that you can use when
deciding how to factor your code.
Riedmann,
Learn git concepts, not commands
What branches, merges, cherry-picking, and rebasing do
Scrimba
Free and paid online interactive courses on JS, CSS, HTML, and more
Takenobu, Web Assembly Illustrated
Tjhoa, Rust-Learning