Mie imi pare toata problema asta o combinatie din un caz de “the grass is greener on the other side” si faptul ca web development-ul (in special frontend) e intrinsic dificil.
Lucrand cu cateva din aceste tehnologii as vrea sa adaug cate ceva:
Angular de la v1 la v2 a fost o schimbare imensa dar, lucrand cu ambele, era clar ca v1 nu se scala deloc la proiecte mijlocii/mari si, long-term a fost o alegere foarte buna sa schimbe foaia complet. De la v2 abia am observat schimbari in modul de lucru. Avem un proiect inceput in Angular 7 de acum 4 ani si, in toti acesti ani, nu a trebuit sa rescriu nimic strict legat de framework (schimbarile majore pentru noi fiind Typed Reactive forms care inca au backwards compatibility si, la update, le porta frumos pe cele existente si utilitarul toPromise din rxjs care e deprecated dar functioneaza). Proiectul fiind acum pe Angular 16 (si nici schimbarile de signals nu par a fi breaking).
Totodata, backend-ul pentru proiect e in NodeJS, folosind Express si TSED. Fac update la frameworks cam o data la 6 luni. Uneori pateam sa se schimbe 1-2 functii la update, dar niciodata nu mi-am pierdut mai mult de jumate de zi pentru update-ul lor. Granted, dpdv al performantei nu mai recomand un backend in Node.
Ca si limbaj PHP nu pare deloc matur si nici stabil. Limbajul vine cu breaking changes de la o versiune la alta (multe librarii facute pentru 8.0, 8.1, 8.2 nu sunt compatibile daca le rulezi pe versiunea gresita de 8.x). De obicei ai un trade-off intre performanta, ease-of-use si legibilitate a codului… dar in PHP experienta mea personala a fost ca le pierzi pe toate.
Si C# a avut o perioada mai ciudata pe vremea .NET 3.5 cand faceau tranzitia la .NET Core. Totusi, nu am lucrat destul sa cunosc asa bine.
Si de retinut ca si Java are multe versiuni care se schimba de la an la an (programe scrise pentru Java 17 nu merg pe Java 11 sau 8, no backwards compatibility din nou). Pe cat imi place limbajul, Java are cel mai prost package manager conceput vreodata: Gradle (package manager-ul din Java) e un mare black box si niciodata nu stie ce si de ce nu face ce trebuie pentru ca ascunde foarte multa functionalitate sub niste instructiuni simple dar constant deprecated. Si acum, facand deploy la aplicatii PWA pentru Android ma zbat uneori cu el.
Concluzia e ca tehnologiile (in general) se schimba. Si se schimba des. Noi, ca programatori trebuie sa ne adaptam constant deoarece, la cum arata domeniul de AI, schimbarile vor accelera in viitorul apropiat.