Никто вам точно не ответит. Никто не знает ваших обстоятельств, способностей, желания учиться. Никто не знает насколько глубоко вы будете изучать эти темы и насколько тщательно прорабатывать их. Дать точные сроки вам смогут, только если вы будете следовать какой-то отработанной учебной программе. И то даже после таких программ люди выходят с разным уровнем знаний и умений. Все зависит от вас. Да и не нужно знать все эти темы для того, чтобы начать работать.
Главная ваша проблема (и проблема других таких же людей, которые решили научиться программировать) заключается в том, что вы почему-то считаете, что сможете обучиться программированию по книгам. Прочитал книжки и стал программистом! Это обманчивый путь, так как программирование — это чистая практика. Теория тут нужна только тогда, когда нужно решить какую-то практическую трудность. Чтобы читать книжки по алгоритмам, ООП и базам данных, нужен уже какой-то опыт, иначе всё, что там написано, пройдет мимо и забудется.
Еще часто бывает, что задачи, с которыми сталкиваешься, не описаны в книжках, которые ты прочитал или хотел бы прочитать. Довольно часто решение задачи находится в интернете, а не в книгах. Это я к тому, что нужно начинать с практики и прорабатывать теорию под конкретные задачи. Вот вы написали что-то, вот застряли в каком-то моменте с БД, не знаете, как правильно сделать. Ищете в интернете или в книге, как решается эта проблема и решаете её. В итоге получаете и знание, и опыт, который это знание закрепляет.
Если вы знаете, куда хотите пойти работать, узнайте, какие там задачи решают и цельтесь сразу туда: составьте себе список таких задач и попытайтесь решить их самостоятельно. И заодно сузите теоретический минимум. Умение решать конкретные задачи намного важнее горы теоретических знаний.