487 karma · joined June 9, 2014
Lots of people in tech like their jobs; they just like other things too. Personally I don’t know why I would want to stop working completely. It sounds boring. I love to build. Why ever stop?
Assembly as a game, I loved playing it.
In Europe it’s different.
Deep, accurate, real-time code review could be of huge assistance in improving quality of both human- and AI-generated code. But all the hype is focused on LLMs spewing out more and more code.
a) More money
b) Video game technology
To truly get this problem, you really need to be in it. Either as a pilot or as a controller.
Watching threads like this reminds me that I have expertise within a couple of specialized domains and that’s it. Beyond those, I’m a tourist.
(I’m not affiliated with it; just curious about strategies for upgrading and maintaining apps that use big frameworks.)
This puts you in the top echelon of developers using AI assisted coding. Most developers don’t have this deep of an understanding and so they don’t get results as good as yours.
So there’s a big question here for AI tool vendors. Is AI assisted coding a power tool for experts, or is it a tool for the “Everyman” developer that’s easy to use?
Usage data shows that the most adopted AI coding tool is still ChatGPT, followed by Copilot (even if you’d think it’s Cursor from reading HN :-))
The objective of my solver was to get good solutions using only RAG (no embeddings) and with minimal cost (low token count).
Three techniques, combined, yielded good results. The first was to take a TDD approach, first generating a test and then requiring the LLM to pass the test (without failing others). It can also trace the test execution to see exactly what code participates in the feature.
The second technique was to separate “planning” from “coding”. The planner is freed from implementation details, and can worry more about figuring out which files to change, following existing code conventions, not duplicating code, etc. In the coding phase, the LLM is working from a predefined plan, and has little freedom to deviate. It just needs to create a working, lint-free implementation.
The third technique was a gentle pressure on the solver to make small changes in a minimum number of files (ideally, one).
AI coding tools today generally don’t incorporate any of this. They don’t favor TDD, they don’t have a bias towards making minimal changes, and they don’t work from a pre-approved design.
Good human developers do these things, and this is a pretty wide gap between adept human coders and AI.
https://docs.anthropic.com/en/docs/build-with-claude/compute...
AI software devs don’t understand requirements well, and they don’t write code that confirms to established architecture practices. They will happily create redundant functions and routes and tables, in order to deliver “working code”.
So AI coding is bunk? No, it’s just that the primary value lies elsewhere than code generation. You can stuff A LOT of context into an LLM and ask it to explain how the system works. You can ask it to create a design that emulates existing patterns. You can feed it a diff of code and ask it to look for common problems and anti-patterns. You can ask it create custom diagrams, documentation and descriptions and it will do so quickly and accurately.
These are all use cases that assist with coding, yet don’t involve actually writing code. They make developers more knowledgeable and they assist with decision making and situational awareness. They reduce tedium and drudgery without turning developers into mindless “clickers of the Tab key”.
Whenever I do a password change, I have to do it on my phone, so that the new one will be stored. But that is fine with me. I’m happy to do that in exchange for being freed from “password managers”.
1) Making non-controversial fixes that save time and take cognitive load off the developer. The best example is when code completion is working well.
2) It’s making you smarter and more knowledgeable by virtue of the suggestions it makes. You may discard them but you still learn something new, and having an assistant brainstorm for you enables a different mode of thinking - idea triage - that can be fun, productive, useful and relaxing. People sometimes want completion to do this also, but it’s not well suited to it beyond teaching new language features by example.
The article makes an interesting assertion that AI tools “fail to scale” when the user has to remember to trigger the feature.
So how can AI usefully suggest design-level and conceptual ideas in a way that doesn’t require a user “trigger”? Within the IDE, I’m not sure. The example given of automated comment resolution is interesting and “automatic”, but not likely to be particularly high level in nature. And it also occurs in the “outer flow” of code review. It’s the “inner flow” that’s the most interesting to me because it’s when the real creativity is happening.
Now we as developers know that coding, and in particular, coding of a de novo feature, is only a fraction of our job. Actual typing in of code is estimated to be between 10 and 60% of the software developer’s job [2].
1] https://github.blog/2022-09-07-research-quantifying-github-c...
2] https://www.microsoft.com/en-us/research/uploads/prod/2019/0...
https://store.flitetest.com/ft-simple-cub-mkr2/
This one’s technically foam, but it’s a very cardboardy foam. With a little bit of carbon fiber reinforcement (provided) it’s surprisingly durable and MUCH simpler and easier to build that a balsa or fiberglass airplane.
After building and flying one of these, I can certainly believe that cardboard/foam construction is great for a “disposable” (single use) airplane or even for a couple of missions - knowing that the life span will be short.