Interview with Mark Cuban on AI, Silicon Valley, Politics, Media and more(bothsidesofthetable.com)
bothsidesofthetable.com
Interview with Mark Cuban on AI, Silicon Valley, Politics, Media and more
https://bothsidesofthetable.com/mark-cuban-on-why-you-need-to-study-artificial-intelligence-or-youll-be-a-dinosaur-in-3-years-db3447bea1b4#.ionwzln9o
11 comments
Previous: https://news.ycombinator.com/item?id=13599074
> He thinks even programming is vulnerable to being automated and reducing the number of available programming jobs.
Hmm... Where have I heard this before?
> It is far more likely that the programming occupation will become extinct (through the further development of self-programming techniques) [...] More and more, computers will program themselves; and direction will be given to computers through the mediation of compiling systems that will be completely neutral so far as the content of the decision rules is concerned. (Herbert Simon, 1961) [1]
[1] https://www.princeton.edu/~hos/Mahoney/articles/miscellany/i...
Hmm... Where have I heard this before?
> It is far more likely that the programming occupation will become extinct (through the further development of self-programming techniques) [...] More and more, computers will program themselves; and direction will be given to computers through the mediation of compiling systems that will be completely neutral so far as the content of the decision rules is concerned. (Herbert Simon, 1961) [1]
[1] https://www.princeton.edu/~hos/Mahoney/articles/miscellany/i...
While such predictions may have been made before, surely as circumstances change it becomes more likely for it to be possible? If you go back 20 years or so, I can remember people confidently predicting that it would be impossible for computers to have human-like vision, and that it was an 'impossible' problem. And look where we are now.
I think it's often difficult to appreciate that one's own profession could be replaced by some code, but it's an issue that many areas of the working population will have to deal with in our (and our children's) lifetimes - what has happened with physical work - automation such as robots and machines will happen with the work we do with our minds in many cases.
I think it's often difficult to appreciate that one's own profession could be replaced by some code, but it's an issue that many areas of the working population will have to deal with in our (and our children's) lifetimes - what has happened with physical work - automation such as robots and machines will happen with the work we do with our minds in many cases.
The way I see it if we manage to reach a level of AI strong enough to replace software engineers it means that basically anything can be automated. It's not just the end of programming, it's basically the end of jobs altogether. The consequences will be tremendous for humanity as a whole.
So I'm not really selfishly worried about this. We'll go eventually, but we'll probably be amongst the last to go. By then society will have to figure out how to deal with mass unemployment, it's already a massive issue today and it's not going to improve any time soon.
So I'm not really selfishly worried about this. We'll go eventually, but we'll probably be amongst the last to go. By then society will have to figure out how to deal with mass unemployment, it's already a massive issue today and it's not going to improve any time soon.
We may not need AI to automate software development. If genetic programming techniques started making serious advances it might be possible to evolve software. Call it "test only development"--write the tests and then grow a program that satisfies them.
GP doesn't seem to get much attention so we are far from this method being practical. Actually, I'm puzzled why GP is so unpopular compared to say, type system research, since it could have a vastly greater impact if it were to make progress.
GP doesn't seem to get much attention so we are far from this method being practical. Actually, I'm puzzled why GP is so unpopular compared to say, type system research, since it could have a vastly greater impact if it were to make progress.
The problem is that unless you perfectly specify your tests to provide a complete and formal definition of the interface, GP can produce results that might appear correct but is actually subtly (or grossly) broken.
That's an extremely difficult task for any but the most trivial problems. It shares many of the same issues with formal verification, which has also failed to catch on beyond the odd niche project.
That's an extremely difficult task for any but the most trivial problems. It shares many of the same issues with formal verification, which has also failed to catch on beyond the odd niche project.
Yup, in ML you would call this the generalization problem: How are you going to build your algorithm build something useful instead of just memorizing the inputs in some way?
Differentiable Neural Computers [1] are getting us closer (by incorporating an explicit I/O operations on a memory) but it's uncertain how much test data you would need to build complex code routines.
https://deepmind.com/blog/differentiable-neural-computers/
Differentiable Neural Computers [1] are getting us closer (by incorporating an explicit I/O operations on a memory) but it's uncertain how much test data you would need to build complex code routines.
https://deepmind.com/blog/differentiable-neural-computers/
As an example of why this is difficult: when integrating with legacy systems you often have (1) no API (the concept didn't exist / contractor didn't bother to isolate one), (2) no comprehensive documentation of the legacy system's internals (often, not even source), & (3) no human expert available with experience on the legacy system.
Turning any kind of genetic / ML system loose on that? How would you even write test cases, short of backfeeding production data? And expecting the result to pass muster with auditors?
Turning any kind of genetic / ML system loose on that? How would you even write test cases, short of backfeeding production data? And expecting the result to pass muster with auditors?
> I'm puzzled why GP is so unpopular compared to say, type system research
Genetic Programming is not getting much attention because it is inherently inefficient, and there are much better optimization methods out there. Genetic Programming, similarly to Monte Carlo methods, is often the "easy way out" when you are trying to solve an optimization task where you cannot (bother to) model the process.
For example: You could train Neural Networks' weights with Genetic Programming, but that's extremely inefficient compared to gradient descent.
Bottom-line: Genetic Programming is not a magic bullet, and is not guaranteed to converge to a workable solution in a "reasonable" time.
Genetic Programming is not getting much attention because it is inherently inefficient, and there are much better optimization methods out there. Genetic Programming, similarly to Monte Carlo methods, is often the "easy way out" when you are trying to solve an optimization task where you cannot (bother to) model the process.
For example: You could train Neural Networks' weights with Genetic Programming, but that's extremely inefficient compared to gradient descent.
Bottom-line: Genetic Programming is not a magic bullet, and is not guaranteed to converge to a workable solution in a "reasonable" time.
I don't agree, it's not like software engineering is the be-all and end-all of automation. Software engineers usually build something based om some sort of requirement. When the development part is automated, there's still a need for requirements. There will still be a job figuring out what to create in the first place.
And then there's the idea that new jobs are created when others disappear. I'm sure there will be jobs in the future that we can't imagine yet. Maybe we'll actually forcibly create new jobs in order to keep people busy.
And then there's the idea that new jobs are created when others disappear. I'm sure there will be jobs in the future that we can't imagine yet. Maybe we'll actually forcibly create new jobs in order to keep people busy.
Software is automation: compilers automate a large part of writing new machine code, libraries automate by reusing older code. If it can be automated, it has been automated. We have existed under the pressure of automation since the beginning of our field, we can take it.
I don't know about you, but in a lot of situations when I'm asked to build something I have to actually figure out a lot of those requirements myself, as I go along.
Theoretically that role is generally called "business analyst" or "product manager" or "product owner" but you know the difference between theory and practice.
If we'd ever reach that point of automation my money's on many programmers just switching to some sort of "business analysis". After all, this job is all about making decisions, tons of micro-decisions.
Theoretically that role is generally called "business analyst" or "product manager" or "product owner" but you know the difference between theory and practice.
If we'd ever reach that point of automation my money's on many programmers just switching to some sort of "business analysis". After all, this job is all about making decisions, tons of micro-decisions.
Computers don't have general human-level vision, but they can now do certain tasks acceptably well (classification, tracking, SLAM, facial biometrics). The general task of "what's in this image and what does it mean" is still handled pretty badly. We still need manual image moderators, for example, although that's undoubtedly being worked on.
The history of what used to be called "CASE" is absolutely full of people promising tools that would automate parts of programming that fail to deliver. The difficult (or at least most time-consuming) parts of programming are all to do with meaning, intent, purpose, communication, and prioritisation.
What is likely is that "code assistants" will gradually improve, both in the form of language constraints (Rust borrow checker) and IDE advice (Visual Studio's endless tooltips).
The history of what used to be called "CASE" is absolutely full of people promising tools that would automate parts of programming that fail to deliver. The difficult (or at least most time-consuming) parts of programming are all to do with meaning, intent, purpose, communication, and prioritisation.
What is likely is that "code assistants" will gradually improve, both in the form of language constraints (Rust borrow checker) and IDE advice (Visual Studio's endless tooltips).
Yup, we're riding a wave of improvements in classification and function approximation, which is very exciting. But it makes outsiders think this is all that there is to AI.
Meanwhile anything that has to do with the semantics and meaning is a much harder, much longer term problem. And one that's very different from the current fixation on ml.
Meanwhile anything that has to do with the semantics and meaning is a much harder, much longer term problem. And one that's very different from the current fixation on ml.
> I think it's often difficult to appreciate that one's own profession could be replaced by some code
For some reason I had this thought even 15 years back. I used to think once software is written it will continue to run with occasional interference by maintainer. But then people convinced me, look, there is lot of software is to be written so don't worry about losing job.
I now think the kind of software I and many others were writing at typical IT company (CRUDy apps) was very immature and buggy. But over 2 decades people have recognized some patterns and made the software run with much less maintenance work.
I have noticed 5 years back at my workplace where every weekend there will be firefighting with production issues. But now everything seems stable and generally better. No brand new software was written, no stack was replaced. It was things like upgrading to newer versions of software, more logging, more monitoring, more automation, better release process etc.
There used to be ~10 people in team and now there are ~4 people. Everyone who left was supposed to have replacement but no one was hired. The point I am trying to make is, yes, there can be new whizbang features, NoSQL backend with 10 more ppl on team and so on but from business perspective this thing is working fine and just keep it up and running without too many customer issues.
For some reason I had this thought even 15 years back. I used to think once software is written it will continue to run with occasional interference by maintainer. But then people convinced me, look, there is lot of software is to be written so don't worry about losing job.
I now think the kind of software I and many others were writing at typical IT company (CRUDy apps) was very immature and buggy. But over 2 decades people have recognized some patterns and made the software run with much less maintenance work.
I have noticed 5 years back at my workplace where every weekend there will be firefighting with production issues. But now everything seems stable and generally better. No brand new software was written, no stack was replaced. It was things like upgrading to newer versions of software, more logging, more monitoring, more automation, better release process etc.
There used to be ~10 people in team and now there are ~4 people. Everyone who left was supposed to have replacement but no one was hired. The point I am trying to make is, yes, there can be new whizbang features, NoSQL backend with 10 more ppl on team and so on but from business perspective this thing is working fine and just keep it up and running without too many customer issues.
I get what you're saying, but it's an "all food will be cooked by machines"* argument; yes there are robochefs which can produce doughnuts, noodles, pizzas, etc; but there's an ever-expanding area of innovation and niche-filling that humans are really good at. Ask any Michelin-starred chef, or freelance software engineer.
Software engineering is not a zero-sum game where the AIs rise to the exclusion of humans - it's an expanding space.
*and then there's the meta: does using an oven qualify as cooked-by-machine?
Software engineering is not a zero-sum game where the AIs rise to the exclusion of humans - it's an expanding space.
*and then there's the meta: does using an oven qualify as cooked-by-machine?
20 or 30 years ago we were only 5 years from computers doing the work of programmers also.
It's just not gonna happen on a large scale. Nothing beyond simple CRUD if that.
It's just not gonna happen on a large scale. Nothing beyond simple CRUD if that.
One way to think about this: Simon was right. There are very few people today programming computers at the level at which Simon programmed them in 1961. After all, FORTRAN was an automatic coding system because of its super high level of abstraction! In this sense -- when Simon's words are taken in their accurate historical context -- Simon was spot-on about self-programming (aka compilers for high level languages mostly replacing hoardes of assembly wranglers).
It's just that now the word "self-programming" means something different because we've used all that automation to build ever more complex systems.
And that process will continue. Level of abstraction is increased, we figure out how to automate at that level, and then we raise the bar again to tackle ever more challenging problems.
It's just that now the word "self-programming" means something different because we've used all that automation to build ever more complex systems.
And that process will continue. Level of abstraction is increased, we figure out how to automate at that level, and then we raise the bar again to tackle ever more challenging problems.
"Reducing the number of available jobs" is a very reasonable statement. How much time do you spend gluing together ready made components? How different is the latest CRUD app you wrote from the first one you wrote? That's definitely something that could be automated, and it doesn't need "machine learning"... It needs investment in building new infrastructure, which almost nobody invests in because it's difficult to make money from that.
On the other hand, automating all of programming is a pipe dream. If you could do that, you could also automate mathematics and by extension most of the sciences...
On the other hand, automating all of programming is a pipe dream. If you could do that, you could also automate mathematics and by extension most of the sciences...
Honest question to logicians:
Is there any proof that it [automating programming, mathematics, scientific method] is or isn't possible? Is there a way to prove or disprove it mathematically?
Is there any proof that it [automating programming, mathematics, scientific method] is or isn't possible? Is there a way to prove or disprove it mathematically?
> Is there any proof that it [automating programming, mathematics, scientific method] is or isn't possible?
Decidability results can be useful, but note that it's certainly possible to do automated reasoning for undecidable theories. So decidability results are more useful for predicting the difficulty and determining appropriate approaches than for actually determining anything about the possibility of creating a useful system.
E.g. the halting problem is famously undecidable, but there's lot of impressive work on termination checking. Misinterpreting undecidable problems as "impossible problems" is a classic undergrad mistake.
> Is there a way to prove or disprove it mathematically?
No, not really, unless you can be very specific about the exact subproblem you're interested in. And even then, probably not.
Decidability results can be useful, but note that it's certainly possible to do automated reasoning for undecidable theories. So decidability results are more useful for predicting the difficulty and determining appropriate approaches than for actually determining anything about the possibility of creating a useful system.
E.g. the halting problem is famously undecidable, but there's lot of impressive work on termination checking. Misinterpreting undecidable problems as "impossible problems" is a classic undergrad mistake.
> Is there a way to prove or disprove it mathematically?
No, not really, unless you can be very specific about the exact subproblem you're interested in. And even then, probably not.
> Misinterpreting undecidable problems as "impossible problems" is a classic undergrad mistake.
Good thing I am one. Thank you :)
Good thing I am one. Thank you :)
Anything that humans can do is a priori possible. :)
It is merely unlikely to happen while there is anything else left which we can't automate...
It is merely unlikely to happen while there is anything else left which we can't automate...
I don't believe programmers will be completely replaced by AI for a very very long time.
Suppose such an AI exists, one that can write perfect code and get the job done. How do you tell the AI what to code? Any language specific and accurate enough to tell the AI what to code, is in itself a programming language. Someone needs to write in that language, and that person is a programmer. All the AI does is make for a better compiler.
Programmers will be (and already are) augmented by technology and AI, but someone has to tell the computer what the goal is.
Suppose such an AI exists, one that can write perfect code and get the job done. How do you tell the AI what to code? Any language specific and accurate enough to tell the AI what to code, is in itself a programming language. Someone needs to write in that language, and that person is a programmer. All the AI does is make for a better compiler.
Programmers will be (and already are) augmented by technology and AI, but someone has to tell the computer what the goal is.
How does a programmer at a company know what to code? Generally they're given instructions in a human language. An AI replacement for human coders would likely have to do that same, which likely means you need something very close to a strong AI. And a strong AI by definition can replace nearly every human job.
Yes I completely agree. People aren't told what to code, they're told what products to build. To go between those two things surely requires an almost general AI.
Btw, very tangentially, did you used to work in a startup with a certain zap to its name? I recognise your handle :)
Btw, very tangentially, did you used to work in a startup with a certain zap to its name? I recognise your handle :)
Tangentially yes.
> How do you tell the AI what to code? Any language specific and accurate enough to tell the AI what to code, is in itself a programming language. Someone needs to write in that language, and that person is a programmer. All the AI does is make for a better compiler.
The problem is this is never how the transition would happen.
Today how does it work? Go far enough back. You'll have a user with problem X. Someone translates this problem into requirements to have others implement. You would never take the requirements and give them to a general AI because, as you said, you'd have to ensure it understood them.
What would actually happen is you'll tell your general AI that you need to solve X and it'll figure out the best way to do it and just do it. They wouldn't write software in the sense we have it today. They wouldn't produce an app. They would, instead, solve problems.
Here's an example. Today you think "I'm really hungry. It would be great to have an app that could show me what's around me then have someone pick it up for it after I make a selection". You have some basic requirements in your head, you write some software, you test it out. Maybe your app calls an API to place an order for pizza then calls an Uber to pick up your pizza and then bring it to your current location.
With a general AI you'll feel hungry and the AI will know you're in the mood for pizza from Dave's Pizzeria 3 blocks down. It'll dispatch an automated vehicle to pick up the pizza from a likely automated kitchen and bring it straight to you. You wouldn't even need conscious thought into it if we have a way to perfectly connect the AI and our brain.
The problem is this is never how the transition would happen.
Today how does it work? Go far enough back. You'll have a user with problem X. Someone translates this problem into requirements to have others implement. You would never take the requirements and give them to a general AI because, as you said, you'd have to ensure it understood them.
What would actually happen is you'll tell your general AI that you need to solve X and it'll figure out the best way to do it and just do it. They wouldn't write software in the sense we have it today. They wouldn't produce an app. They would, instead, solve problems.
Here's an example. Today you think "I'm really hungry. It would be great to have an app that could show me what's around me then have someone pick it up for it after I make a selection". You have some basic requirements in your head, you write some software, you test it out. Maybe your app calls an API to place an order for pizza then calls an Uber to pick up your pizza and then bring it to your current location.
With a general AI you'll feel hungry and the AI will know you're in the mood for pizza from Dave's Pizzeria 3 blocks down. It'll dispatch an automated vehicle to pick up the pizza from a likely automated kitchen and bring it straight to you. You wouldn't even need conscious thought into it if we have a way to perfectly connect the AI and our brain.
Good project managers can communicate with people so I doubt there will be issues with AI. Plus the majority of problems the AI could code don't necessarily have to be large endeavors, simply start with the simple stuff and you eliminate the need for quite a bit of coding.
Design is so much more important than code, knowing what you want and knowing what you need is more than half the battle. Finally don't over look that an AI will be 24x7 and no person can have that output
Design is so much more important than code, knowing what you want and knowing what you need is more than half the battle. Finally don't over look that an AI will be 24x7 and no person can have that output
It's speculative at this time so I can tell my point of view: you tell it in English. Sometimes it's going to ask for clarifications, other times it's going to get it slightly wrong, or it will have to fill in the missing parts of the specs and take micro-decisions. Just like a human programmer would.
I don't think it will write "perfect code" whatever that means. It will write code with its own idiosyncrasies its own writing style, etc.
I don't think it will write "perfect code" whatever that means. It will write code with its own idiosyncrasies its own writing style, etc.
So you are going to program the computer by voice or plain english text? Looks like programming to me.
Mark Cuban is talking about it - maximal hype has been reached.
Just a matter of time until only Dinosaurs will remember what AI was ;P
Note: article doesn't actually say why he thinks this, only that he said it, so the comment is really just "next big thing is big".
In reality programming is already fully automated :)
Translation to machine code is done in most cases automatically. We just tell the compiler what we want the program to do.
Honestly, if we treated software engineering as a real engineering discipline, we would already have 90% of software created automatically. We just keep ourselves busy by building same CRUD apps, recreating same layouts, building same libraries over and over again.
When we start treating software engineering as engineering not as art, full automation of programming will be a matter of only few years.
Honestly, if we treated software engineering as a real engineering discipline, we would already have 90% of software created automatically. We just keep ourselves busy by building same CRUD apps, recreating same layouts, building same libraries over and over again.
When we start treating software engineering as engineering not as art, full automation of programming will be a matter of only few years.
To be honest it smells like AI has become something you just talk about because you have something to sell. It was called web 2.0, then big data, and now it's AI.
I wrote a rant last post (https://news.ycombinator.com/item?id=13599465) about how AI is being oversold. The problem in this case (along with buzzwords like Web 2.0/big data) is that there is some logical advantage to implementing AI/Web 2.0/big data for a business, just not a change-the-world advantage that will not help if everything else is being done incorrectly.
There is a gray area in between the marketing, and the ambiguity is the real danger.
There is a gray area in between the marketing, and the ambiguity is the real danger.
I don't see any danger with AI, I'm optimist that it will introduce great changes.
I'm just bothered by the whole market tendencies, it often sounds like it's appealing to salesmen, meanwhile doing real stuff with machine learning is tough and it is often the realm of research and universities.
I'm just bothered by the whole market tendencies, it often sounds like it's appealing to salesmen, meanwhile doing real stuff with machine learning is tough and it is often the realm of research and universities.
Interesting part of the article is also "Mark also pointed out that the number of investments he personally makes in San Francisco has dropped by 90%.
"
I know that there's an infinite amount of AI/ML books and courses, but does somebody know a good high-level overview of how ML-based solutions can be introduced to replace existing imperative/OO code bases, and how to think about this? That would be a good starting point to avoid the "dinosaur" scenario, without starting from scratch on sample projects that are unrelated to your current work.
Once a fair number of hackers become dinosaurs, working from home might become the new norm.
Dumb, thin front-end FTW! :)
Mark cuban cares about mark cuban. Suster should get qualified opinions on the matter.