Interesting, my impression was that ChatGPT helps experienced SWEs by filling out large amounts of boilerplate-ish code. It sounds like that's not your experience, though?
I would say with someone new to coding it can be bad and good, as a lot of times it glosses over things, or can be slightly incorrect as it makes assumptions (or more so just answers in a more general context, and when asked to elaborate, or challenged on specifics it will reformat/improve it's answer, but without knowing you need to do so, I could see it easily see it providing half-baked foundational knowledge. You can ask it "x" and it will give a answer, but then if you ask it I am trying to do "y" with "x" and isn't "z" an issue or area of concern with its answer it will reformulate the information provided as its original response was flawed, but if you don't know exactly what the "y" you want to do is, or the "z" being foundational knowledge to challenge it on, you can easily get a whole wall of text that is out of context with what you are actually trying to learn.
This is my hang up with LLMs … I don’t trust them.
Frankly it seems just as easy if not easier to just google keywords and read sites.
Google vs LLM is like asking random people on the internet (some are brilliant, some don’t know anything, some are nuts, … etc.) vs asking random people on the internet but all of them have a history of suffering from hallucinations and are routine liars with a compulsive need to sound confident in what they are saying even when they know nothing.
Sounds like a description of narcissistic personality disorder or schizoaffective. Of course proto ai would have a personality disorder, go figure.
In the future, the job of an ai psychologist will be to certify the personality of ai products. Gotta make sure you’re not shipping a shrink wrapped psychopath.
At the same time, I see my 9 year old girl using ChatGPT to create Minecraft extensions; she has no prerequisites for actually developing software, but she manages to make some small extensions and have them work either way.
Acknowledging that she doesn't actually learn much from this, I think one can assume that everything in between (e.g. using ChatGPT for pair learning) is definitely also possible.
But whatever AI is outputting, there's no way these qualified guesses can beat experience from a professional developer. I know that the output will never be better than the prompt, but sometimes the output - no matter how much effort you put into the prompt - is visibly just a qualified guess.
But the more exeperienced you are, more valuable your output is (in most cases). So the 10% of your productivity could be more valuable than a novice's 50%.
It might change eventually as ide integrations improve, but for now it's a novelty for me.
A good craftsman crafts his own tools.
I call bullshit. Your task is to deliver a project that does what it's supposed to, all in a timely fashion. You do whatever it takes, including getting rid of old code and rewriting stuff if it makes you more productive overall.
Writing code that does what you want is much faster than taking someone else's code and twist it to do something it was not written to do. You should always be very careful about what dependencies you use, as most often you will have to deal with their limitations and bugs, and they could kill your project.
If you had 20 separate people who contributed to the same thing and left then you most likely have huge code debt. Managing that sort of thing is a daily task for any software engineer. Apparently your strategy is to just add debt onto the pile and put your head in the sand pretending it's not your problem. Instead you should plan tactical refactoring moves to make the codebase leaner and better able to adapt to the business needs, all without breaking any existing functionality and workflows.
You're asking "when". That's the wrong question. It's up to you to manage your time and invest it into tasks that help you save time later on. A software engineer is usually not paid by the hour either, so you just do the work until you're satisfied with the effort you've put in.
He does not make his own tools. He buys them, because there are already extremely talented tool-makers who are very good at their craft.
He also makes paddles, which are still expensive (I think the cheapest starts at about $1000), but some people actually use those.
Certainly a lot of youtube woodworkers do that, can't say I work wood myself.
But saws, blades, chisels… maybe he could make them, but why? Metalworking is its own subject of mastery.
AFAIK, he doesn’t often modify any tools of that sort. He spends time selecting the one he wants, yes.
Imagine, a vision of the future... A thousand million chatbots, all outputting 2018 JavaScript
I would like an AI to tell me if I’m reinventing the wheel or if something similar can be abstracted. Whether what I’m doing aligns with existing patterns in the codebase. How the application as a whole could be refactored to improve maintainability, performance, or both.
This can all already be done by a human with experience and context, so it must be possible with AI. This will be the biggest game changer for me.
Maybe it's good for some languages, or for code that's doing the exact stuff a hundred people have already written. Copilot X certainly looks cool, but who knows when that'll be ready.
I find it especially helpful with SQL queries, and with boilerplate type code. It’s also very helpful when I’d need to lookup the usage of various methods. I just start with the comments and most of the time it saves me the context switch to the browser to lookup the usage.
Not to mention...things like "cool want to learn python"..."wait - wtf..how do i setup a venv in python!!"
Of course you then have to compare this explanation against all others and see if it fits or if it’s not a valid explanation.
It’s also great for exploring topics which have polluted namespaces on search engines.
Overall though I think the majour benefit of ChatGPT is it just teaches people to clearly define problems as natural language questions. Developing this ability helps the subconscious mind solve problems when the user is away from screens.
One of the types of teaching video that I've found very helpful is where an expert, usually a professor explaining a concept (e.g zero knowledge proof) to five different audiences starting from school kids up to fellow researchers or professors. You can basically ask many different targeted levels of questions to ChatGPT for example, explain the concept as I am five years old, etc.
Yeah we've had them for a while, it was called the rubber duck, ;)
That's because it is easier. Multiple choice is easier than open questions.
It's also a good way to not really grasp anything deeply.
When we teach math to children we don’t start with algebraic structures and proofs. We give them simple recipes.
Later we show them problems that the recipes can’t solve and dig deeper. „By the way, the thing we did last year, it actually works like this…“
This is not mathematics, but arithmetic/calculating. When one starts teaching not-children-anymore mathematics (typically at the university), one indeed starts with something of the kind of algebraic structures and proofs.
It may very well be a trivial and uninteresting part of mathematics compared to the rest, but it’s still mathematics nonetheless.
She will certainly learn the deeper concepts in university, but catching up with coding quickly, even in a shallow manner, is super beneficial. I think it's a huge plus.
Well it’s right, but you can turn a student from one who doesn’t want to learn into one who does.
You can absolutely motivate unwilling or uncooperative students to learn. I have done it many times.
It has greatly accelerated the process of building prototypes in multiple languages and building various permutations of solutions.
Doing that has allowed me to study various problems both from the bottom up and the top down. I think that has been useful for understanding concepts.
I could have done the same things without AI, but it would have taken a lot longer.
I still think it’s better to learn without too much tooling of any kind, but that’s a topic for another day.
Depends. In my high school, math was tought not by telling us the proofs, but by asking us to provide them.
You teach programming by giving simple assignments, not by handing out “calculators”.
Having recently done a screenshare with a fresh CS grad as they developed a simple program and seen how much Copilot was doing for them, I was both impressed and appalled. Yes, it's able to do a ton of that simple stuff, but this new grad has no idea _why_ it's doing what it's doing. They are more concerned with getting it done quickly due to not working on the problem early enough (that's a whole other issue).
It genuinely concerns me for the next generation of CS grads and how well they are going to understand the systems they are building. They are already coming out of school unprepared for the professional development world, this is just going to highly exacerbate the problems.
This fresh grad happens to already be working for us and I was mentoring him.
Yes and no. It doesn't help me that much with technologies that I'm senior within, but it has allowed me to work with a wider tech-stack. For example, I can now confidently write any SQL querys I want (so far anyway) although my prior knowledge in SQL isn't that deep.
I'm having a harder and harder time justifying writing a lot of code myself when faster tools are right at my fingertips
Would love to hear how other SWE's who are using GPT feel about this
It's much slower at producing good code than I am but it's much faster for me to write a prompt than a program, so ultimately it allows me to do two things at once because 'prompt time' is so short I can fit it in between other things.
I don't think of programming as a grind unless I'm working in a shitty codebase, which does happen, certainly.
It is simply far, far easier for a newbie to see a computer generate 1 / 3 / 5 slightly-different attempts to solve a specific problem they have, and then to pattern match sufficiently to be able to solve the problem themselves, than it is to muddle around by yourself with it for hours and hours with no end in sight.
I thought she would have to ask me, someone who has been slinging Python in some form since 2008, a question at least once a week. In reality it's been about 3 times over the last 9 months.
ChatGPT doesn't do much for experienced SWEs, but it demolishes the difficulty curve for newbies. I wish I had this when I was learning.