Covid + rynek juniora

Covid + rynek juniora
MM
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:27
0

Hej,
Żeby przedstawić własną pozycję to najpierw omówię ją i poniżej zawrę moje pytanie do społeczności:
Od października zeszłego roku do połowy maja br uczestniczyłem w swego rodzaju programie entry level w kierunku .NET : czyli na początek 3 m-ce praktyk i douczania technologii, jako że wcześniej programowałem hobbystycznie od roku w Javie, i potem praca jako Junior.NET dev. Problem w tym że z uwagi na "trudności w prowadzeniu działalności gospodarczej(...)" mój "entry-level program" został zamieniony na poszukiwanie seniora, a mi podziękowano po wykonaniu moich zadań. Po wypowiedzeniu douczyłem się Angulara w stopniu pozwalającym mi bezproblemowo wykonywać np. zadanie rekrutacyjne w tej technologii (w pracy wcześniej robiłem w backendzie tylko) - no na przykład o takie: https://github.com/mariuszbyahoo/TaskAssignementManager. Poznałem także technologię IdentityServer4 by być w stanie stworzyć program w którym można zarządzać użytkownikami i dostępem do zasobów. Zachęcam do obejrzenia także mojego profilu linked in https://www.linkedin.com/in/mbudzisz/
Dodam że bardziej się odnajduję w pracy która obejmuje bardziej "biznesową stronę" .NET i technologie frontendowe, natomiast słabszy już będę z tematów które dotyczą np. programowania na poziomie komunikacji z podzespołami komputera za pomocą tego właśnie .NET, czy tworzenie rozwiązań niskopoziomowych.

Moje pytanie:
Jakie jeszcze mogą być źródła, z których mogę brać ogłoszenia o otwartych rekrutacjach? Głównie mówię o zagranicznych, ponieważ jak mamy w PL justjoin nofluffjobs mamy praca.pl i pochodne, te monitoruje na bieżąco, a nie ukrywam dla mnie kompletnym obecnie priorytetem jest znalezienie jakiejkolwiek pracy w której mogę kontynuować kształcenie, studia także chętnie, miejsce nie ma dla mnie znaczenia. Proszę zatem o ewentualne porady czy sugestie które mogłyby mi pomóc znaleźć tę "Drugą pierwszą pracę" jako że ta pierwsza nie wypaliła z uwagi na pandemię.

Zobacz pozostały 1 komentarz
MM
Pytanie retoryczne.
Miang
zaraz, czy dobrze kombinuję że nic? współczuję, ale masz od razu radę na przyszłość - normalny pracodawca dałby przynajmniej minimalną
MM
Nieno dali minimalną, :P ja próbowałem brać udział w 2018 roku za darmo w innej firmie, ale to było walenie kotka w bambus - kompletnie nawet nie interesowali się moją osobą (jak zrobi to może dostanie umowe, a jak nie to kij z tym)
Miang
idź na studia, tam sie lepiej nauczysz niż pracując dla Januszy
MM
fajnie by było, ja żałuję że nie wybrałem jakiegoś sformalizowanego kursu czy studiów, bo po takim to mają pracę w kieszeni, czy nawet praktyki bo z praktyk to nigdy się do mnie nie odezwali nawet z zadaniem do roboty... Ale na juniora już parę razy tak xD Chory jest ten świat. Ale tej firmy Januszami nie nazwę - na podaną pomocną rękę nie pluję. Jestem każdemu z nich wdzięczny za pomoc i się cieszę z tego.
SI
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:296
2

Główne pytanie - jakie miasto?

A jeżeli chodzi o szukanie ofert pracy, to poza pracuj.pl, nofluffjobs i justjoin.it, ogarnij sobie workdaye firm do których byś chciał aplikować i monitoruj na bieżąco, ale niestety jest ciężko :)

edytowany 1x, ostatnio: cerrato
Zobacz pozostałe 3 komentarze
PA
Widzisz .net w domenie strony firmowej to wysyłaj cv.
MM
właśnie podobną taktykę stosuję od dwóch miesięcy, póki co albo odpowiedzi typu "Nie bo nie zna pan technologii client-side" a dzisiaj otrzymałem odpowiedź (po półtorej miesiąca zabawy w NG) że nie bo jestem zbyt słaby na niskopoziomowym C# i .NET... Mam nadzieję że tego co to wymyślił ten lockdown gospodarki dorwą napalone rosłe murzyny z metrowymi knagami. Tego im życzę...
PdP
@MarioMJR: pytanie OT: - chodzisz głosować w wyborach?
MM
ofc głosowałem za opcją wolnorynkową, ale skończmy temat polityki bo tu się zaraz pozabijamy...
PdP
no offence, bo niektórzy nie głosują, bo "nie interesują się polityką"
BraVolt
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Warszawa
  • Postów:2918
0

Robisz "bezproblemowo" zadania z Angulara które konkretnie dostajesz na rekrutacjach i o ich pozytywnej ocenie nie dostajesz propozycji pracy?


"Kiedy wiedzieć czy zacząć nauke Springa? bo w czystej Javie to nic ciekawego nie zrobie chyba"
Ein Volk, ein Reich, ein Kwa-Kwa ***** ***
MM
bardzo dobrze że napisałeś w taki wredny sposób, będę wdzięczny jak się wyżyjesz na moim "bezproblemowym" angularze: https://github.com/mariuszbyahoo/TaskAssignementManager mówiłem o tym zadaniu, jeśli chcesz, przejrzyj, wypunktuj, będę wdzięczny :P
MM
a no i tak do informacji, wcześniej powiedzmy że na jeden stołek juniorski było 100 osób chętnych którym taska wysyłano 5ciu osobom a reszcie dziękowano na wstępie, teraz to jest dwa razy tyle (z tego co słyszałem), więc na moje miejsce nawet jeśli ten angular by był niczego sobie (ok, wątpię) to wcześniej było kilku takich jak ja, a teraz jest kilku takich jak ja i jeszcze jeden gościu z dwuletnim doświadczeniem. No i to pokazuje myślę mój tok rozumowania, bo w feedbacku odnośnie w/w zadania nie czepiano się angulara tylko parę rzeczy zdupcyłem po stronie serwera.
OD
  • Rejestracja:około 5 lat
  • Ostatnio:8 miesięcy
  • Postów:15
3

https://github.com/mariuszbyahoo/TaskAssignementManager mówiłem o tym zadaniu, jeśli chcesz, przejrzyj, wypunktuj

  1. Anemiczny model.
  2. Generyczne repozytorium.. w dodatku ta nazwa :D
  3. Twoje testy integracyjne w zasadzie nie są testami integracyjnymi.
  4. Złe zależności na poziomie api-front.

Poczytaj o clean code, frontu nie sprawdzałem, bo dużo do poprawy jest na backendzie. Jaki feedback dostałeś po tym zadaniu?

edytowany 2x, ostatnio: odebra
MM
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:27
0

@odebra: dzięki za info, poniżej odpowiedź którą dostałem, w niezmienionej formie:
Odnośnie Pańskiego wykonania ,, zadania rekrutacyjnego" to przygotował Pan w sposób bardzo profesjonalny jego prezentację, która spełniała założenia funkcjonalne.
Jednak od strony kodu zostało popełnionych kilka błędów.
Mocne strony kandydata, ocenione na plus:

-wykorzystanie .Net Core 3.1

-ciekawa i profesjonalna prezentacja projektu

  • testy

  • generyczne repo

  • warstwa repo z generycznym interfejsem

  • async/await

Zadanie:

  • niepotrzebne komplikowanie logiki przy pobieraniu GetEntites (problem z Joinami)

-niepotrzebne nadużywanie SaveChangesAsync

-niepotrzebny strzał do backendu po taski przy tworzeniu nowej grupy (przez co lecą 404 w konsoli)

I teraz moje pytanie do Ciebie:
Jeśli testy integracyjne sprawdzające czy API zwraca spodziewany kod odpowiedzi + spodziewane response body nie są testami integracyjnymi (czyli że nie sprawdzają poprawności współdziałania komponentów aplikacji), czy możesz dać jakiś przykład testów integracyjnych które wg Ciebie nimi na prawdę są? Ogólnie, co waży w Twoim przypadku o tym że te testy to nie integracyjne?
Co jest źle z pomysłem na generyczne repozytorium?
A propos nazwy to innego pomysłu nie miałem, wiem, śmiszkowe takie xd No ale to jaka będzie lepsza? I od razu minusy mi dajesz za ICRUDRepo ? haahah No przecież dodaje edytuje usuwa i pobiera więc dla mnie schluss, nie wiem jaka nazwa byłaby odpowiedniejsza: "IRepositorable"? xDDD
Anemiczny czyli że słaby model (https://sjp.pl/anemiczny), przykro mi ale nie rozumiem, jaki będzie w tym przypadku mocny a co w tym który widziałeś było słabego?
Złe zależności na poziomie api-front : możesz mi wypunktować o które dokładnie zależności chodzi + co one robią źle?

MM
@tronez: Dziękuje za linka
OD
Szczerze, patrząc na ten styl odpowiedzi, nie chce mi się nawet rozpisywać. Mając rok doświadczenia, powinieneś sobie poradzić z tym co napisałem wcześniej. Życzę powodzenia i może więcej pokory.
MM
No ok, chociaż wiesz... Dziwnie to wygląda w momencie jak zamieszczam feedback od niedoszłego pracodawcy gdzie połowa Twoich minusów to dla nich były plusami i "mocnymi stronami kandydata", pytam o pomoc (np. podaj plik i linijkę gdzie to widzisz) i nagle wychodzi że Tobie się nie chce pisać konkretów bo "nie mam pokory"... No nic, pretensji do CB nie mam. Miłego dnia.
OL
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:28
1

Ze swojej perspektywy dodam, a szukam pracy jako junior czy jak zwał tak zwał od dobrego roku, że o ile w zeszłym kilka rekrutacji przeszedłem włącznie ze spotkaniem w firmie po technicznych zadaniach, tak w tym kiedy obecnie czuję się zdecydowanie mocniej i pewniej w tym fachu to niestety z ofertami jest dramat. Oczywiście wiadomo z czego to wynika, ale sam się już raczej pogodziłem z tym, że trzeba będzie poszukać czegoś innego bo ile można. Plus jest taki, że programowanie sprawia mi mnóstwo satysfakcji i w tym czasie stworzyłem swoją aplikację, którą zamierzam dalej rozwijać, a że być może nie będę tak zarabiał to cóż, życie. :)

SI
No jeżeli masz dobre miasto w lokalizacje wpisaną, to no Trójmiasto to jest generalnie dramat, nie polecam, mamy niby duże firmy ale tylko +5 lat doświadczenia xD
OL
Na ten moment tak to niestety wygląda. Przynajmniej z perspektywy publicznie dostępnych ogłoszeń.
VE
Trójmiasto to tragiczny rynek dla juniorów.
Darck
Szukaj w innych miastach, za granicami
99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:2420
1
Kopiuj
<rant>

Sporo tutaj osób piszę anemiczne to, anemiczne tamto. Ja mógłbym powiedzieć DDD jest grube i spasione! a przepraszam puszyste.

Ja wolę się koncentrować na architekturze i to z niej powinno wynikać czy DDD/ES czy może DAO i transaction script. A sama architektura ma wynikać z wymagań!
A na poziomie architektury wygląda to tak (3 najpopularniejsze opcje, jest więcej):

  1. Aplikacja 3 warstwowa Prezentacja <-> DTO <-> Service (business logic) <-> encje <-> Entity Framework
    Wrapowanie Entity Framework w generyczne repo nie ma najmniejszego sensu. Repozytorium to przede wszystkim interfejs z ładnie wyodrębnionymi metodami. Napisałem nawet kiedyś o tym posta: https://marcin-chwedczuk.github.io/repository-pattern-my-way

  2. "Na Jemmiego Bogarta" CQS: Prezentacja -> Command -> cmd.execute() -> encje <-> Entity Framework i odczyt Prezentacja -> Query -> execute <-> Entity Framework+AsNoTracking lub mikroORM

  3. Opcja atomowa: Hexagonal architecture + DDD. Tutaj waga ciężka, interfejsy repozytorium lądują w pakiecie domain. Implementacja w osobnym pakiecie infrastructure. Można dodać CQS/CQRS a więc:
    Prezentacja -> Command -> findAggregate -> aggregate.costam() -> saveAggregate. Agregaty w najcieższym wariancie nie są nawet świadome istnienia entity framework tylko wypluwają z siebie DTO które następnie warstwa infrastrucktury musi gdzieś zapisać, w tym wypadku agregaty odtwarzamy przez Aggregate.from(DTO). Ewentualnie event sourcing - czyli zapis odczyt strumienia eventow ze wsparciem wersjonowania.

Kopiuj
</rant>

Najlepszą rade jaką mogę dać to jest ta książka: Adaptive Code via C# - pozycja dla początkujących, lekka i pouczająca.


Holy sh*t, with every month serenityos.org gets better & better...
edytowany 1x, ostatnio: 99xmarcin
MM
Dziękuję bardzo za odpowiedź.
Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
1

@0xmarcin: patrząc na to co piszesz to nie wiesz do końca czym jest DDD. Stawiasz to w opozycji do event sourcingu czy też podejścia command-handler jak i piszesz że wolisz się skupić na architekturze która wynika z wymagań- znów, tak jakby to było w opozycji do stosowania (lub też nie) DDD. To samo się tyczy oddzielenia warstwy biznesowej/domenowej od infrastruktury- tu znów to czy stosujesz DDD czy też nie nie ma znaczenia. Poza tym opisujesz DDD czysto technicznie, tak jakby DDD to były tylko repozytoria i agregaty.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
99xmarcin
Nie oceniaj człowieka po jednym poście pisanym w 5 min. Ważny jest przekaz - zbyt dużo zachwytu DDD. Popatrz na to: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition czy ostatnie dyskusje o tym żeby Clean Code schować na strychu. Z DDD miałem do czynienia wystarczająco długo żeby zobaczyć nie tylko jego zalety ale i wady ;)
somekind
Ja tam w tym wątku nie widzę zachwycania się DDD, raczej brak zachwytu dla łączenia anemicznych encji i generycznego repozytorium.
Aventus
@0xmarcin: oceniam to co napisałeś, nie mam innego punktu odniesienia. Poza tym Ty jedyny w tym wątku wspomniałeś DDD. Ja widzę tylko jedno odniesienie do anemicznego modelu, a i to bez wspominanego przez Ciebie zachwycania się.
99xmarcin
@Aventus: zacytuje "nie wiesz do końca czym jest DDD", a w komentarzu piszesz "oceniam to co napisałeś"....
Aventus
@0xmarcin: no tak, oceniam to co napisałeś, i w poście to podkreśliłem- "patrząc na to co piszesz". Zresztą łapiesz za słówka ale już do reszty mojego postu się nie odniesiesz, sprytnie :)
MM
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:27
0

Jak by co, to całe repozytorium wzięło się dokładnie z kursu Gill'a Cleerena "Building ASP.NET Core aplications with ASP.NET Core MVC": moduł 5, video numer 6 "Demo: Creating the Real Repository"
jest tam pokazane jak robi sobie implementację interfejsu IPieRepository na którym dokładnie właśnie używa sobie DbContextu w metodach Get GetAll Update Delete & Create.
Albo ICategoryRepository gdzie implementacja tego interfejsu różni się wyłacznie dwoma - trzema linijkami LINQ-a od interfejsu samego w sobie...

edytowany 3x, ostatnio: MarioMJR
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
1

@MarioMJR: To na przyszłość wiedz, że jeśli ktoś docenia generyczne repozytorium, to jest to lampka ostrzegawcza, że sam nie jest zbyt profesjonalny.
Pamiętaj, że mógł Cię oceniać junior, który ma 3 miesiące doświadczenia więcej niż Ty. Albo nawet junior, który ma 10 x rok doświadczenia.

Jeśli testy integracyjne sprawdzające czy API zwraca spodziewany kod odpowiedzi + spodziewane response body nie są testami integracyjnymi (czyli że nie sprawdzają poprawności współdziałania komponentów aplikacji), czy możesz dać jakiś przykład testów integracyjnych które wg Ciebie nimi na prawdę są? Ogólnie, co waży w Twoim przypadku o tym że te testy to nie integracyjne?

Czy te Twoje testy wysyłają żądania do faktycznie uruchomionej aplikacji? Jeśli tak, to są w porządku.

Co jest źle z pomysłem na generyczne repozytorium?

Jego całkowita zbędność. Kontekst EF jest sam z siebie generycznym repozytorium. Na dodatek lepszym od Twojego, bo niewykastrowanym z funkcji.
http://commitandrun.pl/2016/05/11/Repozytorium_najbardziej_niepotrzebny_wzorzec_projektowy/

A propos nazwy to innego pomysłu nie miałem, wiem, śmiszkowe takie xd No ale to jaka będzie lepsza? I od razu minusy mi dajesz za ICRUDRepo ? haahah No przecież dodaje edytuje usuwa i pobiera więc dla mnie schluss, nie wiem jaka nazwa byłaby odpowiedniejsza: "IRepositorable"? xDDD

Nazwa powinna oddawać to, do czego dany twór służy. Jeśli nie umiesz nazwać sensownie, to albo robi za wiele, albo jest zbędny.
W tym wypadku odpowiedź jest banalna, wystarczyłoby po prostu IGenericRepository.

Anemiczny czyli że słaby model (https://sjp.pl/anemiczny), przykro mi ale nie rozumiem, jaki będzie w tym przypadku mocny a co w tym który widziałeś było słabego?

Anemiczny, czyli nie posiadający zachowania, a jedynie przechowujący dane. To nie jest nic złego, o ile architektura aplikacji jest dostosowana do takiego podejścia.

MM
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:27
0
somekind napisał(a):

@MarioMJR: To na przyszłość wiedz, że jeśli ktoś docenia generyczne repozytorium, to jest to lampka ostrzegawcza, że sam nie jest zbyt profesjonalny.
Pamiętaj, że mógł Cię oceniać junior, który ma 3 miesiące doświadczenia więcej niż Ty. Albo nawet junior, który ma 10 x rok doświadczenia.

Przykro mi to czytać i jeszcze gorzej... Się z tym zgodzić, no bo przecież słyszałem (czytałem tu na forum) o seniorach z dwu - trzy letnim doświadczeniem...

Czy te Twoje testy wysyłają żądania do faktycznie uruchomionej aplikacji? Jeśli tak, to są w porządku.

No tak, tylko że zamiast odpalać je poprzez TestExplorer to trzeba odpalić CMD: dotnet test i bangla.

Jego całkowita zbędność. Kontekst EF jest sam z siebie generycznym repozytorium. Na dodatek lepszym od Twojego, bo niewykastrowanym z funkcji.
http://commitandrun.pl/2016/05/11/Repozytorium_najbardziej_niepotrzebny_wzorzec_projektowy/

I teraz w zasadzie idea Repozytorium staje się dla mnie bardziej klarowna, jako że przybiera ono sensu w momencie gdy np. użyję Dapper'a (tak bynajmniej zrozumiałem)

Nazwa powinna oddawać to, do czego dany twór służy. Jeśli nie umiesz nazwać sensownie, to albo robi za wiele, albo jest zbędny.
W tym wypadku odpowiedź jest banalna, wystarczyłoby po prostu IGenericRepository.

Ok, przyznam że nawet się nie zastanawiałem nad nazwą tego interfejsu, dziękuję za podpowiedź

Anemiczny, czyli nie posiadający zachowania, a jedynie przechowujący dane. To nie jest nic złego, o ile architektura aplikacji jest dostosowana do takiego podejścia.

Od razu mówię z kąd wziął się ten Anemiczny model w praktyce, otóż mi ogólnie wygodniej od czasu gdzie zobaczyłem takie podejście chyba nawet u Julie Lerman na jednym z jej kursów że robiła oddzielnie projekt Web, Data i Domain, w Domain były właśnie powrzucane modele danych, które tylko modelowały encję na potrzeby EF i nic poza tym, mi się to bardzo spodobało bo nie lubię jak mam naćkane pełno rzeczy np. w projekcie Web, tak żeby tam był i kontekst i encje i jeszcze startup program i kontrolerya no i migracje i bóg wie co. Wydaje mi się to bardziej klarowne, przejrzyste i nie muszę grzebać w przeróżnych folderach tylko mam biblioteki i projekt webowy, ew. w przypadku zabawy z NG to mam jeszcze folder ClientApp w projekcie Web. Jak uważasz, to właściwe podejście?

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
3

w Domain były właśnie powrzucane modele danych, które tylko modelowały encję na potrzeby EF i nic poza tym

Problem z tutorialami i takimi example project jest taki ze one generalnie nie mają żadnej domeny ani logiki biznesowej. Są po prostu takim CRUDem/nakładką na bazę danych. I w takiej sytuacji pojawiaja się takie śmieszne, niespotykane w prawdziwym życiu, kwiatki jak model DTO wchodzących/wychodzących z systemu identyczny z modelem "obiektów domenowych" (które w ogóle nie mają żadnej logiki ani zachowania) i identyczny z modelem danych. I do tego jeszcze mappery w obie strony na każdym poziomie. W praktyce te wszystkie modele będą do siebie zupełnie niepodobne, ale trudno na CRUDowym przykładzie to pokazać.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 2x, ostatnio: Shalom
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
1
MarioMJR napisał(a):

Przykro mi to czytać i jeszcze gorzej... Się z tym zgodzić, no bo przecież słyszałem (czytałem tu na forum) o seniorach z dwu - trzy letnim doświadczeniem...

Ale co o nich tutaj czytałeś? Bo na pewno nic dobrego.

I teraz w zasadzie idea Repozytorium staje się dla mnie bardziej klarowna, jako że przybiera ono sensu w momencie gdy np. użyję Dapper'a (tak bynajmniej zrozumiałem)

Zrozumieć mogłeś przynajmniej, ale skoro bynajmniej, to znaczy, że nie zrozumiałeś. To nie o to chodzi, co masz pod spodem, tylko o to architekturę. Jeśli nie masz DDD, to nie masz repozytoriów. Nie wystarczy nazwać klasy, aby stała się czymś.

Od razu mówię z kąd wziął się ten Anemiczny model w praktyce, otóż mi ogólnie wygodniej od czasu gdzie zobaczyłem takie podejście chyba nawet u Julie Lerman na jednym z jej kursów że robiła oddzielnie projekt Web, Data i Domain, w Domain były właśnie powrzucane modele danych, które tylko modelowały encję na potrzeby EF i nic poza tym, mi się to bardzo spodobało bo nie lubię jak mam naćkane pełno rzeczy np. w projekcie Web, tak żeby tam był i kontekst i encje i jeszcze startup program i kontrolerya no i migracje i bóg wie co. Wydaje mi się to bardziej klarowne, przejrzyste i nie muszę grzebać w przeróżnych folderach tylko mam biblioteki i projekt webowy, ew. w przypadku zabawy z NG to mam jeszcze folder ClientApp w projekcie Web. Jak uważasz, to właściwe podejście?

Nikt nie mówi, żeby nie dzielić na projekty i katalogi. Po prostu "Domain" to nie są obiekty opisujące strukturę przechowywania danych w bazie, ale to co Twoja aplikacja robi. Miejsce przechowywania to mniej istotny detal.
I też nie twierdzę, że anemiczny model jest z definicji zły, można go rozsądnie używać w niezbyt wielkich projektach z prostą logiką biznesową. Do crudów jest wystarczający.

Shalom napisał(a):

takie śmieszne, niespotykane w prawdziwym życiu, kwiatki jak model DTO wchodzących/wychodzących z systemu identyczny z modelem "obiektów domenowych" (które w ogóle nie mają żadnej logiki ani zachowania) i identyczny z modele danych.

Ta, niespotykane. :P

Shalom
Ta, niespotykane. -> no CRUDa można dziś wygenerować w 5 minut, nie trzeba żeby ktoś przy nim "pracował", więc raczej niespotykane żeby programiści coś takiego robili... ;)
somekind
Wygenerować? To ile będzie to miało warstw? Bo porządny CRUD ma 11, a takiego to się nie da wygenerować.
MM
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:27
0

Muszę przyznać że nie spodziewałem się bogatej dyskusji z której się czegoś nauczę :)
W każdym razie, przypomniałem sobie książkę którą kupiłem rok temu gdy nawet nie rozumiałem co czytam, to ją odłożyłem na półkę, tzn Eric Evans "Domain-Driven Design" myślę że to dobry pomysł się w niej zanurzyć na jakiś czas.

Shalom
To zależy. W programowaniu się specjalnie nie przyda. Ale jeśli interesują cię wojny ideologiczne, to świetna pozycja od której można zacząć :D Żeby daleko nie szukać, tam wyżej masz przykład gdzie kilka osób nawiązało do DDD, ale w ogóle się ze sobą nie zgadzają...
MM
Rozumiem... I najlepsze jest w tym wszystkim to, że najbardziej im się nie podoba akurat to, za co dostałem plusy na rekrutacji od rekrutujących. Fells so Mindfucked
TD
Pomysły dotyczące implementacji DDD najczęściej wywalają się na pierwszym lepszym zakręcie, a ludzie promujący to podejście na konferencjach pokazują przykłady które równie dobrze można by wygenerować (typu artykuł + komentarze ale z wykorzystaniem 20 klas). Niektórzy nawet się chwalą że nie przebrnęli przez książke Evansa. Przynajmniej tak było kiedy ostatni raz oglądałem cokolwiek na ten temat. Powstało mnóstwo skomplikowanego softu bez DDD i nie sądzę żeby było ono potrzebne do biznesowych CRUDów.
UR
Większość DDD to potworki, które z DDD nie mają nic wspólnego, są interpretacją señor developera zrozumiałą głównie dla niego, bo wymyślił taką strukturę a nie inną.
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
2

@MarioMJR:

najlepsze jest w tym wszystkim to, że najbardziej im się nie podoba akurat to, za co dostałem plusy na rekrutacji od rekrutujących

Jedno z bardziej popularnych pytań na rozmowach kwalifikacyjnych na .NET developera brzmi: "Czym się różnią typy referencyjne od wartościowych?". W 95% przypadków oczekiwaną odpowiedzią jest: "Referencyjne są trzymane na stercie, a wartościowe na stosie." Ta oczekiwana odpowiedź jest bardzo nieścisła, a wręcz błędna. Ale jest to często spotykane uproszczenie, które programiści bezmyślnie powtarzają, a rekruterami są przecież programiści.
To, że ktoś rekrutuje, nie znaczy, że dużo wie albo, ani że jego wiedza jest prawidłowa. Z własnego doświadczenia - kiedyś jeden rekruter przeczył moim słowom, że kontrolery to nie jest miejsce na umieszczanie logiki biznesowej, a drugi przeczył, że właściwości mogą być sealed.

Książkę do DDD możesz sobie czytać, możesz nie. Tak czy siak, to po prostu specyficzny sposób użycia programowania obiektowego. Jeśli jego nie ogarniasz, to książka może Ci zbyt wiele nie pomóc.
Na pewno warto przeczytać, żeby przestać nazywać każe DAO jako "repozytorium". :P

edytowany 2x, ostatnio: somekind
Shalom
rekruter kłócił się, że kontrolery to nie jest miejsce na umieszczanie logiki biznesowej mam nadzieje, że niefortunnie to napisałeś i on się kłócił że to dobre miejsce, a ty twiedziłeś że nie :P
somekind
Przeredagowałem, mam nadzieję, że teraz jest precyzyjniej. :P
UR
Ale dobrze. Niech się wykładają na rekrutacji. Dzięki temu można uniknąć pracy przy potworkach w stylu akcja restowego API z generowaniem pdfa na 2 tysiące linii.
somekind
Tylko to też nie takie proste, bo w SH może Cię rekrutować ktoś, kto nie bardzo ma pojęcie, a później możesz trafić do zespołu ogarniaczy. Mnie się tak udało w tamtym przypadku.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)