6 ms·
I am quite confident my job is not in danger. Sure - scaffolding and boilerplate can be automated using ML - but problem solving - not at all. The reason is si
by mkleczek 3y ago
I am quite confident my job is not in danger. Sure - scaffolding and boilerplate can be automated using ML - but problem solving - not at all.
The reason is simple - to find a solution is to create a program that has a specific set of properties. This - by Rice's Theorem - is not possible to realise using a Turing Machine. So as long as the solution search space is small (ie. we are talking about very similar programs to generate) - ML based methods are fine.
But once we are talking about finding solutions to non-trivial problems - I am sure human is needed.
- Smaug123 3y agoThe world contains a great many arguments invoking Rice (or equivalently the halting problem) to "prove" non-mathematical statements, and they are almost all specious. a) the mere fact that there is no fully general procedure to do some particular task doesn't imply some human can do that task any better than the best procedure we can find, and b) even if you believe there's something noncomputable about the human mind, it still allows the existence of a procedure that will solve all instances of that task which will actually arise in reality. It's a purely empirical question about the extent to which Church-Turing holds of the real world.
- mkleczek 3y agoUntil a computer can solve the problem “how to redesign this particular database design (tables/partitioning/indexes/queries) so that it can handle expected load in next 5 years” I can safely assume it does not hold :)
- Smaug123 3y agoAh, now you're talking price! How many years do you bet before this happens - three? Five?
- mkleczek 3y agoI don’t believe it will happen at all. There will always be some problems that only a human can solve because it’s a human that defines them. It is always _by definition_ a game between humans where computers are just tools. At least as long as AGI does not happen…
- Smaug123 3y agoI don't at all see why "How to redesign this particular database design (tables/partitioning/indexes/queries) so that it can handle expected load in next 5 years" is a problem that only a human can solve because only a human defined it. Forecasting load is in the realm of machine learning without even needing LLMs, and LLMs are already capable of designing database schemas and so forth, so this seems much more like a question of "when will the existing technology, which can do this sometimes, get to the point of being able to do it always". Recall that things are true "by definition" if they're not true for any other reason; you're free to define yourself out of the race against the machines, but the real world need not pay attention to your definition! Computers are "just tools" is certainly true, but I find it harder to automatically agree that the programs running on them are "just tools". Here is a rather bad analogy which is suggestive: in school we learn that there are seven features which are necessary and to some extent sufficient to identify a living organism ("movement, respiration, sensitivity to surroundings, growth, reproduction, excretion, nutrition"). Programs certainly move (thanks to Kubernetes, for example), are sensitive to their surroundings (think of self-healing clusters or load-shedding), grow (scale up in response to demand), and excrete (cleanup jobs on databases). They don't respire, but then that was only ever a contingent feature of how life evolved on Earth; they don't take in nutrients unless you really stretch the analogy; they don't currently reproduce, although LLMs being able to code means it's only a matter of time before an LLM can train another LLM (even Claude 3 Opus is able to train small ML models). All this is to say that the word "tool" is a very poor description of what an LLM is: "tool" calls to mind things which don't have any of those lifelike properties, whereas even large non-intelligent software systems such as Kubernetes have many of those properties.
- mkleczek 3y agoWhat I am trying to say is that even if computers are going to be able to solve todays database design problems (which I am sceptical of by itself) - we are going to have bigger/more capable databases and other problems that computers are not able to solve. It is going to happen by definition - people by definition want more than they have today and want to solve unsolved engineering problems ("problems" that machines can solve are simply not problems anymore). The only way it can end is creation of some overwhelming intelligence (AGI) that would govern (or some might say: enslave) people so that their demands are controlled.
- 93po 3y agoThe problem is software development is 95% stuff that has been done a million times before. If you disagree you’re probably not exposed to enough of the industry to see this.
- skydhash 3y agoIs it the problem? Most of the time I’ve coded something is because the code I found did not solve the problem according to my needs. There’s a plethora of music players, but no one is alike. That’s because the domain of music playing is vast and each developer had to compromise to find something that can work for him.
- 93po 3y agoIf you make a VLC clone from scratch but intended to be used for kiosks, the mixture of features and how it operates may be different, but the individual features have assuredly already been programmed elsewhere before. Which is basically my point. It still basically renders video on a screen, and maybe has options to play/pause/mute/etc. Most websites are CRUD apps with stuff that's been done literally a million times before. Yes, some people do novel problem solving with software. But it's super rare in the grand scheme of the millions of people in the world who program.
- mkleczek 3y agoWhat you are describing is a pipe dream of software reuse. People try to do it from the very beginning of IT industry with mixed results. The devil is in the details - your mixture of features is different than mine. We have constant upgrade of video codecs that offer more capabilities. We have unavoidable security issues that need to be somehow addressed (by version upgrades or replacing some components). Etc, etc, etc... IMO it is quite arrogant to claim "all problems are the same problem" - they are not even though they might look similar.
- 93po 3y agoI agree that the premise of software reuse with humans is not realistic. However my point being that an LLM trained on the entirety of available code could realistically mix and match features across different pieces of software and build something cohesive