-
Can we really eliminate code reviews?
-
A few tenets I keep in mind while building agent harnesses that ride the model improvement curve.
-
Five mechanisms to bridge the gap from prototype to production for agentic applications.
-
When LLM-based agents overlap in scope, vending full-blown agents creates more problems than it solves.
-
Building with LLMs means running experiments, not guaranteeing outcomes.
-
Promotion beyond senior isn't about wisdom alone, focus on strategic work visibility.
-
Throttle at the entry to preserve useful work.
-
1 > 2 > 0. But man that 2 > 0 is painful.
-
Dedicate at least one engineer to paper cuts and small features. They ship quickly, boost customer satisfaction, and give engineers a fast path to earn trust.
-
Change minds in design reviews by restating their position, finding common ground, and asking genuine questions.
-
That message that bothered me for two days? I should have assumed good intent, responded privately, and suggested better wording instead of defending publicly.
-
Code that works but confuses you is worth refactoring.
-
Client-side platform tools let you start with simplicity and drop down to lower-level abstractions when you need more power.
-
We removed a huge dependency by duplicating 240 lines of code.
-
Good abstractions hide what's undesirable and expose what's powerful.
-
An example of George Pólya's problem solving method applied to a software project.
-
Lessons from junior to senior at Amazon.
-
Own your data types. Packages that expose external structs can't evolve without breaking changes, but owning your abstractions gives you room to grow.
-
Learning about the internals of gopkg.in/yaml.v3
-
★
Technical debt
Apr 11, 2020
Tech debt is principal plus interest: the cost to fix it, and how much it slows you down until you do.
-
When deadlines force quick decisions, trust your most experienced teammate's judgment.
-
Best practices around Go interfaces but examining the standard library.
-
Believe you can do great work, work on important problems, maintain excellence, and study your successes as carefully as your failures.
-
Wrap errors at public function boundaries, not at every internal call. Your error messages will be more concise without losing the information users actually need.
-
Use custom types to encode units of measurement at compile time, making code more concise while preserving clarity.
-
Convert standalone functions into methods on types to improve extensibility and allow interfaces to define expected behavior.
-
A catalog of refactoring techniques specifically for Go that leverage its unique features like interfaces and type system.
-
Code reviews from less experienced engineers help you improve code clarity by exposing what's not obvious to readers unfamiliar with the codebase.
-
A questionnaire for evaluating teams based on growth, training, openness, pace, people, autonomy, and mastery to make an informed team choice.
-
Becoming a domain expert is as valuable as mastering technical skills, and often leads to naturally challenging technical problems.
-
A pattern for maintaining record history in DynamoDB using two tables, one for current data and one for all versions.