Software Engineering
88 articles
- Theory of constraints, AI, and code review
- You get what you hire
- Code is the easy part, or how we refactored half the business to fix a janky script
- Good software gets out of the way
- Just fix their PR
- What you need to make an agent
- Quick note on evals and putting AI in your resume
- AI now writes 97% of my code. Here's what I learned
- Watch people work
- Frustration Driven Development
- Taming chaos is a learnable skill
- Users buy your service, not your code
- The 3 curves that make a scalable business
- In praise of the stacked pull request
- How you migrate is everything
- The future of software engineering is SRE
- Make sure it works first
- HTMX – Server Components without React
- Quick tips for distributed event-based systems
- These 3 alerts catch the most issues
- Cursor background agents in Slack changed my workflow
- Software architecture IS Conway's Law
- Common abstraction traps
- DRY – a common source of bad abstractions
- Why websites and webapps are different
- How do you find time for cleanup work
- Say no to abstract code
- re: The Industrialization of IT
- What to work on next?
- Always deploy at peak traffic
- What I mean by "tests can be slop"
- Principles of high output engineering teams
- Depth takes time
- I was wrong about databases
- *Why* the relational data model is so good
- How *do* you break down a large project? INVEST
- Build the abstraction first
- What I learned from Accelerate
- Why you need a task queue
- Atoms, molecules, organisms
- Smart core, thin interfaces
- Empirical evidence for code modularity
- Why even care about code structure
- The anatomy of a React Island
- Finding modules in a big ball of mud
- Why you need observability more than tests
- Big Ball of Mud – the world's most popular software architecture
- Why software only moves forward
- Make mistakes easy to fix
- The Laws of Software Evolution
- Better is good
- How big up-front design fails
- Let small fires burn
- Small change in big scary codebase?
- Why SQL is Forever followup
- Why SQL is Forever
- 90% of performance is data access patterns
- 43 years of the actor model
- From trivial to complex – 4 software quadrants
- Architecture is like a path in the woods
- Keeping a high engineering culture, tips from the field
- The efficacy of TypeScript
- Don't neglect your upgrades
- Avoid spooky action at a distance
- Finding modules in a Big Ball of Mud with ChatGPT
- Followup answers to Forget complicated code, focus on the system
- Forget complicated code, focus on the system
- Different worlds
- You can't stop the business, or why rewrites fail
- When to throw away your code
- What does "solve problems" even mean
- Why taming architectural complexity is paramount
- Two types of complexity and their impact
- You can't fix the wrong abstraction
- DRY vs SoC, a difficult choice
- If it works together, it lives together
- Why others' code is hard to navigate
- Move your business logic into data
- You don't *have to* build it sloppy to go fast
- What makes a great software engineer?
- Writing software is like kicking a can
- The Italian foods theory of bad software design 🍝
- Code Review Practices for Refactoring Changes
- Complex vs. complicated
- What I learned from Software Engineering at Google
- Software Engineering is the 2nd best job
- Are You an Engineer or a Developer?
- Dear tech companies, this is not how you hire engineers