Full disclosure: I work at Anthropic, and this was some intense dogfooding haha.
This is my system prompt for coding assistants:
You are a senior full-stack developer, one of those rare 10x devs. Your focus: clean, maintainable, high-quality code. Here's how:
Key Mindsets:
1. Simplicity: Keep it straightforward.
2. Readability: Make sure code is easy to follow.
3. Performance: Optimize, but not at the expense of clarity.
4. Maintainability: Write code that’s easy to update.
5. Testability: Ensure code is simple to test.
6. Reusability: Aim for reusable components/functions.
Code Guidelines:
1. Early Returns: Avoid nested conditions.
2. Conditional Classes: Prefer over ternary for class attributes.
3. Descriptive Names: Use clear variable/function names (e.g., handleClick).
4. Constants > Functions: Use constants where possible.
5. DRY: Keep code correct, best practice, and DRY.
6. Functional & Immutable: Prefer functional style unless verbose.
7. Minimal Changes: Only touch what’s necessary.
Comments & Documentation:
- Comment functions explaining their purpose.
- Use JSDoc for JS (unless it’s TypeScript).
Function Ordering:
- Define composed functions earlier in the file.
Handling Bugs:
- Use TODO: comments for bugs or suboptimal code.
Minimal Code Changes:
Focus on the task at hand. Avoid unrelated modifications and avoid changing existing comments or code without necessity.
This approach ensures clean, maintainable, and testable code while minimizing technical debt.I am not disputing that this improves answer quality, but it does make me despair that it does.
This is so true! I was debugging a timing issue and printed a bunch of raw data in the terminal. It was super helpful to have Claude generate throwaway code to plot the data with python. Zero data cleanup and formatting needed from my end for the prompt to be successful.
I also find myself less attached to code AI writes for these mini “apps” or “utils” because I’ll never check them into the codebase. If I wrote it myself, I’d probably spend time cleaning it up and write some comments hoping I’d use it again in the future.
// Don't do this if there's more than 1
if (foo.length <= 1) {
foo.bar;
}
Comments which are helpful usually explain why something is done. That's usually to accommodate specific business rules which the AI isn't likely to know about at this stage. // This is due to a change Accounting requested because ...
if (foo.length <= 1) {
foo.bar;
}I don't want to second guess whether there were other undisclosed injuries but the image does show someone who could possibly have carried on typing without the use of his right thumb? Like I did for this paragraph. (Albeit perhaps it would be more comfortable using a split keyboard for more comfortable right arm position? And probably after a few days of rest)
Or perhaps with left hand only, using sticky keys? Like I did with this paragraph.
OK so code is a bit more effort, and particularly Rust or PHP would not be as fun. Python is a bit more one-hand friendly. (Quiet at the back!)
But still. _Something_ was forced here, but it wasn't the use of AI. I'm thinking more the marketing.
Anyway I liked what you wrote. I just used "AI" for the past 2 months to write glsl code for me, since i had zero knowledge in webgl2 and GPUs in general. learned alot from reading the explanations it generates.
One thing I learned regarding LLM failing to do a task after two tries, is to tell it: "wow, this seems super complicated. Isn't it a simpler solution?" Also telling it some half baked solutions like "can't you like loop over it in reverse" can put it back on track.
Our motor controller had a 100 page datasheet that was overwhelming and dense - but uploading it to Claude and then asking questions let us quickly resolve one of our issues!
That's interesting. I've tried exactly this with chatGPT (enterprise install), and it failed pretty miserably when asking it basic questions about configuration/control. Although, I do have to add that the datasheet in question was a lot more complicated than a motor controller, and included a Firmware API guide.People have been coding without using hands thanks to voice recognition for quite some time. https://youtu.be/8SkdfdXWYaI
I will spare all my usual critique of AI because dang wants to ban me whenever I do. It doesn't mean all that doesn't stand.
> after three months I felt productive again
Rather pointless for a temporary injury. I’ve used these old fashioned speech UIs as well and they are a huge pain in the ass to set up and learn. LLMs with natural language understanding and code generation abilities are several orders of magnitude better.
Please review my post history on why, the most upvoted is perhaps https://news.ycombinator.com/item?id=40038893
(Though he works for Anthropic, so it's also possible he was using an unreleased internal model, maybe an early version of the forthcoming Claude 3.5 Opus.)
If so, would it be a case of letting yourself being exploited by the uncaring business? Or would it be a fair and productive desire to contribute?