Projektowanie większych aplikacji - skąd czerpać wiedzę?

0

Cześć,

na co dzień pracuje raczej przy bazach danych, a w fullstacka na Laravelu bawię się po pracy w wolnej chwili. Przerobiłem pełno tutoriali, znam dokumentacje Laravela praktycznie na pamięć, kilka razy przeczytałrm vue.js, bootstrap 3/4 również nie stanowi dla mnie tajemnicy. Wizytówki, proste serwisy społecznościowe/randkowe gdzieś tam klepie sobie testując różne pomysły i rozwiązania (niestety nigdy tego w 100% nie kończę bo zaraz przychodzą nowe pomysły, albo poprzez zdobyte doświadczenie dostrzegam swoje błędy i zamiast coś naprawić buduję coś nowego).

Problem jednak zaczyna się przy jakiś bardziej ambitnych projektach z wieloma współzależnymi od siebie modelami i sporą bazą danych. Nie mam pomysłu jak zaprojektować coś większego, jak to podzielić na modele, odpowiedzialność i zaprojektować bazę danych, żeby na końcu działało tak jak chce. Niby wszystko rozpisuje sobie ręcznie, co się z czym ma wiązać w relacjach, jednak zawsze, kiedy już zbuduje sporą część backendu i wiele rzeczy niby działa to pojawiają się pewne use casy, których nie przewidziałem, i których nie mam pomysłu jak rozwiązać inaczej niż przeprojektować całą architekturę i zacząć od zera i tak w kółko. Oczywiście za każdym razem jest jakiś progres, jednak tempo w jakim to się dzieje i ciągłe pisanie metodą prób i błędów wydaje mi się mało wydajne.

To tak ogólnie na czym stoję :P

**Teraz pytanie do Was, czy znacie jakieś ciekawe materiały (filmy, artykuły, książki) na temat tego jak podejść i ugryźć grubsze projekty od strony zaprojektowania całej architektury (to właściwe określenie na podział problemu na modele, relacje, odpowiedzialnośći i projekt bazy danych?)? **

Programowanie wbrew pozorom to całkiem rozległy temat i będąc totalnym samoukiem, bez kolegów z fachu, czy pracy przy tego typu aplikacjach czuje, że stanąłem w miejscu i potrzebuje od Was jakiś wskazówek, gdzie teraz iść bo nie umiem zaspokoić się google, lub źle szukam :P

Dodam, że nie mam możliwość w obecnej chwili zmienić pracy i łapać doświadczenia u Januszów, ze względu na UoP na czas nieograniczony i perspektywę zakupu mieszkania w ciągu najbliższych miesięcy.

Mam nadzieje, ze dobry dział wybrałem bo chodzi mi głownie o sugestie w aspekcie aplikacji internetowych, najlepiej opartych na Laravelu.

1

poruszyłeś bardzo trudny temat. Nie ma jakiejś listy rzeczy, które są receptą. Do tego potrzeba doświadczenia i tego, by podczas pisania tego typu aplikacji popełniać błędy i z nich wyciągać wnioski. Nie zaprojektujesz z góry całej aplikacji, bo w każdej chwili może coś się zmienić. Czy to rynek, czy oczekiwania klientów, czy Twój pomysł na aplikację. Możesz wpisać w YT frazę "microservices architecture", ale tam też jest masa błędów do popełnienia.

Aby być przygotowanym na jakieś niespodzianki, to dobrym pomysłem jest wyciąganie abstrakcji zaraz po tym, gdy problem/wyzwanie się pojawi.

0

Nie oczekuje oczywiście gotowej recepty, czy rozwiązania z pomocą, którego na ślepo zbuduje każdą aplikację bo zdaje sobie sprawę, że to wymaga mnóstwo doświadczenia i praktyki, a czasami nawet współpracy kilku bardzo doświadczonych osób.
Po prostu zaczynam mieć wrażenie, że nie sama w sobie znajomość narzędzi już mnie ogranicza, co brak doświadczenia przy tworzeniu czegoś bardziej złożonego, czemu nie raz towarzyszy frustracja, kiedy okazuje się, że po raz kolejny pół kodu do poprawki. Pomyślałem, że na pewno dużo osób było w tym miejscu i może ktoś trafił kiedyś na jakiś fajny guide co tu dalej robić i gdzie iść :P Rozumiem jednak, że zabawa dopiero się zaczyna i tak naprawdę dopiero teraz zaczynam uczyć się programować, a nie tylko używać młotka i siekierki :)

Dzięki za odpowiedz, odciągnąłeś mnie nieco od pomysłu, że może zaczynam wymyślać koło na nowo :P

0

nie no bardzo ciekawe pytanie zadałeś, ale nie ma jednoznacznej odpowiedzi. Dużo też zależy od tego co chcesz napisać. Może to być monolit (a dobry monolit nie jest zły), możesz pójść w stronę mikroserwisów, albo programowania sterowanego wydarzeniami itp.

Z góry nie przewidzisz wszystkich problemów oraz tego jak zmienią się wymagania. Myślę, że dobrze podzielić sobie coś takiego na iterację i refaktoryzować kod na bieżąco. Nie ma innego wyjścia. Jak pojawia się np 3-4 poprawka w tym samym albo podobnym miejscu - otestuj to ile się da :P jak w jednej metodzie dodajesz już któryś raz kolejne linie kodu - wyciągnij abstrakcje z tego itp... Operuj raczej na interfejsach, poczytaj o DDD...

1 użytkowników online, w tym zalogowanych: 0, gości: 1