Dzień dobry, a może dobry wieczór w zależności kto o jakiej porze będzie to czytał.
Pomijając to, że programista powinien znać język oraz biblioteki, w trakcie tworzenia oprogramowania dochodzą takie pojęcie jak np. cache, aspekty itp. Pojęcia te nie zazwyczaj nie są przedstawiane w kursach programowania. Pojawiają się, ponieważ trzeba rozwiązać jakiś konkretny user-case.
W zależności jak długo tworzy się produkt, coraz więcej takich technicznych zagwostek wychodzi.
Jak zaczynałem swoją pracę nie wiedziałem co to rest. Potem dziwowałem się na słowo cache. A o aspektach nawet nie śniłem.
Tak więc moje pytanie kieruję do bardziej doświadczonych użytkowników forum. Jakie jeszcze "kroki" mogą pojawić się w trakcje tworzenia produktu, a warto je znać.
Z mojego doświadczenia wymienię:
Takich rzeczy jak rest, podstawy baz danych + otoczka około językowa nie rozpatruję, gdyż w każdym poradniku się one pojawiają.
- Cache
- Aspect
- JWT, Oauth
- Rabbit / Kaffka
- WebSocket
- Solenie, hashowanie haseł
- Silnik wyszukiwania, ElasticSearch
- Tworzenie kontenerów - Docker
- Tworzenie monolitu lub aplikacji składającej się z wielu mikro-serwisów
- Transakcje, poziomy izolacji (bazy danych)
Jeżeli ktoś posiada większe doświadczenie, proszę o wypisanie w podobny sposób do mojego. Ewentualnie edytuję post i dodam nowe informacje. Myślę, że pomoże to wielu początkującym, którzy myślą że wszystko wiedzą odnośnie tworzenia aplikacji. A tu zonk, znajomość Javy / C# nie wystarczy bo co odpowiedzieć na pytanie:
"Czy trzeba za każdym razem wysyłać zapytanie do bazy aby dostać odpowiedź?"
- "Panie, niee! Jam senior Java dev, zróbmy zmienna statyczna i do niej wsadzajmy rezultaty, potem będziemy tylko odczytywać"
"Zapisz hasło w bazie"
- Zapisane w postaci "password" - a może by to jakoś zabezpieczyć?
To wszystko wychodzi w trakcie. Do tego potrzeba już doświadczenia, które pokaże możliwe do napotkania problemy.