Уровнем образования. И, как следствие, неумением эффективно решать нетривиальные задачи.
Да, может - если получит нормальное образование. Прежде всего, математическое.
P.S. Раньше в российском реестре профессий для кодеров была отдельная графа: "техник-программист" - именно для того, чтобы различать программиста, имеющего полноценное высшее образование, и выпускника ПТУ (или "курсов программирования"
. Теперь же схему усложнили и как "программиста", так и "техника-программиста" разбили на несколько профессий каждого.