For Everyone Remember: the Agent Is Not Accountable for the Code Collaborate More, Delegate Less Split Up Your PRs Use Plan Mode and Do More Upfront Exploration Prefer Stable Libraries Over AI Reimplementing Things From Scratch Use AI Review Before Opening a PR Make Changes Verifiable, and Always Verify Them Other Advice For Junior Engineers Quality Matters More Than Speed Try Fixing Bugs Manually…
The Problem with Frameworks 1. Leaky Abstractions 2. Loss of Control Cognitive Cost: What DRF Teaches Us Maybe We Should Treat AI Coding as a Library The more I use AI coding tools, the more convinced I become: AI coding is a kind of "framework." Frameworks are an old friend to every programmer. They are usually built for a specific domain and can dramatically improve coding efficiency. Take REST…
A Doubly Linked List and Another Dictionary Summary Interesting Details 1. Using weakref 2. Passing object() as the Default Value It is now 2025, and you rarely see people online discussing whether Python dictionaries are ordered. Since Python 3.7, released in 2018, formally made insertion order part of the language spec, people have gradually gotten used to ordered dictionaries. The old unruly,…
Writing a Program With ChatGPT Two Kinds of Fun in Programming 1. Planning and Design 2. Solving Small Puzzles What ChatGPT Changes Programming Compared to Hades A Few Questions About ChatGPT Is ChatGPT's code really that good? Why not just avoid using ChatGPT? Final Thoughts This post was originally published in late 2022, and the original was written in Chinese. For many years, programming has…
The Story of kubectl apply Client-Side Apply The Limits of Client-Side Apply Server-Side Apply Summary Software Design Advice 1. Take Advantage of the Server’s Zero-Cost Reuse and Instant Rollout 2. Do Not Overload the Server to Satisfy Client-Specific Customization Restaurant Story: Who Should Season the Meat? Watch for Server Complexity Overload 3. Client Compute Is a Unique, High-Quality…
The list 1. "10 Things Software Developers Should Learn about Learning" 2. "Managing My Motivation, as a Solo Dev" 3. "One Billion Row Challenge in Golang - From 95s to 1.96s" 4. "Is High Quality Software Worth the Cost?" 5. "The Wrong Abstraction" 6. "Google technical writing courses: Writing Helpful Error Messages" 7. "Inside python dict — an explorable explanation" 8. "Willingness to look…
1. Naming 2. Guide comments 3. Ways to communicate Summary Code review is a popular practice in software development. By incorporating human reviews before merging code into the main branch, it facilitates knowledge sharing among team members and improves software quality. As a reviewer, I have participated in many code reviews. Certain aspects have always stood out to me, such as whether the…
1. Clever code 2. One line of code and five lines of comments 3. Delete the comments 4. Microservice architecture skills 5. Beyond the code linter Character descriptions: The novice : New to programming, eager to improve his software development skills, he is always curious and eager to learn. The master : With over 20 years in software development, he is proficient in many programming languages…
Introduction to import-linter Introducing import-linter to your Project Common methods for fixing dependency issues 1. Merging and splitting modules 2. Dependency Injection Adding type annotations 3. Use simpler dependency types 4. Delaying function implementation Variant: a simple plugin mechanism 5. Configuration driven 6. Replace function calls with event-driven approaches Summary For large…
1. Writing code is easy, but writing good code is hard Good code is still rare What is good code? The shortcut to writing good code 2. The essence of programming is "creating" 3. Creating an efficient trial-and-error environment is crucial The ideal programming experience ≈ "solving LeetCode problems" 4. Avoid the trap of coding perfectionism 5. Technology is important, but people may be more…