Ayk,
Шаг 1: выбираем тип: программист, девопс, админ, qa(тестер), дизайнер, сео, ux/ui, big data ...
Если вы выбрали qa, дизайнер, сео, ux/ui, то тут все просто.
Если выбрали девопс то учите докер , кубернетис, chef, ansible и тому подобное
Если администратор то линукс и все сопуствующее
Если биг дата, то там есть свои тулзы, но я их толком и не помню ибо дел с ней не имел.
И наконец программист.
Шаг 2: выбираем направление: веб, мобайл, дескоп или нейронки.
Десктоп имхо очень сдал позиций по популярности. Мобайл и веб держат крепко лидерство. Также в последнее время очень большой всплеск вокруг нейросетей.
Шаг 3. Выбираем язык программирования
Если выбралм десктоп то стоит смотреть в сторону java, c#, c++, electron (js)
Если мобайл то тут выбор не слишком огромен. ios - swift, adnroid - kotlin и java. Но также есть .net и js которые позволяют зачастую костыльно, но делать под обе платформы одновременно. Также стоит учесть что для ios нужен обьязательно iphone/ipad и желательно mac. Эмуляторы и приблизительно не дают тот результат который ожидается.
Если веб, то
Шаг 4. Выбираем фронт или бэк.
Если выбрали фронт то html, css, js обьязательно нужно знать.
А с бэкендом тут можна вечность потратить чтоб расписать. Яп любой, даже Си если вы любите изврат. По факту лидерство держат пхп, пайтон, руби, js, .net. также must have выучить sql, http. Еще редисы, рабиты, монгы и прочее будет большым бонусом.
Учтите что чем проще язык, тем больше в нем "специалистов" и тем выше конкуренция. Лучше всего при выборе яп заходите на сайт с вакансиями и смотрите по своему городу. Смотрите на их количество, зарплаты и требования. Это и будет вашей отправной точкой.
А на вопрос сколько времени требуется чтобы выучить нет ответа и он не возможен. Каждый человек воспрынимает инфу с разной скоросттю. И факторов тому огромное количество: заинтересованость, потраченое время в день, гуманитарий/технарь и много много много. Мне часто задают этот вопрос. И я ни разу не смог на него ответить.
Учти в программировании язык это только часть. Другая огромная часть нужных знаеий это базовые принципы, которые действуют во всех языках. Паттерны проектирования, solid. А также базовые конструкции императивных яп: циклы, условия, типы, переменные, константы. Конешно у каждого языка свои особенности, но в общем везде почти одинаково. И именно с этого я бы и начал изучение.