Ideas are not just natural selection. People do not design computers by randomly messing with transistors of their last version. People do not change computer programs by randomly altering lines of code. It would not work in any feasible time period.
There are things that you can design that way. There are things where that’s the best way we know how to design them. That’s why genetic algorithms are sometimes very useful. Not everything is like that. That’s why we don’t use genetic algorithms for everything.
Also, the lack of innovation he talks about seems to be largely that we’re not reinventing the wheel. If there’s nothing to stop you from stealing ideas, then there won’t be sufficient innovation, but that’s what we have intellectual property rights for.
Well, I don’t know how other programmers do things, but what I do is I create models at various levels of abstractions, and play with those models until it occurs to me what ought to happen next. Like, I draw on the whiteboard with someone, and we generate all the known solutions we have and usually a known solution or pattern just needs to be adapted. So we’re copying. Often, the adaptions aren’t immediately obvious when you go down a couple levels and start actually coding it, and so I play around with a couple of different ideas, or maybe I’m guided by theory and just have to think it through and problem solve for this circumstance—which would be copying.
If I’m dissatisfied at any point and have exhausted my search space, what I’m going to do next is enlarge that search space by talking to more people or doing research. Copying.
Every now and then—but pretty rarely - something novel will occur to me that will out-compete all the ideas I already have or can find in research. And so there a new idea made it into the code. And if someone asks me how I came up with, I’ll just describe the problem, and the search space and the research and so on, and then shrug. Because the idea seems pretty obvious in hindsight I just shrug away this question of where the idea came from.
It would be difficult to overstate the power of our abstraction and modeling, because it allows us to quickly test for fitness a rash of approaches iteratively. And in the process of that novel ideas do occur and get worked in and then communicated. But I am not at all certain the genesis of most of those ideas isn’t more or less random, in the sense the author means it. Indeed most engineering work is copying, as the author terms it.
Ideas are not just natural selection. People do not design computers by randomly messing with transistors of their last version. People do not change computer programs by randomly altering lines of code. It would not work in any feasible time period.
There are things that you can design that way. There are things where that’s the best way we know how to design them. That’s why genetic algorithms are sometimes very useful. Not everything is like that. That’s why we don’t use genetic algorithms for everything.
Also, the lack of innovation he talks about seems to be largely that we’re not reinventing the wheel. If there’s nothing to stop you from stealing ideas, then there won’t be sufficient innovation, but that’s what we have intellectual property rights for.
Well, I don’t know how other programmers do things, but what I do is I create models at various levels of abstractions, and play with those models until it occurs to me what ought to happen next. Like, I draw on the whiteboard with someone, and we generate all the known solutions we have and usually a known solution or pattern just needs to be adapted. So we’re copying. Often, the adaptions aren’t immediately obvious when you go down a couple levels and start actually coding it, and so I play around with a couple of different ideas, or maybe I’m guided by theory and just have to think it through and problem solve for this circumstance—which would be copying.
If I’m dissatisfied at any point and have exhausted my search space, what I’m going to do next is enlarge that search space by talking to more people or doing research. Copying.
Every now and then—but pretty rarely - something novel will occur to me that will out-compete all the ideas I already have or can find in research. And so there a new idea made it into the code. And if someone asks me how I came up with, I’ll just describe the problem, and the search space and the research and so on, and then shrug. Because the idea seems pretty obvious in hindsight I just shrug away this question of where the idea came from.
It would be difficult to overstate the power of our abstraction and modeling, because it allows us to quickly test for fitness a rash of approaches iteratively. And in the process of that novel ideas do occur and get worked in and then communicated. But I am not at all certain the genesis of most of those ideas isn’t more or less random, in the sense the author means it. Indeed most engineering work is copying, as the author terms it.
At least one program does it. Randomly changes code and evolve it.
http://leehaywood.org/misc/several-unique/