Co z tego, że koduję niczym mid-level jak w temacie wiedzy domenowej jestem juniorem i potrzebuję zapewne paru lat, żeby powiedzieć, że dobrze czuję temat/działanie systemu jako całości.
To trochę przesada, nie wiem w co chciałbyś wdrażać sie kilka lat. Zwykle to kwestia kilku miesięcy, a cokolwiek więcej jest niemożliwe do utrzymania w głowie ;) Zresztą czy w ogóle jest sens? Na przykład od roku nie było żadnych zmian w jakimś module/serwisie i raczej nie zapowiada się żeby były potrzebne, a już na pewno nie na poziomie architektury, może co najwyżej jakiś prosty bugfix w jednej czy dwóch klasach. Więc czy jest sens siedzieć i się w niego "wdrażać"? YAGNI. Jak będzie trzeba to się wdrożysz.
Tak, żeby projektując jakiś element, mieć jakiś obraz całości, żeby wiedzieć co może mieć jaki wpływ na inne elementy systemu.
Tak to chyba nigdy sie nie da, no chyba że jesteś twórcą i jedynym architektem i głównym developerem tego kodu. W prawdziwym życiu jak kilka miesięcy nie zaglądałeś do jakiegoś serwisu to:
- już nie pamiętasz dokładnie jak to było zrobione i musisz sobie przypomnieć
- doszło tyle zmian od innych developerów że i tak to działa inaczej niż pamiętasz
Przecież gdybym teraz zmienił projekt i poszedł rozwijać - powiedzmy - system do zarządzania rezerwacji lotniczych - to znowu jestem kompletna zielonka.
To nie do końca tak jest. Jasne, na rezerwacjach sie nie znasz, ale czym się niby różni stuknięcie do webserwisu getReservationDetails
od stukniecia do jakiegoś zupełnie innego serwisu w zupełnie innej domenie? Niczym! Jak dam ci jakiegoś klienta z jasnym interfejsem to jaką ci zrobi różnicę co dokładnie ten klient robi "biznesowo"? To jest trochę jak z wzorcami projektowymi -> pewne mechanizmy pasują wszędzie i nie ma znaczenia że raz masz Factory które tworzy warzywa, a drugi raz masz Factory które robi parsery brainfucka.
Wyobraź sobie że masz poprawić skalowalność robienia tych twoich rezerwacji lotniczych. Przychodzą requesty ale czasem jest spike i serwis nie wyrabia i się dławi. Załóżmy że serws po prostu dostaje jakiegoś POSTa a potem woła sobie jakiegoś klienta który przekazuje tą rezerwacje dalej, ale ta operacja trwa długi. No to nic trudnego, stawiasz jakąś kolejkę, kontroler wrzuca eventy do kolejki a potem N nodów czyta z tej kolejki i wykonuje te "długie" operacje asynchronicznie.
A co jeśli zamiast zrobienia rezerwacji lotniczej te requesty to zupełnie co innego? Czy ma to jakieś specjalnie znaczenie? Bardzo mozliwe że nie ma ;)
Generalnie twoje obserwacje są dobre -> na poziomie mida czy seniora nie ma w zasadzie czegoś takiego jak "wdrożenie technologiczne", bo niby jakie nowinki ktoś tam może mieć? ;) Wszystko już pewnie widziałeś, a nawet jak mają bibliotekę X a ty znasz Y, to idea jest pewnie taka sama a interfejsy i tak są opakowane "firmowymi wrapperami", więc w zasadzie to bez znaczenia. Główny problem stanowi ogarnięcie domeny. Ale tak jak pisałem wyżej, robi sie to na zasadzie "co potrzebujesz" i zdobywasz tą wiedzę w trakcie pracy.
Zmiana dziedziny to oczywiście konieczność nauki nowej, ale czy to taki problem? To jest przecież właśnie ciekawe! Wielu ludzi właśnie dlatego zmienia pracę, bo są znudzeni tym co robią.
Są domeny gdzie jest masa procedur i standardów i faktycznie znajomość dziedziny to spory plus (np. systemy krytyczne, space, defence, czasem też finanse i banki) ale nie jest to reguła i nie jest to raczej "must have" tylko "nice to have". Zresztą co zrobisz jeśli zwyczajnie nie ma na rynku takiego unicorna którego szukasz? :)