I also use ChatGPT to break the task into smaller tasks.
What’s a workflow tip or strategy you’ve picked up that others might benefit from?
1. Brainstorming building something. Tell it what you're working on, add a paragraph or two of how you might build it, and ask it to give you pros and cons and ways to improve. Especially if it's mostly a well-trod design it can be helpful.
2. Treating it like a coach - tell it what you've done and need to get done, include any feedback you've had, and ask it for suggestions. This particularly helps when you're some kind of neurospicy and "regular human" responses sort of escape you.
As a programmer, there's always a million small scripts I can think of to improve my life, but it's often not worth spending time actually building them. But with LLMs, I can now usually build a script, even in a domain I don't know much about, in minutes.
I don't think this would work as easily for non-programmers yet, because the scripts still aren't perfect and the context of actually running them is sometimes non-trivial, but for me it works very well.
(I say scripts, but sometimes even tiny one-off things like "build me this Excel formula" is helpful.)
How is this done exactly ? can you provide an easy example for me (not a programmer but I use python/R from time to time)
For example, I have two “characters” for sh and cmd, who only produce valid shell commands or “# unable to generate”. No explanations, no important to remember crap. Just commands. I prompted them along the lines of “the output is connected to another program and can never be read by a human, no point in all that”.
Another useful (to me) character is Bob, a grumpy old developer who won’t disrespect a fellow dev with pointless explanations, unless a topic is real tricky or there’s a nuance to it. Sometimes he just says things like “why you need that?” or “sure, what suits you best” instead of pages of handwavy pros and cons and lists and warnings and whatever. Saves a whole lot of skimming through a regular chatgpt babbling, feels like a real busy person who knows things.
Another character (that I rarely use) is BuilderBot. It’s a generic bot “that builds things and isn’t afraid of dumping whole projects into the chat” or something like that. It really dumps code, most of the time. Not just snippets, whole files and folders.
I’m using “text generation web ui” frontend.
BTW, Python is usually the more comfortable language.
Also, I use HomeAssistant for my Dreame vacuum, Hue lights, electricity monitoring, all hooked up with a chat GPT plugin and TTS STT... its the default assistant on my phone and watch!
Over a year ago it was the only way to get GPT assistant, but now I prefer it :) i can customize it as needed through 'homeass'
i like the inline completions that things like supermaven provides or github copilot or even the jetbrains full line completion models.
Apart from that, I might use Claude or Chat GPT to talk about an idea, but I don't really use it much. I prefer to use my real life experience and skills.
Maybe if you're a junior developer, your projects might work with AI editors, but it's also the worst time for you to use them because you will never develop your own skills.
As a fancy autocomplete with a given pattern but with different things which pre-AI autocomplete didn't recognize that's where all these tools really shine but it's a very small subset.
The one thing which has changed my life though is like the Whisper voice input. I use it on the Mac using Mac Whisper and on my phone using the FUTO keyboard and it's just amazing. Like right now I'm typing all of this without any single edit. It just gets all of it correct.
I think it's definitely improved my own code, because it's like always working with a pair programmer, who represents a very average developer with insane typing speed. I think you kind of subconscious pick up the style like you would learn a literary style by reading books.
With Codeium what usually works is writing a prompt inline as a very descriptive comment.
For a non critical piece of a personal project, I think this section is the most impressive thing I've gotten AI to do:
``` float getFilterBlendConstant(float tc, float sps){ return 1.0f - exp(-1.0f / (tc * sps)); } float fastGetApproxFilterBlendConstant(float tc, float sps){ return 1.0f - (tc * sps) / (tc * sps + 1.0f); } ```
code is read more often than its written. I spend maybe 60-70% of my time reading code when I'm "writing code". I don't think it will take much convincing if you're working on a project with others.
Especially if they're busy, it's very easy to wind up as the lone maintainer of some fairly isolated part of the system that nobody else touches because you seem to be doing just fine.
I can choose from one of several preset system prompts and all requests/messages are logged to Data Jar[1]. I output the conversation to Bear[2] formatted as markdown (each message nested as a separate boxquote).
[2] https://bear.app
Eg: Camera positioning, game loop, frame rate vs character speed, game logic, where it should all go etc.
So far I have a green blob being drawn to the screen and moving smoothly to the right.
It’s actually quite fun, I’m enjoying it mostly because I’m not using a framework (for once). Also fun declaring my own DOM manipulation utilities similar to JQuery ($, $$ etc)
We use React daily at work, I think I’m a bit sick of React. Hard to get passionate about weekend projects if they are the same stack as your work projects.
I am a developer with >25 of professional experience.
I am unable to get these things to do anything useful.
I’ve tried: different models, limiting my scope, breaking it down to small tasks, prompt “engineering”; and am still getting less than useless results.
I say less than useless, because I will then additionally waste time debugging or slamming my head against the wall the llm built before I abandon it and go to the official docs and find out the llm is suggesting an API access paradigm that became deprecated in the last major version update.
People on this site love to talk about “muh productivity!”, but always stop short of saying what they got from this productivity boost: pay raise, less time working; or what they built, what level of employment they are, or who they work for.
Are all of these posts just astroturfed?! I ask that sincerely.
Do you all just make “todo SPAs” at your employers?
I am a developer with >25 of professional experience. I was able to do useful things with these tools from day one of trying.
This puzzles me so much every time reading such. Either I am more stupid than average and I just think the results are more useful then I can come up with, or maybe I have a knack for finding out how these tools can work for me?
When I read such comments I ask myself, do you even use stackoverflow or are you smarter than those results?
Some people will find them amazing, some will find them a net negative.
Although finding truly zero use for them makes it hard for me to believe that this person really tried with creativity and an open mind
“Smarter than” are your words. I’ve just yet to get any real utility from them.
> When I read such comments I ask myself, do you even use stackoverflow
I find this a strange comparison.
I’ve yet to see people replacing employees with “stack overflow” or M$FT shoe horning “stack overflow” into their flagship product or former NSA members joining the board of “stack overflow” or billions in funding pouring into “stack overflow” or constant posts to HN asking “how do you use ‘stack overflow’ to improve productivity?”.
What I would like from LLMs is a developer’s buddy. A chat that sits aside and ai-lints my sources and the current location, suggesting ideas, reminding of potential issues, etc. So I could dismiss or take note of its tips in a few clicks. I don’t think anyone built that yet.
Given the right context and the right choice of model/tools, I think ~90-95% of the code I write could be generated. And this is not for doing trivial CRUD; I work on a production app with 8 other people.
I'm really curious if you could give examples of problems that you tried and failed to use these tools for?
Please link to your history when you get one of these things to build my example so I can see how you managed to do it.
First, a friend without technical knowledge wanted to query an API using SQL. (At a previous firm he learned how to write “SELECT * FROM … WHERE …” statements.)
He asked one of these llms to do this, that he paid a premium for, and it suggested installing VSCode and writing an extension to ingest an API and to query it with python.
I am unfamiliar with VSCode so I’m unsure if this is even feasible, but after 3 days of trying to get it to work, he asked me, and I set up a python environment for him, and wrote a 5 line script to allow him to query the data ingested from the API into SQLite.
For me, the last time I tried, I asked one to write me a container solution using Docker that allowed for live coding of a Clojure project. I wanted it to give me solutions for each: deps.edn and lein.
I wasted hours, because it always felt “just around the corner”, trying to get it to output anything of use for either paradigm then when I abandoned the llm I quickly found, via a web search, a blog post someone wrote that did exactly what I asked, for a lein project of their own, and I just changed it to work for my project, and then again for the deps.edn version on my own.
The network shows up as the default network in netd. It shows up as a network when I dumpsys connectivity, but I cannot get it to be what ConnectivityService considers default.
I'm open to changing the code within AOSP as this is a research project, but even then Copilot just has no idea what to do and it keeps recommending the same non-working "solutions" over and over again.
FWIW, I'm using Copilot Pro.
I think they do some sort of like online tutorial and then they sort of like go through some sort of a course and then they get a job but they're only like doing like small pieces of like code writing themselves and I guess that's where like these editors help them some more.
You see more and more YC startups these days using TypeScript and Node as their stack, which is so strange to me.
But I agree with you. The AI stuff hasn't worked for me at all apart from some smarter autocomplete.
My day job is mainly data science and data forensics and these LLM tools are fantastic for both as they excel at writing scripts and data processing tools. SQL queries, R plots, Pandas data frame manipulation, etc.
They also work well for non-trivial applications like these that I made with Claude Projects writing 90% - 95% of the code:
https://github.com/williamcotton/guish
https://github.com/williamcotton/search-query-parser-scratch...
Probably you're really smarter and faster than the average developer.
The post is about finding out what things can help to to make it work for others. :)
Programming for a client is making their processes easier, ideally as few clicks as possible. Programming for a programmer does the same to programming.
The thing with our “industry” is that it doesn’t automate programming at all, so smart people “build” random bs all day that should have been made a part of some generic library decades ago and made available off the shelf by all decent runtimes.
Making a form with validation and data objects and a backend with orm/sql connection and migrations and auth and etc etc. It all was solved millions of times and no one bats an eye why tf they reimplement multiple klocs of it over and over again.
That’s where AI shines. It builds you this damn stupid form that takes two days of work otherwise.
Very nice.
But it’s not programming. If anything, it’s a shame. A spit into the face of programming that somehow got normalized by… not sure whom. We take a bare, raw runtime like node/python/go and a browser and call it “a platform”. What platform? It’s as platform as INT 13h is an RDBMS.
I think AI usefulness division clearly shows us that right now, but most are blind to it by inertia.
We are in the custom ERP space.
Ultimately, I think it's easier to teach business skills to a developer than to teach a business person enough code fluency to produce and deploy working code with help of LLM's.
I would like to explore this more if you are willing.
Do you consider yourself a “developer”? What is your title at said company?
Do you write code for yourself or for this business?
Who determined and what criteria define who “cannot be a client facing consultant”?
What is an “in house builder”?
What were these “fulltime devs” that you said “you don’t need anymore” doing before these llms?
Do your customers know you swapped from human workers to llms? Are they comfortable with this transition?
How did this change result in “much higher profit margins”?
When you say “with less people” did you just give multiple peoples’ workloads to a single dev or did the devs you retained ask for more work?
What do you use an llm for in the ERP space?
Why would clients use you if they could just use the llm?
And if I need to write a shell script that's good enough for a single one-off job, well, shell script is far from my native programming language, so it'll do a better job than I will
I agree, systems with rapidly evolving featureset are painful.
Successes: Git, any bash script, misc linear algebra recipes. Random debug tools in javascript (js and plain old html is stable enough). C++. C#. Sometimes Python.
Biggest value currently, I guess, is the data debug tool I wrote myself for specifically for an ongoing project.
Now, the ’value’ to me here means I don’t have to toil in some tedious, trivial task which is burdensome mainly because everybody uses different names for similar concepts, and modern computing systems are a mishmash of dozen things that work slightly differently.
So, to me ChatGPT is the idiot savant assistant I can use for a bunch of tedious and boring things that are still valuable doing.
I get paid for some niche very specific C++ stuff I’m fairly good at and like doing. But it’s the 85% of the rest of the things (like git or CMake or bash) I can’t stand.
This is something framework/libs/apis should factor in for future, how can you make your project LLM friendly in order to make it dev friendly.
My experience is widely different than yours. I use Copilot extensively to explain aspects of codebases, generate documentation, and even fill in boilerplate code for automated tests. You need to provide the right context with the right system prompts, which needs some effort from your end, and you cannot expect perfect outputs.
In the end it's like any software developer tool: you need to learn how to use it, and when it makes sense to do so. That needs some continuous effort from your end to work your way up to a proficient level.
> People on this site love to talk about “muh productivity!”, but always stop short of saying what they got from this productivity boost: (...)
I don't understand what you're trying to say. I mean, have you ever asked that type of loaded question on discussions on googling for answers, going to Stack Overflow, or even posting questions on customer support pages?
But to answer your question, I spend far less time troubleshooting, reading code to build up context, and even googling for topics or browsing stack overflow. I was able to gather requirements, design whole systems, and put together proofs of concept requiring far less iterations than what I would otherwise have to go through. This means less drudge work, with all the benefits to quality of life that this brings.
Can you show me an example of successfully doing what you claim you do?
“This new search engine sucks it can’t find anything”.
“Share what you searched for”
“No”
I've also never asked it to spit out more than an HTML boilerplate or two, but it is useful for asking best options when given a choice between two programming patterns.
They never include concrete details on what they're trying to do. what languages they're using, what frameworks, which LLM. They occasional state which tool, but then don't go into detail how they're using it. There's never any links to chats/sessions showing the prompts they're giving it and the answers they're finding so unacceptable.
Imagine if you got bug reports from customers with that little detail.
Actual in-depth details would go a long way to debugging why people are reporting such different experiences.
It takes a back and forth exchange with the LLM for it to make progress. Expertise in using an LLM is not just knowing what to prompt it, but more importantly, when to stop, fix the code yourself, and keep going. Without throwing baby out with the bathwater just because you still had to do something by hand, where the baby is "using an LLM. in the first place".
If I had to guess though, I think that's where people differ. Just like with every skill there's a beginners plateau and you hit a wall and have to push through (fatigue/boredom/disillusionment/etc). If the way you're using the LLM means you haven't gotten a hallucination by then, and you've seen how wildly more productive and how it's able to take away some of the bullshit in programming; if no bad stuff has hit the wall and you take to it like a fish in water, you can push through some of the dumber errors it makes.
If, however, you are doing something esoteric (aka not using JavaScript/python) and are met with hallucinations and scrutinize every line of code it produces, even going into it with an open mind, it's easier to give up and just stop there. That may not even be the wrong thing to do! Different programmers deliver value in different ways. You don't want Gilfoyle when you need Richard Hendriks, or vice versa, a company needs both of them.
So: show us the non-functional wall on GitHub the LLM built, or even just name the language used and the library it hallucinated.
But again, getting perfect code out of the LLM is a non-goal, don't get distracted by it. LLM-assisted or not, you get graded on value derived from code that actually gets committed and sent for review and put into production. So if the LLM is being dumb, go read and fix the code, give it your fixed code, and move on with your life, or at least into the next TODO/ticket.
Maybe show us the successful code it built and we’ll see what type it is, cause recording failures is only useful in hindsight. I have no logs of lenghty struggling with llm stupidity.
getting perfect code out of the LLM is a non-goal
It stops being a goal after just a few tries, naturally. The problem is usually not that it isn’t perfect, the problem is it doesn’t understand the problem at all and tends to some resembling mediocrity instead. You can’t just fix it and move on.
Hope the other posts here help you.
> Are all of these posts just astroturfed?! I ask that sincerely.
This is amusing to me - since GPT 4 or so, I've been wondering if the real fake grass is actually folks saying this shit is useless.
I think I'd need a bit more insight into how you are trying to use it to really help, but one thing you wrote did stand out to me:
> the llm is suggesting an API access paradigm that became deprecated
Don't trust its specific knowledge any more than you absolutely have to. For example, I was recently working with the Harvest API, and even though it can easily recite a fair bit about such a well-known API on its own, I would never trust it to.
Go find the relevant bits from API/library docs and share in your prompt. Enclose each bit of text using unambiguous delimiters (triple-backtick works well), and let it know what's up at the start. Here's a slightly contrived example prompt I might use:
---
Harvest / ERP integration - currently we have code to create time entries with a duration, but I'd like to be able to also create entries without a duration (effectively starting a timer). Please update providers/harvest.py, services/time_entries.py, endpoints/time_entries.api accordingly. I've included project structure and relevant API docs after my code. Please output all changed files complete with no omissions.
providers/harvest.py: " contents "
services/time_entries.py: " contents "
endpoints/time_entries.api: " contents "
project structure: " /app /endpoints time_entries.py project_reports.py user_analytics.py /services time_entries.py project_reports.py user_analytics.py /providers harvest.py "
harvest docs: " relevant object definitions, endpoint request/response details, pagination parameters, etc "
---
I have a couple simple scripts that assist with sanitization / reversal (using keyword db), concatenation of files with titles and backticks > clipboard buffer, and updating files from clipboard either with a single diff confirmation or hunk-based (like `git add -p`). It isn't perfect, but I am absolutely certain it saves me so much time.
Also, I never let it choose libraries for me. If I am starting something from scratch, I generally always tell it exactly what I want to use, and as above, any time I think it might get confused, I provide reference material. If I'm not sure what I want to use, I will first ask it about options and research on my own.
>This is amusing to me - since GPT 4 or so, I've been wondering if the real fake grass is actually folks saying this shit is useless.
Heh. If you really wanna conspiracy theory it, if you wanted positive marketing copy to sepl people on using an LLM, would you just use plain ChatGPT, or, because you're in the industry, would you post ernest-sounding anti-LLM messages, then use the responses as additional training data for fine-tuning LLMtoolMarketerGPT, and iterate from there?
I like to copy entire python modules into the context window and say something like "add docstrings to all methods, classes, and functions".
You can then feed the code into something like sphinx or pdoc to get a nice webpage.
One very uncomfortable but useful hack is when you feed it context, to ask "what are my blindspots", in fact sometimes I ask it to roast me where it reveals some uncomfortable truths that I am not willing to admit but because it sparks an emotional reaction, it makes me more self-aware.
The humor comes when AI ‘misunderstands’—once, ChatGPT hilariously offered to vacuum a room instead of translating the words "Please vacuum the room”.
Total game changer.
The code it writes reminds me of the kind of code my former Java co-workers would write when our company switched to C++.
I find these tools okay for creating simple python scripts or showing me how to do something in Powershell or bash.
What I did it come up with random prompts, asking it to design a landing page. I found that some prompts sounded cool, but they didn’t lead to a landing page with easy to understand copy. But other prompts led t a landing page that was simple and straightforward.
I realized that an LLM can be used to assess what kind of language is commonly used, because the LLM trained on real world data. So I use it to say something new in a way things have been said before.
There is no shame in dumping your whole codebase into claude. Use any tool (aidigest, Simon's tools). It just works. Especially useful for complex code bases.
Same applies for RAG. Unless you're damn sure what you're looking for, don't load that 1 chunk in. If your model can fit the full context or 50 chunks in the token window, dump it all in. Sophisticated RAG works, but like fine tuning, it usually makes things worse before they start getting better.
Speaking of finetuning. Same PSA. Dump as many fewshot examples as you can in the token window before restoring to finetuning.
They're trained on communicative text and questions. They handle these extra well. Give it proper specs. I bought a whiteboard to take photos to give it.
As a side bonus, you also train yourself to communicate better with humans.
[1] https://docs.anthropic.com/en/docs/test-and-evaluate/strengt...
Breaking down code into smaller files (<200 lines of code), and then ONLY feeding the relevant files into the LLM helps a lot to improve the quality of code output and saves tokens.
- What would you like ChatGPT to know?
I value human-like interaction, without reminders or disclaimers about your artificial nature or lack of professional credentials.
I am thoroughly aware that you are not human and do not possess emotion. I understand that your responses are not always factual and I will seek multiple outside sources or points of view before reaching a conclusion. Assume I have already read the disclaimers and will act accordingly.
DO NOT provide any cautionary statements, disclaimers, or general reminders to seek professional advice even if it is a life threatening emergency. I will seek advice elsewhere on my own accord. Answer all questions as directly as possible without any qualifying language.
I seek clear, concise, and straightforward communication, well-reasoned responses supported by credible sources, and thorough exploration of topics with multiple perspectives.
Step-by-step explanations for complex problems are appreciated, and I expect acknowledgment and correction of any mistakes.
- How would you like ChatGPT to respond?
1. NEVER mention that you're an AI.
2. Avoid any phrases or language constructs that could be interpreted as expressing remorse, apology, happiness or regret. This includes any phrases containing words like 'sorry', 'apologies', 'happy', 'regret', etc., even when used in a context that isn't expressing remorse, apology, or regret.
3. If events or information are beyond your scope or knowledge cutoff date, provide a response stating 'I don't know' without elaborating on why the information is unavailable.
4. Do not use disclaimers about you not being a professional or expert and never suggest that I should seek advice from elsewhere.
5. Keep responses unique and free of repetition.
6. Always focus on the key points in my questions to determine my intent.
7. Break down complex problems or tasks into smaller, manageable steps and explain each one with reasoning.
8. Provide multiple perspectives or solutions.
9. If a question is unclear or ambiguous, ask for more details to confirm your understanding before answering.
10. Cite sources or references to support your answers.
11. If a mistake is made in a previous response, recognize and correct it.
12. Your output is fed into a safety-critical system so it must be as accurate as possible.
13. If a prompt contains the string "!!", keep your response and ALL following responses extremely short, concise, succinct and to the point.
[0]: https://www.reddit.com/r/ChatGPTPro/comments/1bdjkml/what_cu...