Попробую привести пример из области не связанной с ИТ : футбол, как стать хорошим футболистом? Здесь неглавное научиться жонглировать мячом, а важно понимать стратегию, расставлять план игры, создавать нужный настрой, все это приходит с опытом. Нельзя взять какой-нибудь учебник и просто прочесть там, это нужно прочувствовать. Так вот, к чему я все это - основной способ становления мышления - это опыт (отсюда и разговоры про институтские годы, в это время происходит вырабатывание некоторых общих представлений). Чем больше опыта - тем лучше. Нужно писать свой код (желательно чтобы его кто-нибудь оценивал) и читать чужой (например на github).