Уметь думать.
Совершенно серьезно. Синтаксис языка программирования легко выучить.
Но без умения применять его программист будет подобен ребенку, который помнит, как выглядят буквы и может их нарисовать, но не понимает их смысла, и не может построить с ними фразы.
Что из себя представляет этот процесс в данном контексте?
- Человек способен не просто брать какую-либо информацию из "авторитетных" источников, но способен информацию критически воспринимать, соотносить с имеющимися знаниями и опытом.
- Человек способен большую задачу разбивать на маленькие и решать поэтапно.
- Человек любопытен. Ему не скучно докапываться до сути.
- Человек способен управлять мыслями и структурировать их.
- Человек должен уметь сформулировать запрос того, что ему нужно узнать, но пока неизвестно (на практике - не так уж легко без навыка это сделать).
Важно:
Если сначала думать, то и код будет качественный, и муторного рефакторинга получится избежать.
Понятно, что все люди и все ошибаются, но если кодить не думая, а просто "клац-клац-клац" по клавиатуре, весь код будет ошибкой. В прочем, думаю, это не про Вас. Даже если нет уверенности в себе, пробуйте!
Желаю успеха!