Уметь писать понятный код. Это код, который не содержит лишних строчек, его легко читать другим разработчикам.
Структурировать данные. Структура данных — это способ организовать информацию, чтобы в ней стало проще разобраться. Например, записать в виде массива или очереди. Структурированные данные программист использует в коде или создает с нуля. Структур много, но в обязательном порядке разработчик должен уметь работать с массивами, связанными списками, стеками и очередями. Это основа, без нее не решить даже простые задачки.
Знать библиотеки. Специалисту не надо писать скрипты с нуля — он берет заготовки из библиотеки и внедряет в код. Так разработка идет быстрее. Достаточно знать основные библиотеки — они разные для каждого языка. Например, если код на Java, то программист должен работать с библиотеками java.lang или java.util. А если на Python — то с Pandas и NumPy.
Владеть несколькими языками программирования. Это помогает разработчику менять язык, если он не подходит для решения конкретной задачи. А еще такой специалист более востребован на рынке труда: запросы работодателей разнятся. Не получится знать один язык и подходить под все вакансии.
Понимать математику. Углубленная математика нужна в специфических сферах разработки вроде машинного обучения или больших данных. Но даже базовые знания алгебры, логики и статистики помогают в работе. Если программист дружит с математикой, ему легче просчитать вероятность ошибки в коде. Понять, к каким результатам приведет изменение скрипта и насколько увеличится нагрузка на сервер, если данных станет в 2 раза больше.