<story><title>Ask HN: Essential skill needed to be a programmer?</title><text>In the book Coders at Work by Peter Siebel, he asks peter norvig this question:&lt;p&gt;&amp;quot;So is there any essential skill needed to be a programmer? Different domains obviously have different requirements but ultimately is there some commonality to writing code regardless of domain?&amp;quot;&lt;p&gt;Peters answer to this _really_ resonated with me - his first two sentences were &amp;quot;You&amp;#x27;ve got to be able to make progress and then improve on it. That&amp;#x27;s all you need to be able to do in life.&amp;quot;&lt;p&gt;How would you answer this question?</text></story><parent_chain><item><author>Apreche</author><text>To simply be a programmer, one must only write a program, nothing more. The essential skill I guess would be literacy, knowing how to read and follow directions, knowing how to use a keyboard, not much.&lt;p&gt;To be a good programmer, if I have to pick only one &amp;quot;skill&amp;quot; I would pick systemic thinking&amp;#x2F;understanding. This starts with the ability to learn and eventually understand how a system works. The next level is the ability to create a working model of that system in ones mind. Someone who can do that will be very successful at programming anything in any language on any platform given sufficient documentation.</text></item></parent_chain><comment><author>ezoe</author><text>Yes. Literacy.&lt;p&gt;I saw many beginners who treat a compiler like a black box and attempting hand fuzzing until it happened to match the well-formed syntax and behaviour they wanted, while they literally holding a paper text book or opening a browser tab for a tutorial which clearly explain how it works and what they should write in a plain natural and native language of theirs.&lt;p&gt;One time, I was told by a beginner who copied an example code from a text book that it doesn&amp;#x27;t work. I looked at it. It was a fizzbuzz code, less than 10 lines. And she typed it wrong. Not just an ordinary typo. She conjured up really strange ill-formed syntax she believe it works somehow. There is a parse error message but she ignored. I pointed out the place on display with a finger and she still didn&amp;#x27;t get it. I place a text book beside the display but it requires a considerable effort convincing her the cause of the error.&lt;p&gt;Other time, I was asked why for(;;) ; else ; doesn&amp;#x27;t work in JavaScript. I kept saying because there is no syntax like that in JavaScript. You have to accept it as is or create your own language.&lt;p&gt;Sometimes, I wonder some people read natural language text by simple keyword pattern matching. People like above example weren&amp;#x27;t dumb. Far from it. They are smarter in their field than me. Yet, they failed at this basic literacy level.</text></comment>
<story><title>Ask HN: Essential skill needed to be a programmer?</title><text>In the book Coders at Work by Peter Siebel, he asks peter norvig this question:&lt;p&gt;&amp;quot;So is there any essential skill needed to be a programmer? Different domains obviously have different requirements but ultimately is there some commonality to writing code regardless of domain?&amp;quot;&lt;p&gt;Peters answer to this _really_ resonated with me - his first two sentences were &amp;quot;You&amp;#x27;ve got to be able to make progress and then improve on it. That&amp;#x27;s all you need to be able to do in life.&amp;quot;&lt;p&gt;How would you answer this question?</text></story><parent_chain><item><author>Apreche</author><text>To simply be a programmer, one must only write a program, nothing more. The essential skill I guess would be literacy, knowing how to read and follow directions, knowing how to use a keyboard, not much.&lt;p&gt;To be a good programmer, if I have to pick only one &amp;quot;skill&amp;quot; I would pick systemic thinking&amp;#x2F;understanding. This starts with the ability to learn and eventually understand how a system works. The next level is the ability to create a working model of that system in ones mind. Someone who can do that will be very successful at programming anything in any language on any platform given sufficient documentation.</text></item></parent_chain><comment><author>ethbr0</author><text>&amp;gt; &lt;i&gt;systemic thinking &amp;#x2F; understanding&lt;/i&gt;&lt;p&gt;I was going to phrase it as &amp;quot;simultaneously seeing the forest and the trees.&amp;quot;&lt;p&gt;The vast majority of my programming career has involved (1) taking a huge amount of information (specs, code), (2) building a mental model of it at 2+ levels of detail (high-level to fit a simplified holistic system in my mental swap space, and detail to have all the details about &lt;i&gt;this&lt;/i&gt; problem at hand), (3) identifying the needle in the haystack, &amp;amp; (4) coming up with a simple solution.&lt;p&gt;As the parable goes [1], it&amp;#x27;s knowing &lt;i&gt;which&lt;/i&gt; bolt to turn &amp;amp; how far.&lt;p&gt;[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.snopes.com&amp;#x2F;fact-check&amp;#x2F;know-where-man&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.snopes.com&amp;#x2F;fact-check&amp;#x2F;know-where-man&amp;#x2F;&lt;/a&gt;</text></comment>