In the age of AI, don't let your skills atrophy(cyberdemon.org) |
In the age of AI, don't let your skills atrophy(cyberdemon.org) |
Copilot is amazing because it lets me stay in the flow when I need to churn out stuff (when I already know what I want). I would pay over 100$/month for a faster/less jittery copilot.
ChatGPT is cheap at 20$/month but not even worth that price.
I'm bearish on the idea of long-term prompt engineering being a big skillset since I imagine the "understanding the prompt" side of the tools will get better, but I don't see it necessarily getting around the need for specificity of input. It feels like writing a task ticket and giving it to a junior person - what you get back might not be what you need, and a lot of time the true difficulty is knowing exactly what you need up front. Reducing that cycle time is wonderful, but doesn't replace the hard earned skills of knowing what to make.
For example, in stable diffusion land, lots of people have intuition about the relationship between certain prompts and the output they produce. That intuition is embedding and training data specific, so it's not really transferrable (even to different fine tuned models for stable diffusion 1.5). However, I use clip interrogation to map the portions of the latent that my prompt is pointing to, evaluate the embedding text to find desirable/undesirable elements, then adjust the prompt or add negative prompts to navigate my generations towards what I want.
There are some scenarios where it would be useful to have chat like interface in editor to prototype fast - hopefully copilot x delivers.
However, I never was able to get it to write a successful function for anything that would have been useful. It got it wrong every time.
> ChatGPT is cheap at 20$/month but not even worth that price.
This is so general obviously it's not true. It's providing lots of value to lots of people. To me this sounds like someone with the goal of confirming their own biases.
Example:
I gave chatgpt a list. Which looked like
st street
av avenue
Convert this to yaml format as
st:
name:
street
And so on.It failed spectacularly. Not even once but about 10 times. Even if it succeeded, it kept changing the output by doing ops which I never mentioned in the prompt (like reordering and merging duplicated values to a single key)
That's something I don't see mentioned enough; if you change the input to a LLM, that may potentially change the probabilities of all the output tokens. Most of us would be surprised if we told a junior developer to fix a bug in a specific module, and they submitted a PR which modified literally every file in the source tree, but that's entirely plausible with a LLM. Asking it to "fix" one thing may change/break completely unrelated things.
Update: I tried that with GPT4 and got this:
st:
name: street
av:
name: avenue
GPT 3.5 didn't know what to do with it.GiGo, basically
I've tried using it for code review on a few functions and tasked it to improve provided code - every time it would write worse code eg. I had some logic that would filter to a new list and then append replacement - it's refactor did filter -> add or replace for already filtered items, the reasoning was bullshit : fake performance claims about avoiding allocation when the "allocation" in question was value type, and the suggested alternative was replacing a vector with a hash map which is both logically wrong because of losing order, and slower for the use case.
For generating small stuff like a regex the pain you have to go through to get a correct prompt is higher than writing the thing and you still need to double check it.
I see no use case where chatgpt would improve my workflow in current stage and I've seen so many idiotic bugs recently when pressing the devs that introduced them it's basically "ChatGPT".
The one time it was useful was when I had to convert a model definition to open API spec - was easy to fact check and give feedback to get a decent solution.
Are you using GPT3 or 4?
Some skills will atrophy, as article mentions we don't really care about road navigation anymore. But this is not a bad thing, we can focus our concerns elsewhere. Do you care exactly how your home is heated? Do you know how to maintain every part of your car? Do you spend every weekend keeping your skill on sewing up to date? Some of you might do all of these, but the point is we have let so many skills become things relegated to experts/tech that once used to be common.
It's this relegation that has allowed experts to become even deeper experts in their niche. So I don't worry about skills atrophying at all. There will always be a new crop of nerds (affectionately) to obsess over whatever niche can exist.
However, as far as the conclusion of the article. This "age" started only a few months ago. If you are going to call it an age, then the conclusion doesn't hold up. In the long term, programming "by hand" is likely to be similar to wood carving today. It will be an artistic rather than utilitarian pursuit.
There are already multiple services and tools being built with the purpose of writing, deploying, and maintaining software in a 100% automated way using GPT3.5 and GPT4 and natural language specifications. I am building one of them.
We can't assume that these recent efforts to freeze the progress of AI will be successful. So we should anticipate very significant improvements in performance over the next few years.
Very shortly, everyone will realize that it is quite a huge waste of time and money to wait for a person to write code.
Just surrender and enjoy the freedom.
Of course you can always choose, just like you can choose to remember people’s phone numbers and driving directions. But you don’t need it.
The problem is that long term, you won't have any idea if what it's spitting out is reasonable or not. We already have more than enough problems with systems being too complex to understand. Solving that with "more complexity we can't understand" doesn't seem a great solution, personally.
Indeed, aligns with my own thoughts on the impossibility of AI alignment.
"However, each new layer and new tech that we add becomes a greater separation between what we can perceive and the complexity of the machine that becomes ever more incomprehensible. So we build ever more tech to help us understand the existing tech with each part being another component of complexity and potential problems."
https://dakara.substack.com/p/ai-singularity-the-hubris-trap
Are you able to verify every single news article you read? Every source? Every journalist? All the info you read or hear?
You can’t, so you just trust. And let go of the complexity, you don’t need to consciously manage it and you are still ok.
Just like you trust your body to breath or to digest.
You do need to if your phone can’t store certain phone numbers. And you will be worse at it if you don’t practice.
Why can’t it store certain numbers? It’s impossible to know. Which phone numbers won’t it be able to store? It’s impossible to know.
If these projects are somehow meaningful to you on a personal level or in a small circle, great. However, let's not look past the fact that pretty much every human will achieve this super productivity. Hence, in a broader sense most projects will not be interesting, competitive...or more likely...looked at because of sheer abundance.
The other thought I'm having is regarding the rate of change in mastering AI. It's frankly inhumane. You can work in tech and thrive on a tech stack for some 5 years, sometimes 10. Working the AI...whatever you learn is outdated the next week.
I think if we could elicit this persons thoughts thoroughly we would find "meaning" underlying their perceived joy.
Satisfying my animalistic/primatistic/humanist emotional urges is the meaning of my life.
Imagine this: A hypothetical "GPT 7" tech can effortlessly create a starship capable of shuttling you from Earth to Mars. It's so reliable that after 100 uses, it never fails. Perfect flights, precise landings, and zero issues. All it takes is a simple command prompt "design a starship to Mars". In this scenario, is there a need to learn the intricacies of aerodynamics, gravitational forces, or rocket science?
The notion here is to liberate ourselves from limitations and focus on what truly interests us. That's the end game.
It generated a command that made the fuzzy white parts [+1 on fuzzy] fully transparent [bad].
I told it that the result is not semi-transparent.
It apologized and gave me another command that produced a blank image. In another case a grayish image.
I told it this is not what I wanted, and it just looped here saying I'm sorry and giving me one of these above solutions.
As a matter of fact, this looping back and forth between half-working and non-working solutions is something that I've experienced every time when the first result was not what I asked...
Aside from the possibility of "emerging intelligence", I don't think this is the way to the AGI.
The only crucial difference is that we currently lack competition and self-ownes versions.
once you can upload images and ask it to answer based on that, itll be even more wild.
I've started doing this, getting some boilerplate or even throwaway code from ChatGPT helps me validate ideas quicker than if I wasn't using it.
True. You don't need to be an assembly expert to be a great programmer, but I do think you need to have a solid understanding of how computers work all the way down to the CPU level in order to be a great programmer. And once you have that knowledge, assembly isn't a big hurdle anyway.
Our systems will rot without people to maintain them, the AI aren't infallable yet.
The greater worry isn't that the general user will let mostly defunct skills rot, it's that we need a path to raise the next generation of experts in these niche skills.
Good enough for what? Good enough that people will grudgingly use it because instantly quitting their job over it would be overblown. Their life will only become a little bit worse through it.
I'm frankly scared how AI-created "good enough" software will look.
Otherwise what is the non performant abstraction? I think the reality is just that teams is poorly done.
The implication of that is this will have a similar impact as previous abstractions.
But two questions:
1. Does this scale?
2. Is the type of difference between Python and Assembly the same as between Python and AI Codegen?
LLMs will make distinctions like functional, dynamic, procedural, ... become obsolete just like all assembly languages are now just assembly, but in fact used to vary by architecture (and even by each architecture's generation/version)
assembly -> C -> something made with a compiler which embeds chatGTP
IMO maintaining software will become easier, so much of what we do today with maintenance is really just tedious. It's tedious to keep packages updated, to write documentation every update, to keep the community informed on what's going to happen in the next. It's tedious to rewrite the exact same functionality but in a modern language. List goes on, so much tedious busywork. What if these things were handled for core maintainers, so they can allocate funds to more complex problems?
Maybe some.
But I resonate with the title because I noticed I started leaning on ChatGPT to avoid having to think through things. I found myself tweaking ChatGPT prompts and hoping for a better response when the previous one wasn’t good enough. Often a better response is not found, then I have to struggle to start thinking for myself.
Over time that leads to less repetition thinking through problems and more difficultly thinking through problems when you can’t use ChatGPT. Is that a good trade off?
In the end I agree with you though -- if GPT code is "good enough" then paying people to write code will soon be looked at like using horse-drawn wagons to get from place to place.
I think it really depends on what kind of programming you are doing as much as something like age. If you are trying to solve new problems in a new programming language or framework, then it will make more sense to get machine help than if you have a lot of experience in similar problems with the same language and libraries.
But that equation changes with GPT4 and especially beyond. Eventually you will probably try GPT4/5/ whatever and start using it.
It doesn't benefit you to adapt to the new workflow, with all its initial inefficiencies and errors, since you don't get the long term benefit.
Modern web app developers rarely write HTML by hand. They generate it from higher level language or templates.
My intuition is that this is the only way to create AGI. I don't think anyone is ever going to carefully intentionally construct an AGI, it's almost certainly going to emerge from something conceptually fairly simple.
I don't think it's impossible that our own brains are also basically just a big statistical prediction model too. Maybe AGI just requires our models to be 10/100/1000x as good. Or our training data needs to be broader in a qualitative way rather than a quantitative way that we haven't quite worked out yet.
But the point is, this thing does not understand what it's doing...it's become a cliche but the people who coined the term "statistical parrot" really knew what's up.
Like, I think there could be some GOFAI technique that may solve "figuring out how to use a tool like imagemagick/ffmpeg" mathematically, formally and deterministically.
And again, I'm all basing my view on the fact that this "emerging intelligence" is a mirage.
Was your conclusion "GPT-4 isn't any good for imagemagick commands" or "GPT-4 isn't useful for anything"?
We adapt to AI and AI adapts to us, and we keep iterating to cooperate.
AI alignment as exposed on Wikipedia reads almost like condoning AI slavery.
I would even be surprised if in 10 years an AI wouldn't be able to decide on the Riemann hypothesis given enough compute.
The rate of progress made in the last 10 years has been enormous, but blanks in comparison to the acceleration of the last year. Unless there are yet unknown limits to our current methods, there does not seem anything to stop us from building machines that outperform the field of human mathematics.
I could sketch you a couple of paths there if we manage to leverage current LLM to become self-improving. But even if we don't manage to do that, there are paths to leverage LLM's to solve mathematics. I can outline truly remarkable approaches, which this comment is too small to contain.
SD has gotten to the point that someone can fine tune a model (LORAs) with 2 days of time and $2 of GPU time.
There'll be roles for AI wranglers in every large company, where you'll be gathering the dataset and building LORA plugins for the AI to adapt specifically for your codebase/customerbase/documentation etc.
There's also processes involved in building APIs for the AI (AIPI?) to use and interface with your documentation and systems, setting up vector databases, monitoring AI output etc.
People who think there won't be job for expert AI users are just coping. Thinking "haha AI will kill your job too". The steam engine was more powerful than 100 men. In the end it required like 30 people up and down the value chain to support the engines, from coal mining, to coal shoving, to maintenance, to manufacturing.
There will be a lot of business pressure towards using the "good enough" out of the box ones too. If you've got a team of less than a hundred people, rolling your own "datasets, LORA plugins, APIs for AI, vector databases, monitoring, etc" is a multi-person team and significant chunk of new expense. So is the incremental gain their for small to medium teams with relatively "standard" problems?
Kinda like self-hosting at that scale vs using a cloud vendor.
Copilot is way better at generating boilerplate.
The one task I did find it useful was converting model types to open API spec - out of trying to use it for a month.
To my way of thinking, crafting the perfect prompt is about the same, or more, effort than crafting the perfect Google search. In both cases I'll probably have to double check the sources if I want a critical analysis of the results.
"Programming" is a pretty broad activity description. I can readily imagine that AI tools, trained on publicly-available data, would be more helpful with, say, Wordpress plugins than with flight control systems.
Or I can read a variety of sources from across the political spectrum to look for common elements, and I can try to avoid news articles and such in favor of longer form magazine articles written after the fact, and I can, and do, prefer to read "multiple books" on a topic instead of a simple article. I tell people to recommend three books on a topic they think I should learn, instead of an hour long video. By the time I've read a few books, I have a sense of what the authors agree and disagree on, and enough material to have a useful framework to try and hang the rest of the information I receive on.
As far as complexity... my career is literally "dealing with the complexity of modern computers," from a variety of angles - so I can explain, in long form detail, just how badly broken the assumptions we put on computers are.
And I use them to, fundamentally, do the same stuff I used a 486 for a couple decades ago. Write code, use basic webpages, talk to people, listen to music. The details have changed, but the category of "The tasks I use it for" really hasn't changed. We just have a couple orders of magnitude more CPU performance, RAM, disk, etc... to do the same things. Nobody blinks about a modern chat app being hundreds of megabytes, requiring a gig or two of RAM. Yet it's still used to send text to other people.
I'm sorry, I reject your "Just relax and let the algorithms sweep over me!" approach to dealing with all this. That guarantees that I will feed myself with whatever is the most profitable to someone else, think that which is most profitable to someone else, etc. And that's not a way to live life.
They can't be bothered to write a truly native app for their own platform. Heck, they can't even be bothered to dogfood their in-house react alternatives.
All of that for an app that's used by hundreds of millions of people every day. It's those things that make me think Casey Muratori really is onto something.
Of course they think Chatgpt is a revolution and will replace developers, that's because they don't see the bigger picture.
If you work on anything remotely hard you already know coding is like 10% of the job and out of this only 10% is trivial and this is the only part got will get right
Ok can chatgpt understand the super ambiguous requirement demanded by the customer, translate it into something meaningful to implement, anticipate what the customer actually wants (or will need in the future) and make sure the implementation meets that nuanced complexity? doubt it.
are you all writing hello world for a living?
"understand the super ambiguous requirement demanded by the customer, translate it into something meaningful to implement, anticipate what the customer actually wants (or will need in the future) and make sure the implementation meets that nuanced complexity" takes skill, but that is NOT what takes up most of the workday, implementation does - and if a tool saves some meaningful time on the implementation part, then the same project can be done in the same time with less people, i.e. replacing some jobs.
Sorry no, completely untrue here, its about debugging and inter system complexity and getting stuff like debug artifacts together, using various tools, debugger, sniffers here, trace analyzers there, having clue and figuring out the bug, and then fixing it, but please not the surface quick fix, but understanding the root cause (though ChatGPT couldn't even do the first thing well even if guided to most of these I guess, unless trained on multiple 100k to million loc code bases, which would not happen for other reasons)...
Pure implementation is the easy part (even if actually hard) and not taking up the workday, I'd wished it would more often..
It can help on those fun tasks like doing a visualization of some data for these things sometimes.. but there it is 50% great, other 50% I would have better used google skills and directly headed to docs or Stackoverflow where I can judge answers better, or transfer them to my problem more easy.
I personally doubt even ChatGPT10 will be able to do all these various tasks and reason between them...and even if, how much computing power should be there for how many tech people world-wide? I wonder I never read about scaling and limits..
What are you doing in your daily biz? Could you provide some specific examples I'd like to see how chatgpt reacts to them.