Coding contest problems may be a common hiring filter, but they are very much not representative of software development work (OTOH, AI coding assistance, which this, Copilot, ChatGPT, etc., illustrate) are going to render them less valid as hiring filters, both because they will make them harder to use as skill tests, and because they will further reduce the role of the micro-focus skills they center in real-world software development.
I think this is amazing, because this is the opposite of how we normally think about computers. ChatGPT is highly intuitive instead of a formal reasoning system. No doubt some future AIs will combine this intuition with checks against formal verification engines to check correctness.
[1] Section 6 of https://yaofu.notion.site/How-does-GPT-Obtain-its-Ability-Tr...
https://en.wikipedia.org/wiki/OODA_loop
The US Army calls it observe–orient–decide–act.
"The approach explains how agility can overcome raw power in dealing with human opponents. It is especially applicable to cyber security and cyberwarfare.
According to Boyd, decision-making occurs in a recurring cycle of observe–orient–decide–act. An entity (whether an individual or an organization) that can process this cycle quickly, observing and reacting to unfolding events more rapidly than an opponent, can thereby "get inside" the opponent's decision cycle and gain the advantage."
Humans using AI will be well "inside the loop" of non-AI humans.
I don't think AI alone will eliminate jobs, but jobs that use AI to get inside the loop of other companies will quickly eliminate the competition. Why would you pay and wait days when you can pay and wait minutes or hours for a quicker Ask-Show-Ask-Show loop that quickly narrows down on what the intent of your Ask was (even if Ask #1 was poorly thought out or worded)
- You will never need to understand a single bit of what the AI has generated for legal, moral, or strategic reasons?
- You will never need to manually rework a single thing or fix anything ever.
Logically neither statement is true furthermore who do you imagine is writing the tests that ensure correctness? Logically the person you would want to do this task isn't a yokel who understands interpersonal relationships its someone who understands what is being generated so your company wont murder people or get sued out of existence.
Of course you will probably want more than one person doing this task and there ought to be some interface between him and his fellows and between the lot of them and management to ensure good communication and company standards... Maybe a PM?
I find it endlessly fascinating that those who can't do dream about the obsolescence of the useful class deeming the irreplaceable human part of the endeavor is the petty manipulation of each other and ego massaging we all do by necessity to keep human endeavors tied together with bailing wire and barely plodding on. It doesn't speak well for our species.
Beyond narrow parameters self improving arbitrary representation and manipulation of symbolic data is basically AI complete. The toy you would hope to enable you to ask a computer instead of a person for a particular improvement to your website would upon completion represent a short step from the obsolescence not of coders but of humans wrought in vain hope that we can actually control tools smarter than us. It's probably neither "a few years" away nor that fantastic of an idea but do carry on.
This is usually how we end up with weird situations like currency coded as text so it can't be sorted by amount by end user and so on.
I agree that specs make or break the project, but at what point is it ok to assume "x should do y".
This kind of code that I'd believe makes up 99% of all code out there that is worked on, is not available to the public for training. What to do about that? Rewrite all?
We used to code in ASM. Then we coded in high level languages. Soon we'll code by giving prompts to auto code generators.
The same can’t be said about code generators like this that are producing millions of possibilites and using heuristics to guess which program will have the most success.
I wouldn't say the output is that similar. You get wildly different bug types, bug type distributions, and edge cases/failure modes in different languages. Does "Python" (the internal implementations of the method names you type) understand the problem it's working on more than the generator on the other side of a coding prompt?
Some problems have short, clear definitions yet remain challenging. An algorithm for solving them may have been discovered decades (or even centuries) ago. But trying to produce more efficient solutions can be a life's work and more. One of the most obvious examples is integer factorization, which had a basic algorithm published 800 years ago yet is still a research problem today:
https://en.wikipedia.org/wiki/Trial_division
https://en.wikipedia.org/wiki/Integer_factorization#Factorin...
That is to say, a perfectly accurate map would just be a replica of the the terrain it is mapping - anything less would technically be inaccurate. Only by leaving things out and "summarizing" an area does a map become a useful representation of the terrain.
Very often this means getting into long cycles of iteration. If time zones are distant, those cycles can be very long and painful.
Perhaps outsourcing to AI will work much better, as those iterative cycles can be done in near real-time. Maybe there needs to be many different models, each with some industry/domain specific training to increase the odds it’ll make the right guess when it needs to.