Like others have said -- ability to type without waiting any mental effort in the process and reading a lot of code helps.
However, I'd like to stree the one thing that most programmers ignore or worse still are unawre of -- Programming is NOT like making sushi simply because it is NOT a singular, individual effort. Programming is a social activity, even if you never ever meet another developer in person -- coding is communication -- it is communicating the the authors of libraries and tools using the APIs and interfaces that they have created ...while also creating your own 'story/conversation/...can't find the word for it'
To repeat the Hal Abelson quote in the context of what I am saying:
> Programs must be written for people to read, and only incidentally for machines to execute.
Unlike sushi making, programmers collaborate. They build on top of each others work. So in this context, another skill that's extermely important to cultivate as a programmer is the ability to communicate intent both via code (ie: modularity, good stucture, good variable names ...etC) and otherwise (documentation, following standards so that you don't surprise your 'users' -- who could also mean other developers, ..etc) are important as well.
So, on a higher level than specific skill, I'd urge you to stop thinking of programming as a sole activity that you indulge in. A lot of good programming advice (like the quote above or the robustness principle[1] or 'There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.') when seen in the light of a 'more-than-one-person' activity suddenlly make a whole lot of more good sense.
Would it be fair to say that he collaborates with the 5-6 chefs he is over? I believe in the documentary he says his team does 95% of the work before he makes the dish in front of the customers. In addition, that 95% they are doing he taught them how to do.
Right. In the documentary’s case you can see multiple people contributing to then end product: one will head to the market to gather the fish, one to cook the rice, one to massage the meat if needed, one to smoke the meat if needed, etc. Even in simple take-out sushi restaurants there’s usually a lot of moving parts behind the scenes, far from an individual effort. Just that one person will end up assembling the pieces into a final product in the end.
However, I'd like to stree the one thing that most programmers ignore or worse still are unawre of -- Programming is NOT like making sushi simply because it is NOT a singular, individual effort. Programming is a social activity, even if you never ever meet another developer in person -- coding is communication -- it is communicating the the authors of libraries and tools using the APIs and interfaces that they have created ...while also creating your own 'story/conversation/...can't find the word for it'
To repeat the Hal Abelson quote in the context of what I am saying:
Unlike sushi making, programmers collaborate. They build on top of each others work. So in this context, another skill that's extermely important to cultivate as a programmer is the ability to communicate intent both via code (ie: modularity, good stucture, good variable names ...etC) and otherwise (documentation, following standards so that you don't surprise your 'users' -- who could also mean other developers, ..etc) are important as well.So, on a higher level than specific skill, I'd urge you to stop thinking of programming as a sole activity that you indulge in. A lot of good programming advice (like the quote above or the robustness principle[1] or 'There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.') when seen in the light of a 'more-than-one-person' activity suddenlly make a whole lot of more good sense.
Ok, I think the point is made. :-)
[1] Be conservative in what you do, be liberal in what you accept from others http://en.wikipedia.org/wiki/Robustness_principle