Tak mi się przypomniało (pewnie nie pierwszy raz).
Ponad 20 lat temu dostałem prace w polskim software house.
Już pierwszy dzień to był szok, a potem było tylko lepiej:
Codziennie tony pożarów, projekty z kilkukrotnie poprzekraczanymi terminami, telefony wściekłych klientów, którzy nie tylko przestają płacić, ale i grożą sądem - normalka.
Serwisy dziurawe jak sito -> dzieci się uczyły jak robić SQL injection na naszych stronach (serio - na pierwszej konferencji IT, na której byłem, dowiedziałem się tego od ludzi).
Ogólnie miazga. Repozytorium kodu to folder współdzielony -> samba - trzeba pilnować, żeby nie nadpisać zmian kolegi (średnio 5 razy dziennie awantura z powodu nadpisania.)
(Co jakiś czas korci mnie, żeby (na podstawie tych doświadczeń) napisać książkę dla programistów -> jak wszystko zrobić źle - od zarządzania po implementację i deployment).
Oczywiście byłem po studiach (w odróżnieniu od większości programistów tej firmy) i g**no wiedziałem (doświadczenie: to jeden mały studencki startupik), jednak miałem pomysły jak część rzeczy usprawnić (od organizacji projektu, do zmiany pewnych praktyk programistycznych).
Paru innych gości też miało różne pomysły - bo np. przeczytali choć jedną książkę z dziedziny IT.
I wtedy zawsze pojawiało się magiczne:
I wbrew temu co wam się pewnie wydaje... to nie management. Takie podejście głównie reprezentowali inni programiści.
Słyszałem ten tekst później wielokrotnie, od różnych programistów, w różnych firmach, ale nigdy już tak bardzo było dobrze
nie było odklejone od rzeczywistości.
Wiedziałem też już, jak bardzo łatwo ludzie potrafią przyzwyczaić się do "this is fine".
Tytuł mnie zaciekawił, bo wiadomo, że java obsysa
Zaczyna się dobrze: od polewu z javowych stacktraców, ale potem autor narzeka na to, że nie może dodać null
do int
:-)
Z mojego punktu widzenia wadą javy jest to, że w ogóle ten null
jest. Tym niemniej, to całkiem dobrze, że nie można dodać tego null
do Integera
. Słabo natomiast, że w javie można dodać null
do Stringa
(to jest mały, ale jednak WTF). Strasznie mi przykro, że java nie jest totalną pagologią jak JS albo PHP w tym temacie.
Jest krytyka rozwlekłej składni (przykład mapy) - słusznie.
Powolne streamy, jak najbardziej słuszna krytyka, z tym że to nie jest takie proste. Tzn. nie zawsze jest wolniej, zależy co się robi, ale na pewno streamy nie muszą być w ogóle wolniejsze, można tu dużo w JVM poprawić. Na pewno dużo poprawiono w Graal (ale nie mierzyłem sam - nie wiem jak to obecnie wygląda). Z drugiej strony jeśli się zastanowić ile razy musiałem przepisać streamy na for i tablice, z powodu wydajności to o ile dobrze pamiętam, to mniej niż raz.
Fragment o zmianach w DB, HikariCP - to jakiś WTF, nie wiadomo co właściwie jest problemem, i nie wiadomo dlaczego prezentujący w ogóle myśli, że connection pool miałby coś pomóc. Akurat opisywany przykład to coś co normalnie robi się na jednym połączeniu. Nie wiadomo dlaczego jakaś kolejka miałaby pomóc. Raczej słaby kod i brak umiejętności diagnozy problemu (profilery w javie są relatywnie proste w obsłudze, ale trzeba wiedzieć, że są).
interfejs
i metody default
- słuszna krytyka, dokładnie pokazuje jak starzeje się język i jak java robi się skomplikowana (twórcy nie chcieli wielodzedziczenia, więc mają wielodziedziczenie i dodatkowo jeszcze kilka słów kluczowych i dziwny warunków (choć tak porypane jak w C++ to nadal nie jest). Tym niemniej, akurat te metody default
to rzecz, której IMO nawet się nie dostrzega (przeszkadza prawie w ogóle).
pom.xml
i Maven - w zasadzie nie wiem o co prezentującemu chodzi, akurat mavena nie lubie, ale trzeba przyznać, że zależności to jedna z największych zalet javy - masz 100 bibliotek używanych w korpo kobyle, dodajesz sto pierwszą i nic się nie sypie - rzecz do której się przyzwyczaiłem, i luksus o którym sobie przypominam zawsze jak posypie mi się projekt w TS/JS, Scali czy Haskellu.
Chciałbym opowiedzieć o kilku swoich doświadczeniach związanych z tym jak wygląda programowanie w Javie okiem wieloletniego doświadczonego programisty PHP.– ...
https://www.youtube.com/watch?v=dmbUE5A-1gcpopularność do PHP bierze sie tylko z tego że łatwo w nim zacząć "coś" robić - a to często selekcjonuje fanów tego języka, u których niechęć do nauki pozostaje i nie potrafią opanować nić po za nim
Ja tam stoję na stanowisku, że język wystarczy, że jest wystarczająco dobry i PHP jest wystarczająco dobry do wielu zastosowań - tj. do małych i średnich projektów. Pracuję trochę w zespołach integrujących różne rozwiązania i szczerze mówiąc nie widzę różnicy jakościowej - zarówno kod pisany w PHP jak i Javie ma bugi. To co na pewno widzę to, że kod w Javie powstaje znacznie wolniej niż w PHP, przez co zapewne PHP ciągle jeszcze żyje, bo obiektywnie faktycznie Java jest lepszym językiem.
Algorytmy youtuba podpowiedziały mi to
Fajna prezentacja, chociaż normalnie strasznie jestem cięty na tzw. low levelowców.
A jakbym dostał takie pytanie na interview to pewnie bym wstał i wyszedł.
https://cpponsea.uk/---*(char*)0 = 0; - What Does the C++ Programmer Intend With This Code? - JF Bastien - C++ on Sea 2023int main() { *(char*)0 = 0;}This i...
https://www.youtube.com/watch?v=dFIqNZ8VbRY@Satanistyczny Awatar: Akurtat jeśli chodzi o bootloader to nawet w BIOSie, który jest już przeżytkiem od dawna (w UEFI już jest API w C do wszystkiego) to chyba obeszłoby się bez pisania do pamięci, bo obsługa dysku jest wystawiona w API na przerwaniach. Myślę, że obsługa PCI, i ogólnie MMIO i DMA na poziomie strowników systemowych to lepszy przykład. Współcześnie to chyba tylko firmware/OS i mikrokontrolery.
Nieźle namieszałeś w tym swoim komentarzu, w którym zresztą przyznałeś mi rację mimo że zaczynasz go i rozwijasz jakbyś chciał obalić to co napisałem.
Tak mi się ostatnio przypomniało narzekanie na nie fair rng w tetrisie (@furious programming ) i pomyślałem co by było gdyby zrobić całkiem złośliwego tetrisa - "losuje"
najbardziej niepasujące klocki (w zależności od tego co już jest na planszy).
Jak zwykle! - ktoś już to zrobił:
Opis
https://qntm.org/hatetris
Gra
https://qntm.org/files/hatetris/hatetris.html
W sumie - bardzo fajna i trudna gra logiczna.
specjalny migający klocek o wymiarach 1x1
Był też taki wkurzający "plus" również nieistniejący w normalnym tetrisie.
Ciekawa byłaby też gra 2-osobowa, gdzie jedna osoba gra w tetris, a druga steruje tym jakie klocki dostaje ta pierwsza.
Specjalnie dla javowców (i innych dziwnych ludzi używających java.util.collection
)
Włączacie video poniżej.
Zatrzymujecie sobie na czas zagadek i staracie się odpowiedzieć, bez zaglądania do dokumentacji i sprawdzania w IDE.
Jak macie więcej niż 40% błędnych odpowiedzi to zakaz korzystania z java.util.*
, Zresztą, wyjdzie wam to na dobre.
Możecie przećwiczyć w pracy na kolegach/koleżankach - zróbcie sobie sesje z tym wideo.
The Java Collections Framework is the most widely used API – probably in your application too. You use it all the time, but do you really know your way aroun...
https://www.youtube.com/watch?v=w6hhjg_gt_MNo i aplikacje też. Pamiętacie, jak odtwarzacze MP3 z czasem ewoluowały w odtwarzacze wszystkiego z opcją wypalania płyt? ;)
@jarekr000000: kazda dlugo zyjaca rzecz ma ten sam problem ;). @wartek01: chyba przespalem ten moment, zatrzymalem sie na tym ze mp4 i filmy szlo ogladac :D
Nie ma sensu dodatkowe filtrowanie danych po stronie frontu. To dodatkowy kod, który...
to openSession() i closeSession() to tragedia: Kopiuj public List<Book> findAll() {...
to openSession() i closeSession() to tragedia: Kopiuj public List<Book> findAll() {...
marian pazdzioch napisał(a): Mogę powiedzieć jak jest u mnie. Każdy Java-owiec beken...
marian pazdzioch napisał(a): Mogę powiedzieć jak jest u mnie. Każdy Java-owiec beken...
marian pazdzioch napisał(a): Mogę powiedzieć jak jest u mnie. Każdy Java-owiec beken...
marian pazdzioch napisał(a): Mogę powiedzieć jak jest u mnie. Każdy Java-owiec beken...
samuraii napisał(a): Rozmowa techniczna - loguje się na spotkanie a tam 5 chłopa sie...
samuraii napisał(a): Rozmowa techniczna - loguje się na spotkanie a tam 5 chłopa sie...
samuraii napisał(a): Rozmowa techniczna - loguje się na spotkanie a tam 5 chłopa sie...
loza_prowizorycznaZ drugiej strony co to za framework do testów UI co wstrzymuje blokadę ekranu... Pewnie jakaś java.