Ask HN: Become a 10x developer with LLM? Myth? Reality?
What stack are they using? I am thinking it's pretty much any LLM (GPT-3/GPT-4), Lang chain with GPT Index.
I am guessing they build boilerplate templates and filling in functions with GPT outputs then using them to write unit tests for base cases?
I am guessing the truth is really closer to the centre.
[+] [-] Someone1234|2 years ago|reply
For example (ChatGPT):
- Prompt:
- Result: Keep in mind if I hand-wrote this I still have to write out the text-values which are 50% of the prompt's length. It did the names/IDs and the boilerplate.[+] [-] bestcoder69|2 years ago|reply
me:
html select list of orderings: fifo, random, rr, lifo
GPT-4:
To create an HTML select list with different orderings, such as FIFO (First In, First Out), Random, RR (Round Robin), and LIFO (Last In, First Out), you can use the following HTML code:
This code creates a simple HTML page with a form containing a select list. The user can choose one of the ordering methods from the list, and the selected value can be submitted with the form.---
OK not exactly the same but just wanted to GPT-golf it. When lazymaxing for real, I just try to keep in mind that ChatGPT is already fine-tuned to include certain things, like following proper conventions, explaining its steps, commenting code. And that most of the time it'll make an educated guess rather than looking at me going "huh?" if it's unsure - so if there's really only 1 reasonable interpretation of terse instructions, I can drop the human-friendly cruft text.
[+] [-] ollien|2 years ago|reply
This is the kind of thing that I really struggle with when trying to do something like this. Often the part that takes me the longest when writing snippets like those _is_ the copy (or at least, collecting my thoughts and/or notes to get the copy into my working memory), the code is quick enough. If I spend that same amount of time (or more) writing the prompt, I don't feel like I've saved much time.
[+] [-] unknown|2 years ago|reply
[deleted]
[+] [-] MuffinFlavored|2 years ago|reply
But it regurgitates Stackoverflow with sub 100% accuracy, and then you need to spend time investigating in what went wrong/trying to fix it
It's for sure spit out an API that doesn't exist to me before
[+] [-] it_citizen|2 years ago|reply
On a sidenote: You shouldn't take anything said in the "all in podcast" more seriously than a political discussion overheard a saturday night in a bar. Be careful with the halo effect.
[+] [-] yawnxyz|2 years ago|reply
It's an amazing TA — better than any I've had in undergrad, and way better than office hours, where your prof don't really care and wants to go back to their research.
I don't have to read through docs for hours and build a mental model — that stuff is taken care of by asking Chat.
Now I'm learning how to deploy my own pytorch model for a real-life use case, by using a combination of SAM and Roboflow. I have absolutely no background in any of these, I just ask it dumb questions until I get it. It's also helping me understand how and when to use hashing and merkle trees for a related project.
For me this is xInfinite because I'm doing stuff I'd been too lazy to learn and understand (e.g. vision).
And I'm at the core a UX / product designer and absolutely not an engineer.
[+] [-] darkteflon|2 years ago|reply
If creating something complex and novel (for you, at least) is to be constantly pushing at the edges of what you know, your ability to progress that work is gated by a constant flow of challenges that are - to you - insurmountable without the right knowledge. Whether it’s an incantation or a mental model or whatever: you need that key to open that gate.
ChatGPT - and I want to confine my claims to GPT4 because I have found it much better than Turbo3.5 in this regard - is a tool that has the potential to take each of those gates, and tell you - converse with you until you understand - what you need to, to progress. That feels incredibly powerful, and I wouldn’t hesitate to call that a 10x improvement for those - very common - scenarios.
As a result, I have found the same thing happening that Simon Willison has been talking about - and that parent also mentioned: you’re in a position to tackle a much wider array of challenges than before. Stuff you would’ve written off as too time-consuming is suddenly a few minutes work.
I dunno, to me, this whole experience is completely magical. Honestly can’t understand how people remain underwhelmed by what’s happening. I always want to say “hey, look over here! This is _amazing_!”
I think we’re still in the stage where people are figuring out how to use a powerful new tool, and there’s quite a bit of “trying to drill holes with a hammer”. For the types of job at which this particular tool excels, until now we’ve largely had to do it by hand.
[+] [-] mk89|2 years ago|reply
It's like reading exclusively the accepted answer on stackoverflow. There are many reasons why that's wrong: it can be outdated, it might have been upvoted simply by the "wrong" people, etc.
I am honestly very scared by the amount of people that never wrote one line of code and suddenly can "deploy" things. Not because I am afraid for my job, but simply because in any language and framework there are implicit things to learn which take years to master, and suddenly everyone knows how to build a product -> why does it take our engineers so long! Look, here is the code!
Yeah, that kind of "mindset", I am afraid of. Wrong tool in the wrong hands.
As long as you do it for hobby, I wish you all the fun of the world.
[+] [-] MrJohz|2 years ago|reply
It sounds like these sorts of tools are making it easier to get started with new ideas, but I'm intrigued to see what long-term maintenance is going to look like.
[+] [-] kaba0|2 years ago|reply
It may be for trivial things (under which I mean that there is basically a verbatim answer on the internet that it had in its training data), but I don’t think it’s a good idea in general — if you talk with it on any topic that you are knowledgeable on, you notice it spews a bunch of nonsense and it is really hard to recognize that otherwise. And I’m not talking about just hard questions, something as basic as Java medior interview questions have sometimes glaring inconsistencies - it sounds techy and detailed, but ultimately wrong.
[+] [-] Peritract|2 years ago|reply
> I don't have to [...] build a mental model
You are not actually learning.
[+] [-] ben_w|2 years ago|reply
My guess (I'm using free ChatGPT rather than v4) is that it's really good at small chunks, but not big.
On this basis, if you're bad at software architecture then it will rapidly get confused and produce a spaghetti monster nobody can even debug; whereas if you're good at architecture, even though you probably didn't feel limited by your typing speed in the first place, it's enough of a boost to make a difference.
[+] [-] TuringNYC|2 years ago|reply
Also, this is tangential, but: when I'm doing PoC application websites, etc it is also helpful to generate images/placeholders/etc easily with image generators (not LLM, but in the realm) so i can stay focused on the backend functionality. I recently created a PoC internal use website in an hour because I didnt have to mess around with finding just the right stock images, etc. Good PoCs, IMHO, should have enough visuals so as not to distract from testing and the goals of the PoC.
[+] [-] fzzzy|2 years ago|reply
Also, Copilot sometimes just does nothing, but there have been many instances now where it literally does exactly what I wanted. It's pretty random.
[+] [-] WheelsAtLarge|2 years ago|reply
I think this is the reality of the current crop of LLMs. It's like having and assistant that you need to constantly check on. If you have lots of experience you can quickly catch the problems and move on but if you don't then it slows you down. My feeling is that in every field that it influences it will make experts more productive by reducing the tedious parts but for novice it will help but they won't have a 10x increase in productivity.
My general AI view is that to get the most of it you better become an expert in your field so you can catch problems with the output fast. Those that don't or can't will have a tough future trying to compete in the job market.
[+] [-] gregjor|2 years ago|reply
Learning programming languages and writing the trivial bits doesn't describe the hard part of programming: domain knowledge and skillfully translating complex business requirements into working code.
[+] [-] a3n|2 years ago|reply
Since LLMs are trained, by their training, and I guess by your prompts (per session at least?), the only participant progressing toward 10X status would be the LLM.
[+] [-] rsd79|2 years ago|reply
Where it shines is up-levelling the developer in areas he is not an expert. Need to jump out of Java development and process some data in Python with a special library? It will likely be more than 10x speed up for you to ask GPT4 for help. Learning a functional language? It will send tons of best practices your way. It’s also great in translating ideas between domains, one example are your requirements to code, but also code to tests, data to SQL etc.
I’m happy with how helpful it is in exploring implementation concepts - you can discuss problems you imagine and it will improve the suggestions. A bit like a brainstom guide for you. And sometimes it will surprise you with a much simpler idea which you’ve been overthinking.
It’s really great when you don’t expect it to be perfect. It fails very often do to unclear commands (limited prompt „memory” is counter intuitively for humans limiting what can be understood - how can it not remember what you can see a bit to the top?). It will always try to do what you ask for, but if you assume it will know what you know you will be disappointed.
[+] [-] ryanSrich|2 years ago|reply
[+] [-] bestcoder69|2 years ago|reply
> What stack are they using? I am thinking it's pretty much any LLM (GPT-3/GPT-4), Lang chain with GPT Index.
I'm skeptical of any 'stack' that isn't just ChatGPT + GPT-4. It's probably whatever their flash in the pan startup is building right now. To me this seems like a horrible time to build up such a stack (personal or otherwise) rather than just getting proficient at ChatGPT and the plain old OpenAI API while waiting for new stuff like plugins to come out.
Personally I just have a go-to tech stack for GPT-based projects, composed of python, poetry, datasette, and click CLI's written by GPT-4 that can call out to OpenAI in order to manipulate databases (to then be viewed in datasette). But this is more for building little demos to try out GPT rather than incorporating into other work. Otherwise I just use ChatGPT alone. But TBH I'm far from 10x.
[+] [-] MattPalmer1086|2 years ago|reply
My old workflow would be to search documentation, blog posts, stack overflow and anything else that might give me a clue. Usually there isn't something that does exactly what I want and the documentation usually leaves a lot to be desired.
New workflow: please write some code using X library in Y language that does Z. Code usually mostly works. If there is anything I don't understand, I ask it to explain. It's like having an expert by my side teaching and writing for me.
Not sure it makes me 10x, but it does let me explore more things and get to an understanding a lot faster. I use some of that time saved to try out more ideas, so overall I'm not sure I'm hugely faster but what I can produce is a lot higher quality with better features.
[+] [-] fbrncci|2 years ago|reply
However my overal efficiency and productivity maybe only went up maybe 2-3x? I don’t know. It’s hard to assess. Writing code is really only part of the job, so it can only do so much. But I am absolutely sure that even now there will be outliers who went from being 1x developers to the mythical 10x, based on the improvements I have seen with myself.
[+] [-] throwawaysleep|2 years ago|reply
[+] [-] kcartlidge|2 years ago|reply
---
- It gave me the complete code for a Go API using JSON, with handler and routing, using a map to hold the data
- I asked it to switch to a website and it gave me the same code, with the route adjusted and the rendering returning HTML to view the books
- I said I needed a SQLite back-end and it updated the code to fetch from a database, including stuff to open the connection
- I asked it to seed the database with some random data and it added a method to do that
- I asked it for a page to add a book and it gave me the full code back with a route, handler, database code, and form handling logic to do add a book
- I said I needed the option to delete any book and it gave me updated HTML with a small form tag and delete button for every book in the item list, with code to delete the right book when a button is clicked
---
I'm not exaggerating when I say that each of the above was literally a single request. I pasted the code returned into a file and ran it and in each case it built and worked.
At only one stage did it get something wrong. I never kept the prompts/code as I was experimenting, but basically it had an off-by-one error in a loop where it did less than or equals to rather than less than. I described the problem (one prompt) and it "worked it out" and gave me the code back with the line fixed.
So that is 6 prompts plus an extra one for the bug, and the result was a working (trivial) site written in Go with a database back-end.
The other main use I've had is pasting in a screen or two's worth of existing Python code. No questions, just the code. It explained what the code did (including a nuance I'd missed) and proactively pointed out a bug I hadn't seen.
It was incredible to see, then it was worrying (am I needed any more?), then reassuring when I realised this was great for getting started with green-field stuff or iterating over small stuff, but less so with big-picture stuff on a large codebase.
[+] [-] dpbriggs|2 years ago|reply
Of course I could have made a similarly poor decision but it's interesting to see that automated to the point of convenience.
[+] [-] amelius|2 years ago|reply
[+] [-] unknown|2 years ago|reply
[deleted]
[+] [-] bt1a|2 years ago|reply
[+] [-] rufus_foreman|2 years ago|reply
[+] [-] sharemywin|2 years ago|reply
[+] [-] kabes|2 years ago|reply
[+] [-] juanre|2 years ago|reply
- I write a system prompt with a succinct description of what I want to implement: "X is an online app that does Y, with these features: ..." I try to be exhaustive, and I write as I would if I were describing what I want to do to a very proficient programmer who needs to understand the problem and the solution. I save this to a prompts/0-system.txt file that will be part of the project.
- I design an architecture and define the general boundary conditions. I may ask ChatGPT for opinions, but at this stage, it's mostly based on experience. I add it to the system prompt.
- I write a description of the first chunk of functionality that I want to implement, usually a set of functions or a class, at the individual file level. For example, prompts/1-dal.txt.
- I (actually ChatGPT) wrote a very simple recursive cat script (https://github.com/juanre/catprompt) that combines several files into a single prompt (a file can include other files, etc). I add a line to prompt/1-dal.txt pointing to the system prompt, and use catprompt to create a combined prompt that will include the overall description and the specifics of the functionality I am after.
- I give this prompt to ChatGPT, and it produces the code. It's typically perfectly fine. I add it to the project, for example, as dal.py, review, and fix whatever may need fixing.
- I ask ChatGPT to create tests in the same session. This also tends to work fine.
- Then I move to the next piece of functionality, in a new session. I write another description, in another file, including the system prompt and usually the code already created.
The prompts remain: they become a description of the code (and of my intentions) for other programmers, and they can help ChatGPT write documentation as well.
I enjoy programming like this. The effort I make in writing concise descriptions helps me think more clearly. I used to love literate programming back in the 90s, and this feels very much like it. Knuth described it thus:
"Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do."
Replace "human beings" with LLMs, and I think that's where we are now.
[+] [-] ParetoOptimal|2 years ago|reply
[+] [-] xk_id|2 years ago|reply
[+] [-] soeptical|2 years ago|reply
[+] [-] WheelsAtLarge|2 years ago|reply