An example: I use TensorFlow, but looking at the concept and implementation, I don't think I could conceive of and write TensorFlow in 10 years of work.
An example: I use TensorFlow, but looking at the concept and implementation, I don't think I could conceive of and write TensorFlow in 10 years of work.
And this is exactly why software is eating the world. Once written it stays written and all those people that could not write something like TensorFlow if their life depended on it are able to use it as if they could.
Abstraction is a super powerful thing, all this building on the knowledge and capability of those that came before is what makes the whole thing possible in the first place. Probably the people that wrote TensorFlow would not be able to design (each of them individually) the computers that it runs on, or the operating system that allows them to run TensorFlow in the first place.
With e.g. metalworking, you can transfer the knowledge but training takes time. And building a new implementation of that knowledge takes time too.
But in software the knowledge and implementation is transferred effectively instantly. You can nab software off the internet (transfer knowledge) and start running it locally right now (implementation).
Software changes the complexity from O(2^N / T) to O(2^N).
The hammer, fertilizer and the metal press are all part of our tool-making culture, ways to adopt nature to do our bidding and in the case of the hammer and the metal press to shape it by brute force. In contrast, something like TensorFlow is a tool of the mind which means you can encode it as bits and those will travel the world a lot faster than your average bulk goods or container ship every will.
So they are comparable at some level and totally incomparable at others.
You aren't, generally, going to hire a Picasso. Picasso will be off being Picasso.
You also aren't going to hire Greg, the guy who took one art class in middle school who just decided last month that he's going to be a artist.
What we are really talking about is the 'artist of the line'. Accessible professionals. Yes, there is still a spectrum there but it is more in the 10x territory. And some are 10x for very particular work and some for others.
What gets me with the whole 10x thing is the idea that a 10x developer in one particular circumstance can be dropped in another and be expected to perform at that same level. That's not how it works.
And I don't just mean on the scale of a day (we've all had those) - there's a reason FizzBuzz was a thing; there are people with no practical coding ability nonetheless interviewing for engineering jobs. Somewhere, one of them got hired. Somewhere, they were able to BS - or download already prepared software that did what they were supposed to code - and keep that job.
Don't understimate the human ability to learn. 10 years are plenty of time to learn the math and to find good code structures.
Google was using for years a tool for deep belief networks, then suddenly deep learning was a thing and they started TensorFlow based on what they learn of the deep belief networks tool. So you can track the origins of TensorFlow to 2010 or before, and for sure it wasn't developed for 1 person. It could start as a 5 person project and now probably it is more than a hundred (aiming very low). If you add on top of it all the research done where they have been collecting ideas, then you realize the amount of knowledge behind TensorFlow is huge. And the amount of people and time under it is also huge. Probably no one can understand it completely, even if he/she spend 10 years.
The downward range goes very, very deep. And that's of people that actually do end up shipping something that "works", somehow.
I've personally rewritten an app in less than a week that had two devs on it for over 6 months. Their deliverable didn't really work at all, even after the 1+ minute loading time (Win32 app).
To be fair, a lot of that six months was probably just nailing down the requirements. Your rewrite enjoyed having that design work already done.
I'd argue that building applications is 90% design, 10% code. The code part can balloon to a greater fraction if the developers are not competent enough of course.
Given how many clients that company had, the main conclusion I draw is that as an industry focusing on helping the .1x people improve is more likely to make a noticeable difference than chasing the other end of the spectrum.
The lack of true apprenticeship, fellowship, mentorship is an incredible disservice to our industry. The number of people who all need to rediscover the same lessons the hard way wastes so much programmer capital.
Do you think that's possible? More often than not the .1x people don't seem to care either.
You're comparing a single person to a whole community of PhD's. Getting up to speed enough to be a useful member of such a community is more doable.
And in general, what one fool can do, another can.