Кроме того что уже назвали, есть ещё пара важных вещей:
- Умение работать с неопределённостью и нечётко поставленными задачами. Хороший разработчик должен уметь находить неточности в формулировках задач и уточнять их.
Также он должен уметь находить исходную проблему за предлагаемым решением, и предлагать альтернативу ему.
Например, если бизнес регулярно просит добавить новые поля в форму - можно предложить добавить конструктор форм, с которым может справиться конечный пользователь.
Или если бизнес предлагает начать парсить какие-то комменты, которые менеджеры оставляют в карточке клиента - добавить формализованные поля для таких данных и перенести в них всю информцию.
- Умение думать в рамках приносимой ценности.
Не нужно тратить 8 часов на автоматизацию действия, которое надо произвести 1, которое выполняется за 1 час.
Не нужно тратить много времени на допиливание старой функции, которой никто уже не пользуется, когда можно заняться чем-то объективно более важным.