mwiacek.comColorColor | Mobile  
Jakość, optymalizacja, Agile, i inne mądre słowa - nowa świecka religia w pełnej krasie (2021)
Submitted by marcin on Tue 23-Nov-2021

polski
polski blog
salon24.pl



Ludzie czują uniesienia albo potrzebę „walki” z bardzo różnych powodów. I tak mamy różnego rodzaju polityczne przepychanki (gdzie często i gęsto popieramy „swoich”, dzięki którym osiągamy jakieś zyski), mamy walkę klasową i ideologiczną (prawactwo, lewactwo i inne trudne słowa), kłótnie o ostatnie sztuki w czasie „promocji”, o bombelki w przedszkolu, czy wreszcie o technologię. W IT przez lata dało się zobaczyć „wojny” między zwolennikami ZX Spectrum i Atari, Amigi i PC, C64 i Amigi, Netscape i Internet Explorera, IE i Firefoxa, Androida i iOS, Windows i macOS, Javy i C, Javy i Kotlina, etc. To poniekąd przypomina wyznawanie pewnej religii, albo dokładniej mówiąc nowej świeckiej religii - mamy wojny, mamy też określonych „bożków”. Pomyślałem, że przyjrzę się tym ostatnim.

Wydajność

Każdy z nas podświadomie chciałby korzystać ze sprzętu, który daje nam wynik w możliwie najkrótszym czasie. To normalne, zdrowe i ludzkie, i tak mocno wykorzystywane od lat przez sieci handlowe, które (mój ulubiony przykład) potrafiły „tworzyć” np. procesory Pentium działające bodajże z prędkością 8Ghz (mnożono prędkość jednego rdzenia przez ilość rdzeni, a odpowiedni dowód trzymam w tekście „Kup pan wieżę Eiffla”).

Podobnie jest z producentami, którzy potrafią sponsorować teksty zawierające frazy „Dzięki standardowi Intel EVO będziesz mógł pracować nawet 3 razy szybciej niż dotychczas” (chciałbym to zobaczyć w sytuacji, gdy na co dzień miałbym Threadrippera czy Ryzena 5950x) lub podbijać wyniki benchmarków (gdy firmware wykryje, że uruchomiona jest aplikacja testująca, włącza najwyższe taktowanie elementów).

Inną metodą jest oszukiwanie nas np. na częstotliwości odświeżania obrazu (przy ekranach 120Hz czy 240Hz wydaje nam się, że wszystko jest bardzo płynne) albo nazwach (np. podawanie, że mamy model x, ale „zapominanie”, że skonfigurowany został z bardzo niskim poborem mocy maksymalnej, a przez to z niską wydajnością).

Mamy też tak popularne wykorzystywanie komponentów, które nie mają zapewnionej dobrych warunków pracy, i przez to osiągają maksymalne osiągi przez krótki czas, a potem zwalniają (zjawisko throttlingu, które nie służy trwałości, co udowadniałem w tekście „Wszystko się zużywa?”). Zapytano mnie zresztą jakiś czas temu ogólnie, czy w laptopie lepiej wybrać i5 czy i7, a mnie od razu na myśl przyszły laptopy z throttlingiem nawet z najtańszym procesorem. Czy w tej sytuacji opłaca się dopłacać do elementu droższego, który i tak nie będzie mógł rozwinąć skrzydeł?

Bardzo ważne jest tu przeglądanie recenzji z portali trochę bardziej fachowych, gdzie jasno podaje się takie parametry jak temperatury pracy, częstotliwość taktowania pod obciążeniem czy wreszcie charakterystyka pracy wentylatora (przy czym, żeby była sprawa jasna - warto poczytać kilka recenzji, gdyż w ramach jednej serii możemy się spotkać z bardzo różnymi elementami, a te mogą mieć inne charakterystyki). Przykłady takich portali: techradar.com, anandtech.com, techpowerup.com, notebookcheck.net, laptopmedia.com czy polski purepc.pl.

Jest też inny aspekt całej sprawy - może się zdarzyć, że większa moc jest nam w ogóle niepotrzebna. Wiem, że to może dziwne stwierdzenie, ale prawda jest taka - operatorem sprzętu jest człowiek, i wielu typowych sytuacjach nie musi on mieć reakcji rzędu 1ns (nie zmienia to faktu, że obecny sprzęt zawiera denerwujące lagi, i o tym też już pisałem).

Oglądanie filmów? Przy FullHD wystarczą nawet tanie proste procesorki typu Intel Pentium N.

Pisanie tekstów? Też.

Komputer do uruchamiania aplikacji w kasie w sklepie? Litości, tam to nawet kalkulator byłby wystarczający.

Tutaj dochodzimy do innego ciekawego tematu - słabsze (ale wciąż więcej niż wystarczające) układy są często parowane ze słabymi ekranami, „dyskami” eMMC, czy małą ilością RAM. Do tego dochodzi Microsoft Windows, który skutecznie potrafi „zamulić” najmocniejszy sprzęt.

Do czego to prowadzi?

Na rynku mamy bardzo dużo maszyn, które reklamowane są jako „najlepsze”, „najszybsze” i „najlepsze”... a potencjalnie mogą zirytować.

Podam jeden przykład - gdy testowałem Acera Swift 1 z 2019, to widziałem, że sam projekt jest dobry, wykonanie bardzo dobre... ale 4GB RAM powoduje, że ten sprzęt nadaje się głównie do specyficznych zastosowań... albo wymaga zmiany OS na coś innego (kiedyś pisałem o tym, że im bardziej wydajny sprzęt, tym gorsza jest jego obsługa pod Windows - nie oznacza to jednak, że na słabym jest inaczej). W recenzji z maja i uwagach późniejszych wskazywałem również na to, że ekrany zastosowane przez Acera mają swoje braki, co również wzbudziło moje zdziwienie (po co bowiem komuś laptop, na którym źle się patrzy na obraz?). Tu dochodzimy do kolejnego punktu, jakim jest...

Jakość

Poniekąd mają ją wszyscy (bez niej urządzenia z milionami czy miliardami tranzystorów nie mogłyby się nawet włączyć), tylko że nie wszyscy rozumieją ją jednakowo - dla niektórych coś o dobrej jakości to urządzenie / oprogramowanie spełniające pewne zdroworozsądkowe kryteria, a innym wystarczy, że mamy tam zgodność z czymś, co opisano w opasłych bibliach pod tytułem „specyfikacja wymagań”.

Przykład?

Kilka ładnych lat temu mieliśmy wysyp komputerów z naklejką „Vista Ready”. Teoretycznie wszystko było jak należy, w praktyce sprzęt zamulał bardziej niż urządzenia kilkuletnie, bo ilość RAM-u była tak niewystarczająca, że mieliśmy do czynienia z ciągłym swapowaniem (zapisywaniem części zawartości RAM na dysk i jej doczytywaniem z tego dysku).

A jak wygląda to w przypadku oprogramowania? Kiedyś zdarzało się, że ktoś (klient) pisał „program ma działać w rozdzielczości 1024x768”, a ktoś inny (dostawca) upierał się, że jak mamy 1025x679 czy 1920x1200, to już nie trzeba tego uwzględnić. Teoretycznie druga strona miała rację... ale świat jest taki, że idzie do przodu, i często nikogo nie obchodzi, co jest na papierze, tylko każdy chce zdroworozsądkowych rezultatów. I tym sposobem doszliśmy do sytuacji, że z jednej strony wymaga się dokładnych dokumentacji specyfikacji, z drugiej strony takie kwiatki jak powyżej powoli odchodzą w przeszłość, a my mamy wysyp rozwiązań, w których wszystko działa dobrze „na oko”.

I stąd obecnie zawsze daje się użytkownikom rozwiązania ze znanymi błędami. Korporacyjna presja na rezultaty i sukces powoduje, że dostajemy choćby systemy operacyjne, w których po sześciu latach widać plac budowy (usunięcie starego panelu sterowania), albo przez lata dodaje się tryb czarny (Android). Z mojego podwórka mógłbym podać z marszu dwa przykłady takiej bezwładności:

  1. Firefox dla Android nadal nie wspiera strony JetStream2. Problem zgłosiłem 16 października 2019 i polega on na tym, że engine Gecko w pewnym momencie zgłasza informację o tym, że strona działa w sposób wymagający dużo zasobów (wymagane jest potwierdzenie ze strony użytkownika, że się na to zgadza). Poprawka jest na jedną linijkę (zaproponowałem ją), i do dnia dzisiejszego nie została wdrożona, a błąd przez pewien czas czas był w ogóle zamknięty (mamy tu przykład „młodego i dynamicznego zespołu” i angażowania się w kwestie polityki zamiast rozwiązywania spraw technicznych)
  2. W przeglądarce Google Chrome dla Androida w maju 2019 zaproponowałem rozwijanie / zwijanie pozycji w historii (podałem też dosłownie kilka linijek kodu, które to umożliwiały). Cała historia do dziś czeka na „decyzję” (myślę, że poszło tu o kwestie personalne i niechęć do mojej skromnej osoby albo niechęć do wzięcia odpowiedzialności za tak „ogromną” zmianę).

A gry? Cyberpunk 2077 i inne „super” produkcje? Fallout 76? GTA V Remastered Edition?

Oprócz tego wszystkie mamy tak ulubione przez wszystkich planowane postarzanie. I laptopy za duże pieniądze, w których samo otwieranie pokrywy ekranu niszczy tasiemkę. Albo laptopy, w których pisanie blokuje klawiaturę. Zgodnie ktoś, o czyichś produktach piszę? Ten ostatni przypadek wynikał z chorej pogoni za cienkimi obudowami (pisałem już o tym), i na początku oczywiście wszyscy piali z zachwytu, a skończyło się jak zawsze... I tu dochodzimy do słowa...

Optymalizacja

To jest słowo klucz tak ładnie nadużywane przez marketing - każda kolejna wersja czy iteracja po prostu musi być zoptymalizowana.

Coś nie działa? Zoptymalizujemy... Będzie pan zadowolony.

I tu przykład ze starszych czasów: Windows XP był szybki, Vista wolniejsza. Co zrobiono? Stwierdzono, że Windows 7 jest „zoptymalizowany”. Zadziałało? Ależ oczywiście. Ludzie „wyedukowani” przez problemy z Vistą w międzyczasie zmienili sprzęt na znacznie szybszy, to i odczuli różnicę. A że cyferki były gorsze? (o tym, jak dobra jest oryginalna architektura Windows NT, może świadczyć prędkość działania ReactOS).

Przykład z czasów obecnych: cały czas słyszymy, że Windows 11 jest bardziej „zoptymalizowany”... tymczasem w pewnych scenariuszach potrafi(ł) być gorszy nawet o 30%.

Microsoft ma duży problem, i niestety wieloletnią praktykę w sprzedawaniu rozwiązań bardzo problematycznych ewentualnie skierowanych na umacnianiu pozycji bardzo konkretnych firm (ciekawe, że Qualcom miał wyłączność na Windows na ARM, nieprawdaż?). I tak np. obecnie zaczyna się promowanie komputerków Surface Laptop SE z Windows 11 SE z ekranami 11 cali, procesorkami Celeron N4x20, pamięciami eMMC i 4GB RAM (w „moim” Swift 1 miałem dysk SSD i Pentium N5000, i myślę, że poniżej nie ma co jednak schodzić, a na pewno nie w sytuacji, gdy „dysk” jest lutowany).

Warto tu wspomnieć o czymś innym: mogę przyjąć, że z Windows średnio zapisywane jest co najmniej 2x czy 3x więcej danych na dysku (taki wniosek mam na podstawie używania laptopów z Ubuntu i Windows). Dzieje się tak dlatego, gdyż w Windows jest zajęte co najmniej 30 GB (w Ubuntu powiedzmy coś około 8-10 GB), i cały ten kod musi być przecież kiedyś łatany.

Takie ilości danych dosłownie zabijają słabszy sprzęt, i jeśli zastosować porównanie motoryzacyjne - Windows to samochód Warszawa, która pali dużo paliwa, do budowy wymaga masy materiałów i wielu roboczogodzin (tymczasem do większości zadań możemy mieć za darmo małe, nowoczesne autka, które może czasami wyglądają jak kit-cars do samodzielnego montażu, ale znacznie lepiej zabezpieczą nas w razie wypadku). W ten sposób dochodzimy do kwestii pod tytułem...

Bezpieczeństwo

Windows tkwi korzeniami w 1981-1985, zaś wszelkiej maści systemy uniksopodobne bodajże w 1969. Pewne elementy okienek nie były ruszane przez lata (np. ze względu na kompatybilność), tymczasem chociażby w popularnych dystrybucjach linuksowych w aplikacjach z oficjalnych repozytoriów cały czas mamy do czynienia z wymianą kodu (który jest migrowany) czy ciągłymi próbami wprowadzania nowych technik w pisaniu oprogramowania (co ciekawe, odpowiednie poprawki zgłaszają pracownicy firm, które niekoniecznie znane są z idealnego dbania o bezpieczeństwo).

Nie do końca mogę się zgodzić z wrzucaniem wszędzie Rusta (nie jest zbyt intuicyjny, i próbuje się w nim wszystko rozwiązywać za programistę, co daje oczywistą katastrofę, a przykładem może być eksperymentalna "przeglądarka" Servo Mozilli), ale fakt faktem... ilość zmian i postęp w najpopularniejszym kodzie Open Source jest imponująca (wystarczy m.in. przejrzeć phoronix.com).

Gdzie więc jest problem? Dlaczego tak wiele projektów ponosi sromotną klęskę?

Mamy przecież...

Agile

Jak ktoś bardzo słusznie zauważył pod jednym z moich postów, słowo Agile to dzisiaj wyłącznie słowo klucz, atrapa, pod którą podpina się bardzo różne rzeczy (te dobre i te złe).

W dużej części projektów komercyjnych w ogóle nie chodzi o to, żeby wytworzyć dobre oprogramowanie, i temat zamknąć. Tam się goni króliczka i robi pieniądze.

I dlatego mamy wciąż nawet produkcję oprogramowania w V-modelu (i tam testowanie, jako obecne w dużej mierze na końcu, przy opóźnieniach jest po prostu obcinane).

Tu w sumie dosyć mocno odsyłam do tekstu „Testowanie to nieco zapomniana już sztuka?”, tymczasem chciałbym przejść do tematu pod tytułem...

Przenośność

To kolejny święty Graal informatyki. Próby tworzenia oprogramowania dostępnego na różne platformy istniały od zawsze, i obecnie w dużej mierze się to powiodło (mamy cross-compilację, języki typu Java, itp.), tylko czy możemy mówić o przenośności w sytuacji, gdy sam język bywa przenośny, ale... dziesiątki bibliotek mają ileś różnych detali odmiennych dla każdej platformy? (mówię to z pozycji programisty, który przez 20 lat próbował bardzo różnych rzeczy)

Teoretycznie można powiedzieć, że np. HTML jest taki sam w różnych przeglądarkach... ale większość z nich jest oparta na jednym engine.

Skoro więc jest tak w miarę prosto, to możemy zahaczymy o modne słówko...

Automatyzacja

Automatyzacja wszystkiego to kolejny święty Graal i buzz-word dla wszelkiej maści managerów, którzy myślą, że automatyzacja (testów) rozwiąże każdy możliwy problem.

Faktem jest to, że dobrze napisane testy potrafią oszczędzić setek błędów przy testowaniu... ale do ich napisania czy uruchamiania trzeba zasobów (ludzi, od czasu do czasu licencji, środowisk, itp.).

Największym problemem jest tu chyba kwestia umiejętności (artystów w fachu widzi się coraz rzadziej - zastępują ich klepacze zatrudniani na zasadzie „lepiej mieć dziesięciu tanich, miernych, ale wiernych, niż jednego kumatego, który może się wypiąć w dowolnej chwili”) i czas, którego nie warto (powtórzę: nie warto) tracić na coś, co jest bardzo mocno rozwijane (chodzi o to, że możemy zautomatyzować jakąś ścieżkę kodu czy funkcję, która za chwilę i tak będzie zmieniona).

Czy więc nie warto w to w ogóle iść?

O nie. Dobrze wykonany automat czy dobrze wykonany test wydajnościowy (zgodnie z zasadami sztuki) potrafią wykryć setki typowych usterek i na pewno przyczynią się do tego, że (a) nie wydamy później pieniędzy i (b) nie stracimy reputacji.

Jeśli więc mamy ludzi, którzy się na tym znają, i dajemy im pewną swobodę (chodzi o to, żeby mogli się wyżyć twórczo), to możemy się mocno zdziwić, szczególnie, że tacy ludzie często gęsto lubią również testowanie eksploracyjne.

Jedna uwaga w tym wszystkim: muszą się liczyć ich kompetencje, a nie...

Certyfikacje

Powiedziałbym bowiem, że to miecz obosieczny, i obecnie można znaleźć partaczy, którzy obstawią się certyfikacjami i mają papier nawet ze szkolenia z profesjonalnego siedzenia (just joking), ale też ludzi, którzy może nie mieli okazji zaliczać kolejnych levelów (i płacić odpowiedniej kaski), za to mają to coś, co jest potrzebne.

Podsumowanie

Teoretycznie komputery powinny czynić nasze życie prostszym, w praktyce wysyp wszelkiej maści project managerów, architektów, scrum masterów, UI designerów i innych ról powoduje, że w wielu firmach nawet stworzenie czegoś prostego staje się drogą przez mękę. I proszę nie zrozumieć mnie tutaj źle - nie dyskredytuję niczyjej pracy i kolegów informatyków nie namawiam do żadnej anarchii, tylko potwierdzam, że pisanie oprogramowania czy projektowanie sprzętu to obecnie w większości religia, a nie praca inżynierska. Bo teraz najczęściej nie liczy się fajna praca czy talent, ale realizowanie targetów i deadlinów, i unikanie fakapów. Do tego dochodzi polityka, i mamy co mamy. Skutki tego widać w działaniach wielu firm, i jeśli miałbym dzisiaj scharakteryzować kilka korporacji, to (być może karykaturalne) opisy mogłyby brzmieć:

  1. firmy chińskie - próbują coraz bardziej wchodzić na rynek, ale są z niego spychane przez blokady eksportowe (Huawei, itd.). Przez wszystkie przypadki odmienia się tu niestety różne problemy związane z prywatnością (ze względów politycznych niektórzy polecają też omijać Kasperskiego)
  2. Samsung - nie zawiodłem się na jakości w obszarze komórek (przy czym raczej wybierałem te lepsze modele), z drugiej strony firma obecnie nie dba o maksymalny SAR (zwiększył się od czasów S7), a jej polityka zmuszania użytkowników do zmiany sprzętu jest jednak niedobra (sam będę miał dylemat, czy po S9 nie wybrać chociażby Sony, gdyż Samsung wciąż ma tylko dziurawe ekrany)
  3. Apple - mistrzowie designu i planowego postarzania, którzy wchodzą przebojem na rynek procesorów. W ich przypadku nie można mówić niestety o zastosowaniach mocno korporacyjnych (gdyż urządzenia generalnie wymagają połączenia z Internetem nawet przy czyszczeniu zawartości)
  4. Intel - kiedyś numer 1, który obecnie próbuje gonić rynek rozwiązań zaawansowanych. Można ich pochwalić za wspieranie Open Source, można coś zarzucić w kwestiach bezpieczeństwa (dziury i sposób ich łatania, czy Intel ME) i zużycia energii, jak również wykorzystywania pozycji monopolisty (słynne mityczne umowy pod stołem z producentami komputerów, i podobno wyższe zużycie energii, gdy wyłączymy Intel ME w 11-generacji)
  5. AMD - kiedyś mogą być opisywani jak Intel (mają PSP analogiczne do Intel ME), obecnie budują potęgę całkiem szybkimi procesorami i irytują tym, że na rynku nie ma laptopów z ich CPU (tak, wiem, że to nie wina AMD, ale... coś co najmniej tak dobrego jak L14 bym przytulił)
  6. NVidia - to się kocha, co się lubi, to się lubi…
  7. Acer - po obejrzeniu Acer Swift 1 mam mieszane uczucia. Według mnie działają niczym biegacz, który biegnie jako pierwszy w peletonie, ale staje na ostatniej prostej (i stąd chociażby tylko dwuletnie wsparcie w kwestii BIOS, czy ekrany z PWM)
  8. Clevo / polski Hyperbook - po ponad dwóch miesiącach nadal całkiem miłe zaskoczenie
  9. Dell - jeśli szukamy sprzętu do pracy profesjonalnej, to jest to dobry wybór (trzeba wybierać serie biznesowe)... musimy tylko przymknąć oko na różne korporacyjne decyzje (np. lutowanie RAM)
  10. HP - o ile drukarkami bym się nie interesował, to laptopy biznesowe nie są złe
  11. Epson - trzymałbym się z daleka od „normalnych” drukarek, rozważałbym EcoTanki.
  12. Microsoft - zasłużeni, ale... obecnie zapomniałbym o ich produktach. Przez lata forsowali różnego rodzaju zamknięte rozszerzenia „i standardy”, przez lata marnowali masę zasobów użytkowników. To naprawdę nie jest nawet śmieszne.
  13. Google - jak Microsoft (widać to chociażby po Pixelach, Androidzie czy YouTube)

Czy to oznacza, że należy zaszyć się w norze i przestać korzystać z czegokolwiek? Na pewno nie. Czy jest na to wszystko jakieś rozwiązanie? Nie ulegajmy nachalnych reklamom, kierujmy się zdrowym rozsądkiem i kalkulacją, dywersyfikujmy nasz sprzęt i oprogramowanie (polecam moją historię z happy-endem o domenie), a to ostatnie powinno być budowanie częściej w metodzie bazaru, a nie katedry (ale to już temat na oddzielną historię). I tego wszystkim życzę. Amen.