При помощи одних только книг и курсов можно обучиться максимум до Junior уровня.
Дальше исключительно на основе коммерческого опыта.
Один из важных навыков опытного разработчика - уметь находить в себе слабые стороны и самостоятельно находить способ, как эти слабые стороны закрыть.
Например, если тебе не хватает знаний математики - идёшь повторять курс математики начиная со школы.
Не хватает алгоритмов - бери книги по алгоритмам.
Нужен хайлоад - книга с кабанчиком.
\+кроме хардскиллов сеньору нужно уметь общаться с людьми. Так что тут, наверно, следует почитать какие-нибудь книги про психологию, общение, бизнес