<story><title>Cognitive Biases in Software Development</title><url>http://smyachenkov.com/posts/cognitive-biases-software-development/</url></story><parent_chain><item><author>W0lf</author><text>My personal observation (and view of course) is that most people simply cannot code. And I am not talking about that reverse-a-binary-tree or traverse-a-linked-list type of coding, but more profoundly they just cannot wrap their head around a problem and are able to create a &lt;i&gt;sufficient&lt;/i&gt; solution with respect to the context of the code and its environment at the same time. Good software development is strongly connected with ones ability to think clearly about any given problem and the ability to logically deconstruct it in smaller, more digestible thoughts. If there&amp;#x27;s confusion in the mind, there probably will be confusion in the code as well.&lt;p&gt;Also, it just seems as if many are unable to step back and look at the broader side of things when coding. Asking questions like: Are we using the right concepts here? Did we develop sufficient abstractions?
Case in point: I was just refactoring a code base for a client where the code was paved with a `MemoryHolder` type, where simply `Buffer` would have been the better name for the same concept.</text></item></parent_chain><comment><author>appleflaxen</author><text>I don&amp;#x27;t think this is the right mental model of coding.&lt;p&gt;It seems a bit too similar to the idea that &amp;quot;most people simply cannot read&amp;quot;.&lt;p&gt;We all accept that nobody can read without instruction, practice, and feedback. Why is coding somehow different? If anything, I think reading is &lt;i&gt;more&lt;/i&gt; foreign&amp;#x2F;difficult, because coding is explicit thinking, and we all think. Whereas reading is a completely synthetic act that starts with arbitrary symbols that must be memorized by rote before you can even take the next step of using them.&lt;p&gt;None of us start out life being literate, but few people lack the ability to become literate. Why is coding different?</text></comment>
<story><title>Cognitive Biases in Software Development</title><url>http://smyachenkov.com/posts/cognitive-biases-software-development/</url></story><parent_chain><item><author>W0lf</author><text>My personal observation (and view of course) is that most people simply cannot code. And I am not talking about that reverse-a-binary-tree or traverse-a-linked-list type of coding, but more profoundly they just cannot wrap their head around a problem and are able to create a &lt;i&gt;sufficient&lt;/i&gt; solution with respect to the context of the code and its environment at the same time. Good software development is strongly connected with ones ability to think clearly about any given problem and the ability to logically deconstruct it in smaller, more digestible thoughts. If there&amp;#x27;s confusion in the mind, there probably will be confusion in the code as well.&lt;p&gt;Also, it just seems as if many are unable to step back and look at the broader side of things when coding. Asking questions like: Are we using the right concepts here? Did we develop sufficient abstractions?
Case in point: I was just refactoring a code base for a client where the code was paved with a `MemoryHolder` type, where simply `Buffer` would have been the better name for the same concept.</text></item></parent_chain><comment><author>z3t4</author><text>People think differently and the higher up in the abstraction level, the more diverse it will get. Like for example some people think in shapes and will get crazy if you do not format the code in the same shapes. Others think in words and writes the code as like they where talking to a human. Others have images in their head and doesn&amp;#x27;t really  care how the code looks. Some people annotate their code so that it looks like LLVM. Others think of real world items like containers, ships, streams, etc.</text></comment>