Have a read about how he developed the app:
http://techblog.netflix.com/2015/09/john-carmack-on-developi...
It's almost beyond belief what he managed to accomplish in one and a half weeks. Hacking the Netflix video decoding system, fine-tuning the UX control heuristics, working around DRM limitations, optimizing the power draw and thermals, and much more, all on top of implementing the very polished app itself.
https://www.youtube.com/watch?v=Ti_3SqavXjk&t=55m50s
This link will start playing as Carmack tells the "broken Netflix engineer" story, while recounting how he finished the app in that incredibly short timeframe.
John made an interesting premise of the gap VR is trying to fill. Essentially, it is filling the gaps that is in your real life with VR. Hmm...Would it better to strive for improvement in your real life?
There's a repeating motif in reactions to disruptive technology, where the technology is first viewed from an oppositional mindset, which makes sense, because any disruptive technology will steal time away from other Old Activities that existed before the technology, and people who aren't early adopters only look at the decrease in the time spent on Old Activities.
We saw this motif of oppositional reaction in how people viewed the internet: people are spending so much time in cyberspace that they won't know how to effectively navigate the real world; people are having fantasy cyber-lives instead of spending time in the real world; he's meeting someone he met online, he must not know how to interact with people, etc. But social networks descended on society in an incredibly short period of time, and worked their way into the furthest corners of our lives. The oppositional mindset gave way to an integrative one, where the notion of a "cyberlife", as distinct from a "life", is simply misplaced- the internet is simply a part of Reality, sans prefix and with a capital R, instead of being boxed up in the conceptual category of "the Cyber".
There was another motifical recurrence when smartphones entered the fray. The oppositional critiques were voluminous and eloquent: we're spending so much time texting we're forgetting how to speak to each other; every crack in every interaction is plastered over with the ritualized and mutually fraudulent "notification check", signposting the way to the unravelling of the social fabric..., etc.; you can find the Real World up there, when you hold your head high, with dignity, and not down there, with your head bowed, staring transfixed at a shining rectangle, face ghost-like, bathed in the soft pearlescent glow of vapidity. But at some point, the integrative mindset arrived. It's hard to maintain the oppositional mindset when you're sitting in a restaurant that you just found on Yelp, and are chatting to your friend on WhatsApp, only to have them sit down in front of you. The handoff between "smartphone life" and "real life" is seamless. Smartphones have inextricably woven themselves so far into our lives, that if you ask someone how their smartphone life compares to their real life, they'll just give you a strange look. Smartphones are just a part of life.
I think VR/AR could go in this direction, as just another arrow in our technological quiver. If we start looking at things like social VR, which has the potential to reshape the way we interact remotely, or how architects are today routinely using VR to demo to clients, it's not impossible to believe that the integrative mindset could eventually overcome the oppositional mindset in terms of how we think about VR.
> To fix this, I had to make a small change in the Netflix video decoding system so it would call out to my VR code right after it submitted each frame, letting me know that it had submitted something with a particular release time. I could then immediately update the surface texture and copy it out to my own frame queue, storing the release time with it. This is an unfortunate waste of memory, since I am duplicating over a dozen video frames that are also being buffered on the surface, but it gives me the timing control I need.
Oh, Mr. Carmack...
http://developer.android.com/reference/android/graphics/Surf...
http://developer.android.com/reference/android/graphics/Surf...
And I only started coding for Android last month. I guess I'm an 11x programmer. :) ducks
Also I bet they don't behave 100% the same way, in regards to timing, across devices.
In graphics programming at the level Carmack develops, every ms counts.
That said, I don't contend that some people are not at some point 10 times more productive than others. I contend that anyone can be just as productive, and often are, were or will be, although the manner in which they should be productive is absolutely not clear-cut. Society as a whole shapes how we act. Diversity in its composition allows what we rely upon.
For instance, I would not be as productive at work if I had to take care of a few children on my own. Similarly, I am extremely unproductive while gardening, and don't intend to spend the time to improve.
That seems to either be such a strong claim that it's trivial to refute, (i.e. a newborn baby, or a quadriplegic with severe mental retardation, etc.), or too nebulous and ill-defined to be of any use (i.e. said quadriplegic is productive in cultivating character in carers?)
I consider myself one that's very good, but I look at people like Carmack and realize I will never be one of them...that won't stop me from trying to though!
0 - https://twitter.com/ID_AA_Carmack/status/684475417726595072
Some of them leave a disaster in their wake. They're fast because they're sloppy, and don't take the time to refactor their new code into something maintainable. The team pays the price for that later.
I'm not suggesting John Carmack is one of those bad 10x developers, but they do exist. Just something to keep in mind.
It may be wise to leave it as a prototype and build V2 from scratch after that point - taking many of the best parts from the earlier experiment. I've been on the former end enough times where I'd rather the next team of engineers didn't use it as the base. I often learn many lessons from building V1 which would be a strong base for rebuilding it properly.
Erlang creator Mike Williams: “If you don’t make experiments before starting a project, then your whole project will be an experiment”.
Unfortunately many startup founders don't see the dev process as experiment-driven, rather as a monolithic beast the continually needs evolution and refinement. The opportunity costs of rebuilding a prototype-quality app using lessons learned from it vs building on top of it are real - rebuilding is not always as risky as many people make it out to be. Context matters.
I don't think Carmack would have the productivity of 100 average guys if he was working on a typical CRUD business application.