Bem, o título já diz tudo. 1- Especialista ou Generalista A grande verdade por trás dessa questão é que é impossível você ser qualquer um dos dois. Engenharia de software envolve várias ferramentas e serviços, que sempre serão renovadas. Um fato é, o “full-stack” pode ser cobiçado por empresas, mas seu o salário também será menor, até porque quem faz tudo, não faz nada (100% opinião pessoal né, hahahaha). Outro fato, a trilha de um front-end é uma coisa insana, de back-end também e tem pessoa que fala que full-stack precisa saber mobile ainda (pois front é o que ta na frente, pode colocar desktop, TV e até relógio), aí fica hard né. Mas e aí, se especializar em que? Linguagem é só sintaxe, você precisa de ferramentas (frameworks, libs, etc), de serviços (clouds, database, etc) e como já dito, essas coisas também evoluem e mudam, logo a jornada é infinita. O melhor a se fazer é definir a SUA stack e ser conscientemente nela, cloud por cloud é cloud, mas se você se sente bem com Azu...