Как разобраться в архитектуре чужого приложения?
Несколько месяцев - это ничто. Продолжайте обучение.
Но вообще никто не читает код просто так, как книгу. Обычно ты получаешь задание решить какую-то проблему, находишь точку входа в эту проблему и дальше "разматываешь" код до места возникновения проблемы. Другой разговор, что для этого бывает необходимо половину проекта перелопатить.
Приветствую
Как вариант, развитие понимание архитектуры приложения:
1. Если вы разбираетесь, что такое наследование и т.д. из ООП, то скачиваете архив с кодом приложения из github: а) вначале приложение с тематикой вам знакомого, пример приложение планировщик, чата и т.д., б) затем приложение уже посложнее.
2. Открываете программу для визуализации кода в диаграмму, к примеру interprise architector и т.д. 
3а. Разбираетесь с указанным в п.1. приложением на полученной диаграмме. Изучаете, что откуда и на что ссылается. Гуглите, если чтото непонятно. Читаете приложенное описание к проге.
3б. Изучаете сам код.
4. Ответьте себе, почему разработчик именно так сделал? Что можно лучше сделать?
5а. Напишите свои вопросы разработчику, (если разработчики из другой страны, то если вы английский не знаете - гугл переводчик в помощь), можно те же вопросы задать, к примеру, почему он так сделал? и т.д. Часто отвечают.
5б. Поищите в интеренете, может есть статьи с описанием этого приложения, в т.ч. и его архитектуры и т.д.
6. Почитать книги по архитектуре.
И так "очень много" приложений разобрать. Понимание придет, по крайне мере опыта наберетесь.