Zgadzam się ze wszystkim co napisał @LukeJL wyżej, tylko dodam jedną rzecz.
Nie rozumiem jak można siedzieć 5, 10 albo więcej lat w programowaniu i pisać takie g**no
Gównie dlatego, że nie jesteś oceniany ani rozliczany przez innych programistów - jesteś oceniany i chwalony przez PO, Scrum Masterów, Managerów i innych niekompetentnych ludzi (w dziedzinie programowania). Wystarczy że nabijesz 50 story pointów co miesiąc robiąc największe g**no w kodzie i staniesz się super gwiazdą każdego korpo. Łatwo jest się wpasować w takim środowisku: nie musisz się uczyć, nie musisz nic poprawiać, nie musisz pisać testów ani refaktorować. Nabij 100% niezdrowego coverage (czyli testy które nigdy nie failują, nawet jak są bugi); dostań dużo approve'ów PR'ów mimo że nikt nie robi review; jak są bugi to przedstaw to jako plus QA'ów, że tak dużo bugów znajdują; i po co stres związany z poprawnym utrzymaniem projektu, skoro możesz siedzieć w swojej strefie komfortu. Nie musisz nigdy się uczyć o Clean Code, TDD, prawdziwym Agile (a nie tylko z nazwy), DDD, etc. Jeśli ktoś nie czyta książek, nie robi coding katas, coding dojos, nie rozwija się w innych bibliotekach i językach; to jak mógłby poszeżyć swoje kompetencje? Będzie dopisywał kolejne linijki do już nieutrzymywalnych projektów, jednocześnie będąc chwalonym za kolejny dobry sprint.
Natomiast kiedy na prawdę chcesz zrobić dobry kod, to na 99% jedyne uznanie jakie dostaniesz to jest swoje własne, po tym jak odwalisz kawał dobrej roboty; albo nieliczne firmy jeszcze mają drugiego takiego który to doceni; ale raczej nie. Ludzie w Twoim zespole i nad Tobą nie docenią że poprawiłeś testy, że usprawniłeś rozwiązanie, że sprawiłeś że jest bardziej usable, bardziej loosly-coupled, mniej podatne na bugi czy defekty. To jest jeszcze dodatkowo frustrujące, bo nawet jak usprawnisz jakiś moduł, tak żeby był dobry; to nie Tobie się zwróci inwestycja za ogarnięcie go; tylko przyjdzie ktoś inny, i korzystając z tego że kodzik już jest dobry znowu dostarczy szybko task, nabijając więcej punktów reputacji u swojego PO; najpewniej pogarszając produkt znowu.
Także możesz zostać w strefie komfortu i zostać takim "senior juniorem" (czyli junior ze sporym stażem), albo możesz się rozwijać nadal, ale walcząc z przeciwnościami.